0

アルテラが Qsys (quartus 14.0) で提供するIP コア«Cyclone V Avalon-MM for PCIe»で DMA 転送を行うことは可能ですか?

アルテラは、dma 転送を行うために «Cyclone V Avalon-MM DMA for PCIe»という名前の IP コアを提供しています。ただし、この ip-core は 1x レーンの PCIe Gen1 をサポートしていません。

«Cyclone V Avalon-MM for PCIe» のデモ (ep_g1x1) デザインには、PCIe ip-core の Avalon-mm TX バスに接続された DMA ブロックが含まれています。

次に、このDMAブロックからルートコンプレックス(ホスト)にデータを書き込むことができるかどうか疑問に思っていますか? その方法が見つからないからです。

4

2 に答える 2

0

最終的に «Cyclone V Avalon-MM for PCIe» altera core-ip で DMA リクエストを行うことができました。それなら可能です。

私の Linux システムでは、Linux オペレーティング システムの i.MX6 の下に rootcomplex (RC) が含まれています。そして、ほとんどのトリックは実際には Linux 側にあります。

Linux ドライバーでは、dma_alloc_coherent()呼び出しで PAGE を要求する必要があり、このページのアドレスを ADDR_MAP_LO0 および ADDR_MAP_HI0 という名前の CRA レジスターに書き込む必要があります。

私のシステムでは、メモリ ページのサイズが 4k であるため、4k のページで PCIe ハード IP の「アドレス変換設定」を一貫性を持たせるように構成する必要がありました。

それが完了したら、Qsys が提供する DMA コントローラーを PCIe IP の TX avalon-MM スレーブ ポートに接続するだけです。このポートにデータを書き込むように DMA に指示すると、FPGA から TLP が自動的に生成され、i.MX6 RAM に書き込まれます。

于 2015-06-04T09:35:52.810 に答える