FC2カウンター FPGAの部屋 Vivado 2013.4でAXI VDMAを使ったカメラ表示回路の作製7(インプリメント)
FC2ブログ

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

FPGAの部屋

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

Vivado 2013.4でAXI VDMAを使ったカメラ表示回路の作製7(インプリメント)

Vivado 2013.4でAXI VDMAを使ったカメラ表示回路の作製6(配置制約)”の続き。

今回は、論理合成、インプリメント、ビットストリームの生成を行った。

・Flow Navigator のProgram and Debug -> Generate Bitstream をクリックして、論理合成、インプリメント、ビットストリームの生成を行った。

・論理合成、インプリメント、ビットストリームの生成が終了した。
Cam_VDMA_101_140120.png

・critical warning が1つあるので、見てみると

[Route 35-39] The design did not meet timing requirements. Please run report_timing_summary for detailed reports.

でタイミングが制約と合っていないようだ。

・Flow Navigator のImplementation から Report Timing Summary をクリックしてタイミングを見てみよう。
Cam_VDMA_102_140120.png

・Report Timing Summary ダイアログが表示された。デフォルト値のまま、OKボタンをクリックする。
Cam_VDMA_103_140120.png

・下に Timing ウインドウが表示された。
Cam_VDMA_104_140120.png

・Inter-Clock Paths の clk_fpga_0 to clk_fpga_2 と clk_fpga_0 to pclk が赤い。更に、Other Path Groups -> **asyc_default** -> clk_fpga_0 to clk_fpga_2 が赤くなっている。
Cam_VDMA_105_140120.png

・Inter-Clock Paths の clk_fpga_0 to clk_fpga_2 は、出力用ピクセルクロックで動作する video_out_zed_0 モジュールに、AXIバスのリセットを入れたのが問題のようだ。
Cam_VDMA_106_140120.png

・下のように、aresetn は同期化処理をしてある。以前修正したのだが、修正がされていないのかな?

	// synchronization of reset_1b
always @(posedge pixclk) begin
reset_1b <= ~aresetn;
reset <= reset_1b;
end


・Inter-Clock Paths の clk_fpga_0 to pclk は、init_done に関連するものだった。
Cam_VDMA_107_140120.png

・init_done も同様に、同期化処理をしてある。

    -- ARESETN をACLK で同期化
process (ACLK) begin
if ACLK'event and ACLK='1' then
reset_1d <= not ARESETN or not init_done;
reset_2d <= reset_1d;
end if;
end process;
reset <= reset_2d;

-- ARESETN をpclk で同期化
process(pclk) begin
if pclk'event and pclk='1' then
preset_1d <= not ARESETN or not init_done;
preset_2d <= preset_1d;
end if;
end process;
preset <= preset_2d;


・Other Path Groups -> **asyc_default** -> clk_fpga_0 to clk_fpga_2 は、custom_axi4s_video_0 の aresetn がまずいようだ。
Cam_VDMA_108_140120.png

・これも、非同期FIFOでリセットの同期化処理をONにしているので、大丈夫なはずなんだけど。。。

	// video_fifo のインプリメント
video_fifo video_fifo_i (
.rst(~aresetn), // input rst
.wr_clk(aclk), // input wr_clk
.rd_clk(video_clk), // input rd_clk
.din(s_axis_video_tdata), // input [31 : 0] din
.wr_en(s_axis_video_tvalid & s_axis_video_tready), // input wr_en
.rd_en(vtg_act_vid), // input rd_en
.dout(video_data), // output [31 : 0] dout
.full(vfifo_full), // output full
.almost_full(vfifo_almost_full), // output almost_full
.overflow(vfifo_overflow), // output overflow
.empty(vfifo_empty), // output empty
.almost_empty(vfifo_almost_empty), // output almost_empty
.underflow(vfifo_underflow) // output underflow
);


次回は、これらにTIG制約を掛けてみよう。video_out_zed_0 IP は再生成してみる。

Vivado 2013.4でAXI VDMAを使ったカメラ表示回路の作製8(Propertiesの検証)”に続く。
  1. 2014年01月20日 04:42 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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