0

私は zybo ボードで何かを構築しているので、Zynq デバイスを使用しています。

CPU からメイン メモリに書き込み、FPGA で読み込んで、CPU の結果を別のデバイスに書き込みたいと考えています。

これを行うには AXI バスを使用する必要があると確信していますが、問題に対する最善のアプローチを見つけることができません。私は:

  • 完全な AXI ペリフェラルを自分で作成しますか? おそらく、メインメモリに読み取り要求を発行し、それらを実行するマスター。AXI ペリフェラルを実際に作成する方法に関するリソースを見つけるのは非常に難しいと感じています。どこから簡単な説明を探し始めればよいでしょうか。
  • ザイリンクス IP コアの 1 つを使用して AXI バスを処理しますが、かなりの数があり、どれを使用するのが最適かわかりません。

それが何であれ、高速である必要があり、ボード上の DDR メモリから大量の読み取りを実行できる必要があります。そのメモリは、CPU からも書き込み可能である必要があります。

ありがとう!

4

3 に答える 3

3

簡単なオプションは、ブロック ダイアグラムで AXI-Stream FIFO コンポーネントを使用することです。その後、AXI-Stream スレーブをコード化してデータを受信できます。したがって、ARM は AXI を介して FIFO に書き込み、コンポーネントは FIFO からデータをストリーミングします。AXI 作業を行う必要はありません。

詳細については、Xilinx のPG080を参照してください。

于 2016-04-21T17:14:29.073 に答える
1

vivado-hls ツールにアクセスできる場合。次に、バースト方式でメイン メモリから FPGA メモリ (BRAM など) にデータを転送することが 1 つの解決策になります。コードでmemcpyを使用するだけで、合成ツールが非常に高速で信頼性の高いマスター IP を自動的に生成します。

于 2016-04-19T10:30:57.490 に答える
1

オプション 1: 独自の AXI マスターを作成します。おそらく、構成目的でも AXI スレーブを作成する必要があります。AXI の使用を開始するには、次の記事が非常に役立ちます。 完全な AXI リファレンス仕様はこちら: http://www.gstitt.ece.ufl.edu/courses/fall15/eel4720_5721/labs/refs/AXI4_specification.pdf

オプション 2: ザイリンクス AXI DMA コンポーネントを使用して、DDR メモリと AXI ストリーム間の DMA 転送をセットアップします。ロジックをザイリンクス DMA コンポーネントの「AXI ストリーム」に接続する必要があります。通常、AXI ストリームは、新しい高性能 AXI マスターを作成するよりも簡単に実装できます。このアプローチは、非常に高い帯域幅をサポートし、連続ストリームとパケット ベースの転送の両方を実行できます。また、各パケットのメタデータもサポートしています。ザイリンクスの AXI DMA コンポーネントは次の場所にあります。 http://www.xilinx.com/products/intellectual-property/axi_dma.html ザイリンクスは、このためのソフトウェア ドライバーも提供しています。

于 2016-04-22T19:29:48.760 に答える