一次作者在開發圖像時候,對輸入的圖像沒有打拍,直接輸出給顯示終端,時好時壞,或者圖像顏色不正確,最終經過打拍解決了此問題。
//配置為16-Bit SDR ITU-R BT.656模式時pixel_data[23:16]為高阻。always @(posedge pixel_clk ) beginpixel_data_d1<=pixel_data[15:0];pixel_data_d2<=pixel_data_d1;
endalways @(posedge pixel_clk ) beginhs_d1<=hs;hs_d2<=hs_d1;
endalways @(posedge pixel_clk ) beginvs_d1<=vs;vs_d2<=vs_d1;
endalways @(posedge pixel_clk) beginde_i_d1<=de_i;de_i_d2<=de_i_d1;
endassign pixel_o[19:10] = {pixel_data_d2[15:8], 2'b00 } ;//LUMA
assign pixel_o[9:0] = {pixel_data_d2[7:0] , 2'b00 } ;//CHROMA
assign pixel_clk_o = pixel_clk;
未打拍顏色失真:
輸入同步后的圖片:顏色正常
不明白:一般意義上的理解是外部單bit異步輸入,需要打拍消除亞穩態。如果外部進來的隨路時鐘和數據,為什么需要使用隨路時鐘打拍隨路數據和同步信號后顯示正常?
輸入并行16bit圖像數據,剛開始,我在fpga直接assign輸出給顯示驅動芯片,顯示異常,最后使用進來的隨路時鐘把所有信號同步后輸出,顯示正常了。到現在不明白,同步打拍后,到底改變了什么?
有網友解釋:同步信號需要嚴格對齊,打拍也是瞎貓碰死耗子。因為直接通過FPGA走線pin to pin 不一樣長。需要使用set_max_delay約束。