”
AXI4-Stream インターフェースの最終出力層1(C ソースコード)”の続き。
前回は、AXI4-Stream インターフェースの最終出力層のC ソースコードを貼っておいた。今回は、C シミュレーション、C コードの合成、C/RTL 協調シミュレーション、Export RTLを行う。
まずは、Vivado HLS 2017.4 の output_layer プロジェクトを作成した。

C シミュレーションを行った。結果を示す。
(2017/04/17:修正、前段のソフトウェアが間違っていたので、結果が変わってしまった)(誤)

Vivado HLS console の表示は、cerr に出力したので、赤くなってしまったと思う。ハードウェアが直進で、ソフトウェアが右旋回という結果だった。”AXI4-Stream インターフェースの全結合層2層目2(C シミュレーション、C/RTL 協調シミュレーション)”で書いたが、かなり左寄りの直進なので、右旋回と言ってもおかしくない感じなので、精度の良いソフトウェアの方がミスってしまったのかもしれない?
(正)

うまく行った。out = 1 out_soft = 1 でハードウェア、ソフトウェア共に直進を示している。正解だ。
C コードの合成を行った。結果を示す。

Estmated は 6.31 ns でタイミング制約を満足している。
Latency は 7 クロックだった。
リソース使用量は、FF が 175 個、LUT が 478 個だった。
生成された VHDL のファイルを見ると、出力ポートは、output_data_Vで定義は、std_logic_vector(2 downto 0); になっていて、左旋回、直進、右旋回のそれぞれの出力が出ていることが分かる。output_data_V_ap_vld ポートもできているのが分かる。

C/RTL 協調シミュレーションを行った。結果を示す。

37 クロックだった。C コードの合成に比べて、クロック数が多いのは、AXI4 Lite でのレジスタの設定に時間がかかっているのと、最初にダミーのデータをRead しているからだ。
C/RTL 協調シミュレーションの波形を示す。

点線のカーソルのところで、最初のAXI4-Stream データが入力されて、実線のカーソルのところで、結果が出ている。ちょうど 7 クロックかかっている。
Export RTL を行った。結果を示す。
なお、Vivado synthesis, place and route にチェックを入れてある。
- 2018年03月13日 04:12 |
- DNN
-
| トラックバック:0
-
| コメント:0