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開源工作室