FC2カウンター FPGAの部屋 調歩同期式シリアル通信の送信 IP (uart_tx)を Vitis HLS で作成する2
fc2ブログ

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

FPGAの部屋

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

調歩同期式シリアル通信の送信 IP (uart_tx)を Vitis HLS で作成する2

調歩同期式シリアル通信の送信 IP (uart_tx)を Vitis HLS で作成する1”の続き。

調歩同期式シリアル通信の受信 IP とその後の 3 軸加速度センサー・データの処理 IP を作成した。今回は、調歩同期式シリアル通信の送信 IP (uart_tx)を Vitis HLS で作成しようとうことで、前回は、uart_tx のソースコードとテストベンチ・コードを貼って、Vitis HLS 2020.2 の uart_tx プロジェクトを作成した。今回は、C シミュレーション、C コードの合成、C/RTL 協調シミュレーション、Export RTL を行っていこう。

まずは、C シミュレーションからやってみるが、txst にシリアルデータを出力するだけなので、このテストベンチでは、芸がない。。。
uart_tx_2_210227.png

C コードの合成をやってみた。結果を示す。
uart_tx_3_210227.png
uart_tx_4_210227.png

Latency は 1923 クロックだった。
12 分周 x 16 サンプル x ( 1 スタートビット + 8 キャラクタ + 1 ストップビット) = 1920 クロック
良いところだと思う。

C/RTL 協調シミュレーションを行った。
uart_tx_5_210227.png

C/RTL 協調シミュレーションの全体波形を示す。
uart_tx_6_210227.png

ピンクの楕円の部分を拡大した。
uart_tx_7_210227.png

txst_V_din が X の部分があるので、これは良くない。。。

txst_V_din を出力する uart_tx.v のコードを見てみると、 else の場合が X に指定されていた。
uart_tx_8_210227.png

C 言語ベースで修正できないようなので、Verilog HDL コードを書き換えてしまった。(禁断の術だ。。。)
uart_tx_9_210227.png

これで、C/RTL 協調シミュレーションをして、波形を表示した。
uart_tx_10_210227.png

先ほどと同じ部分を拡大すると、txst_V_din は 1 のままなので、これで OK だ。
uart_tx_11_210227.png

しかし、txst_V_din が組み合わせ回路出力なのはいただけないので、もう一度、 FF 出力に変更した。
uart_tx_12_210227.png

always @ (posedge ap_clk) begin
    if (ap_rst_n_inv == 1'b1) begin
        txst_V_din = 1'd1;
    end else if ((txst_V_full_n == 1'b1)) begin
        if ((1'b1 == ap_CS_fsm_state6)) begin
            txst_V_din = 1'd1;
        end else if ((1'b1 == ap_CS_fsm_state4)) begin
            txst_V_din = trunc_ln213_fu_307_p1;
        end else if ((1'b1 == ap_CS_fsm_state2)) begin
            txst_V_din = 1'd0;
        end else begin
            txst_V_din = 1'd1;
        end
    end else begin
        txst_V_din = 1'd1;
    end
end


これで、C/RTL 協調シミュレーションを行った。
uart_tx_13_210227.png

C/RTL 協調シミュレーションの波形を表示した。
uart_tx_14_210227.png

2 クロック分ロスしているだけのようだ。問題無さそう。

uart_tx.v は修正したファイルになっている。
uart_tx_15_210227.png

Export RTL を行った。結果を示す。
uart_tx_16_210227.png

uart_tx IP も確認したが、修正済みの Verilog HDL ファイルになっている。

内部で使用されていない出力ポートのレベルを変更することや、レジスタ化はやっても良いと思っている。ただ、ソースコードを修正した時は、Verilog HDL の再修正を忘れないようにする必要がある。
  1. 2021年02月28日 04:53 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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