« Vivadoのプロジェクトをテキストベースで生成する方法 | トップページ | Kintex-7のPCIe DMAとDDR3の安定動作 »

2017.09.22

Kintex-7でDDR3メモリにPCIe DMAが成功

特電のKintex-7ボード「Cosmo-K」の上のDDR3メモリに、PCI ExpressからDMAで転送することに成功しました。

下の写真のようにパソコンのPCI Expressスロットにさして、PCIe経由でボード上のメモリに乱数を読んだり書いたりしています。

Cosmokdma

Vivadoのブロックデザインはこんな感じです。

Cosmokdmapcieddr3

DDR3のアクセスはMIGを使っています。

ボード上には1Gバイトのメモリが乗っているので、最大、1GBまでDMA転送できるのですが、10M~100Mバイト程度の転送のときが一番速いようでした。

パソコンのキャッシュの問題なのか、OSのメモリ管理の問題なのかはわかりません。

Throughput

Block RAMに転送するときも、DDR3 DRAMに転送するときも、スループットに差はありませんでした。つまり、DRAMの読み書きのオーバーヘッドは無視できるようです。

DMA write2、DMA read2というのは私が作ったデザインで、DMA write、DMA readというのはインターンの学生さんが作ったデザインです。なぜ差が生じるかはわかっていません。

現在、100Gバイト程度転送していますが、特にエラーは起きていません。

どうでもいいことですが、バッチファイルのIF文の使い方の備忘録として、バッチファイルを書いておきます。

SET LOOPCOUNT=0
SET DATASIZE=1073741824
@:loop
tkpe2test c %DATASIZE%
@if errorlevel 1 goto exit
@SET /A LOOPCOUNT=LOOPCOUNT+1
@SET /A TOTAL=(%DATASIZE%/1000000)*%LOOPCOUNT%
@echo %LOOPCOUNT% 回 %TOTAL% MBytes
@goto loop

:exit
PAUSE -1

Dma100g

ボードが非常に熱くなるので、扇風機が必須です。

扇風機を止めるとチップ温度が80℃以上になって、エラーが出ることがあるようです。ただ、そのエラーがPCIのものなのかDDR3のものなのかはわかっていません。

これで、大容量メモリを活かした高速データ取り込みシステムが作れそうですね。

いろいろとわからないことはありますが、Cosmo-Kで、PCI ExpressとDDR3メモリがつながりました。もう少し安定して動作するようになってきたらソースを公開します。

Kintex-7の汎用PCI Express評価ボード「Cosmo-K」のページはこちらです。

http://www.tokudenkairo.co.jp/cosmok/

どうぞよろしくお願いします。

|

« Vivadoのプロジェクトをテキストベースで生成する方法 | トップページ | Kintex-7のPCIe DMAとDDR3の安定動作 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« Vivadoのプロジェクトをテキストベースで生成する方法 | トップページ | Kintex-7のPCIe DMAとDDR3の安定動作 »