port)の機能を使うことで、CPUとFPGA内のAXIマスタでメイン・メモリの内容を共有できます。通常、このようなメモリの共有にはキャッシュ・フラッシュが必要になりますが、ACPを利用するとキャッシュ・フラッシュが不要になります。VのマニュアルにはACPを有効にするための条件が色々と記載されていますが、実際にはどのようにすればACPが有効になるのかを実機で確認してみました。(gnuコンパイラを使用)ベアメタルアプリの作成方法はこちらです。VのFPGA内にAXIのDMACを実装し、設定したメモリ・アドレスからデータをリードします。Bridgeに接続しています。MMUとデータ・キャッシュOFFで動作を確認MMUとデータ・キャッシュがOFFの状態で動作を確認してみます。動作確認用のプログラムは次の通りです。error\n");}}このプログラムは、CPUからメイン・メモリの0x20000000番地に32ビットのデータをライトし、それをFPGAのDMACを使ってリードしています。FPGAからのメイン・メモリのリードは、0x20000000と0xA0000000の2か所で行っています。0x20000000はCPUがライトした同じアクセス、そのアドレスを0x80000000オフセットさせた0xA0000000がACPに割り当てられたアドレスです。pplib/pl_address_table.hはFPGA内DMACのレジスタ設定アドレスを定義しているファイルです。ACPには直接関係しません。実行結果0x20000000からの通常リード、0xA0000000からのACPリードの両方でCPUがライトしてデータを確認できました。キャッシュとMMUがOFFの場合にはCPUのライトが直ちにDDRに書き込まれるので、キャッシュ・フラッシュは不要ということなのでしょう。ACPウィンドウからも期待通りのデータがリードできるところが興味深いです。MMUとデータ・キャッシュONで動作を確認MMUとデータ・キャッシュを有効にして動作を確認してみます。動作確認用のプログラムは次の通りです。SPIサンプルを参考にしています。予想通り、データの不一致が起こりました。0x20000000からの通常リード、0xA0000000からのACPリードの両方がCPUのライト・データと一致しませんでした。CPUがライトしたデータはキャッシュに留まっているため、DDRの内容は更新されないということなのでしょう。このテスト環境があれば、どのような設定を行えばACPが有効になるのか確認できます。ACPが有効になれば、0xA0000000のACPウィンドウからのリードは、CPUがライトしたデータと一致するはずです。Primeと呼ばれているようです。IPコア(wf3d)には、ZedBoard用のVivado実行サンプル環境が含まれています。KitをUSBシリアル・アダプタとして使うずいぶん前に、iCEstickという評価キットを入手しました。Lattice社製のiCE40というFPGAが搭載されている、USBポート直結で使える小型のFPGA評価キットです。LTS(64bit)にインストールした時のメモです。通常の...FPGAOSとVivadoの実行時間あるデザインのVivadoの実行時間を、オペレーティング・システムのみを変えて比較しました。Bitstreamをコマンドラインから実行する場合の手順です。ディジタル技術資料タイトルとURLをコピーしました。