?(本系列只需要modelsim即可完成數字圖像的處理,每個工程都搭建了全自動化的仿真環境,只需要雙擊top_tb.bat文件就可以完成整個的仿真,大大降低了初學者的門檻!!!!如需要該系列的工程文件請關注知識星球:成工fpga,https://t.zsxq.com/DMeqH,關注即送200GB學習資料,鏈接已置頂!)
如果我們有攝像頭,那就可以通過配置攝像頭相關的寄存器來直接獲取RAW視頻數據,但是我們現在是FPGA的功能仿真,我們可以根據測試的圖片來提取出RAW圖片。
前面的學習可以知道,RAW圖像有RGGB,GRBG,GBRG,BGGR等四種格式,不管那種格式,在一幅RAW圖像中,格式都是按照2x2的因子反復出現的,如下所示。
我們要從RGB三個通道中取數生成一幅RAW圖像,因為是2x2的因子,也就是說第0,1行,第0,1列;第0,1行,第2,3列;第0,1行第4,5列格式都是一樣的,這樣我們只要能夠區分出來每行的奇偶位置和沒列的奇偶位置,就能夠正確的對RGB通道分別進行取數。
在obtain_raw.sv文件中,使用vsync_flag和hsync_flag來 表示行列的奇偶位置。
有了奇偶位置的標示,根據pattern_sel信號來選擇每個位置的像素點數據。
由于取數據采用時序邏輯需要一個時鐘周期,所以場同步,行同步和數據有效指示信號延時一個時鐘周期即可。
在頂層top文件中例化obtain_raw模塊。
在tb_image_sim文件中的第二個initial塊中,將圖像測試平臺和FPGA硬件仿真的結果保存并比對。
我們雙擊sim文件夾下的top_tb.bat文件,完成系統的自動化仿真。
可以看到在modelsim的Transcript有如下的打印信息,圖像測試平臺和FPGA硬件仿真的結果一致。
打開img文件夾,也可以看到圖像測試平臺和FPGA硬件仿真的結果是一致的(no_seq*是圖像測試平臺處理后的圖片,seq*是FPGA硬件仿真處理后的結果)。