FPGA圖像處理之行緩存(linebuffer)的設計一
作者:OpenS_Lee
1 背景知識
在FPGA數字圖像處理中,行緩存的使用非常頻繁,例如我們需要圖像矩陣操作的時候就需要進行緩存,例如圖像的均值濾波,中值濾波,高斯濾波以及sobel邊緣查找等都需要行緩存設計。這里的重要性就不在贅述。
2 FPGA實現

圖1 行緩存菊花鏈結構
如圖1所示,我們要設計n行同時輸出,就串聯n行。Line_buffer的大小設置由圖像顯示行的大小(圖像寬度)決定。例如480*272 (480)。
2.1 設計一Intel shift register
設計源碼:

Line3 IP設置:

圖2 shift register IP

圖3 參數設置
如圖2,3所示,我們需要設計3x3的矩陣數據,就要同時流出三行的數據參數如圖3所示設置。
仿真頂層:


仿真結果:

圖4 整體效果

圖5 一行數據

圖6 兩行數據

圖7 三行數據
如圖7所示,當三行數據全出來時,我們數據全部對齊,說明設計正確。
2.2 設計二xilinx shift register
源碼:

IP設置:

圖8 IP設置參數

圖9 Hierarchy
仿真頂層:


仿真結果:

圖10 仿真整體效果

圖11 三行數據同時對齊輸出
至此我們完成了xilinx 和altera 的IP設計行緩存,但是此方法在某種情況下不夠靈活,所以下節我們將推出fifo設計行緩存。
歡迎關注微信公眾號:FPGA開源工作室

