FC2カウンター FPGAの部屋 高位合成言語+ツールのKaruta を使ってみる4(AXIインターフェースのサンプル1)
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

高位合成言語+ツールのKaruta を使ってみる4(AXIインターフェースのサンプル1)

高位合成言語+ツールのKaruta を使ってみる3(生成されたVerilog ファイルをシミュレーション)”の続き。

前回は、Karuta で生成したVerilog ファイルをシミュレーションして、動作するのに 20 クロックかかるのが分かった。今回は、AXIインターフェースのサンプルをやってみよう。

FPGA向け論理回路設計のためのプログラミング言語処理系 Karuta の紹介”の”アクセラレータを作れるか?”から AXI インターフェースのサンプルをやってみる。

FPGA向け論理回路設計のためのプログラミング言語処理系 Karuta の紹介”の”アクセラレータを作れるか?”からソースコードを引用する。ファイル名は AXI_example.karuta とした。

@AxiSlave()
shared regs int[4]

@AxiMaster()
shared buf int[4]

func main() {
  // slave側へのアクセスを待つ
  regs.waitAccess()
  // slaveの0ワード目の値をアドレスとして使う
  var addr int = regs[0]
  // メモリ上のaddrから2ワードをbuf[0]以降に読み込む
  buf.load(addr, 2, 0)
  buf[2] = buf[0] * buf[0] + buf[1] * buf[1]
  // メモリ上のaddr + 8に1ワード分buf[2]以降から書き込む
  buf.store(addr + 8, 1, 2)
}


karuta AXI_example.karuta --compile
コマンドで、Verilog ファイルを生成した。
karuta_16_191023.png

AXI_example.v が生成された。AXI Slave とAXI Master のポートが確認できる。
karuta_17_191023.png

RTL シミュレーションしてみたいが、Verilog ファイルベースで接続を書くのがとっても面倒だ。
なんとかして、ソースコードレベルでAXIインターフェースの接続を書きたい。
配列のアドレスを取得できれば、そのアドレスをAXI Slave でセットしてDMA できるのだが、独自言語なので、アドレスの取得の仕方が分からない?そもそも配列のアドレスが取得できるのだろうか?

@neonlightdev さんから、”--compile --with_shell --vcd”オプションを教えてもらったので、やってみた。
karuta AXI_example.karuta --compile --with_shell --vcd
karuta_18_191023.png

生成された AXI_example.v はシミュレーション用のテストベンチが付いていたが、やはり、トランザクションは自分で書く必要があるかも知れない?
karuta_19_191023.png

一応、Vivado 2019.1 で AXI_example プロジェクトを作成して、AXI_example.v を入れた。
karuta_20_191023.png

PROJECT MANAGER から SIMULATION -> Run Simulation -> Run Behavioral Simulation を選択した。
更に、Run All (F3) ボタンをクリックして、$finish まで実行した。
karuta_21_191023.png

AXI のトランザクションは無かった。
karuta_22_191023.png

配列のアドレスの書き方覚えて、ソースコード上でスティミュラスを書きたい。。。
  1. 2019年10月23日 04:56 |
  2. Karuta
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/4682-506f1c8e
この記事にトラックバックする(FC2ブログユーザー)