LoginSignup
3
3

More than 5 years have passed since last update.

フィボナッチを求める回路をVHDLとMessagePack-RPCでFPGAに実装してみた(シミュレーション編)

Posted at

はじめに

フィボナッチを求める回路をVHDLとMessagePack-RPCでFPGAに実装してみた(ZYNQ編)で作ったFibnacci_Server をVivadoを使って単体でシミュレーションする方法について示します。

用意するもの

Dummy_Plug は AXI4/AXI4-Stream のBFM(バスファンクションモデル)ライブラリです。

ブロック図

akgeo2.jpg

AXI4_Stream_Master_Player、AXI4_Stream_Slave_PlayerはYAML形式のシナリオファイルを読み込んでAXI4-Stream I/F信号の入出力を行うためのDummy_Plugライブラリのコンポーネントです。

手順

リポジトリと各submodule をダウンロード

shell% git clone git://github.com/ikwzm/msgpack-vhdl-examples.git
shell% cd msgpack-vhdl-examples
shell% git submodule init
shell% git submodule update

テストシナリオの作成

AXI4_Stream_Master_PlayerおよびAXI4_Stream_Slave_Player用のテストシナリオを作ります。

shell% cd examples/fibonacci/src/test/scenarios
shell% ruby test_1.rb

test_1.rb はテストシナリオ(YAML形式)を生成するためのrubyスクリプトです。

Vivado プロジェクトの作成

Vivado プロジェクトを作成するためのTclファイル(create_project.tcl)を用意しています。
Vivadoを起動して次のメニューからTclファイルを実行してください。

Vivado > Tools > Run Tcl Script... > examples/fibonacci/sim/vivado/vhdl/create_project.tcl

シミュレーションを実行

Vivado プロジェクトを開き、次のようにシミュレーションを実行してください。

Vivado > Flow > Run Simulation > Run Behavioral Simulation

参考までに、実行したときに波形の一部を以下に示します。

fibonacci_vhdl.jpg

クロックの周波数は100MHzです。
fib(42)を実行するのに、MessagePack-RPCのシリアライズとデシリアライズを含めないFIB単体では430nsec((42+1)×10nsec)、MessagePack-RPCのシリアライズとデシリアライズを含めて650nsec(420nsec+13×10nsec)、かかっていることがわかります。

参照

MessagePack for VHDL (https://github.com/ikwzm/msgpack-vhdl)
MessagePack for VHDL Examples (https://github.com/ikwzm/msgpack-vhdl-examples)
MessagePack-RPCを使ってFPGAを制御
フィボナッチを求める回路をVHDLとMessagePack-RPCでFPGAに実装してみた(ZYNQ編)

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3