基于FPGA視頻圖像的Canny算法加速器的設(shè)計(jì)
2.1 加速器設(shè)計(jì)實(shí)現(xiàn)
本文使用了一種能運(yùn)用于高斯平滑濾波和梯度計(jì)算的加速器的數(shù)據(jù)路徑結(jié)構(gòu)。由于這兩種計(jì)算過程均采用相同大小的方形移動窗口,故其加速設(shè)計(jì)具有極大的相似性。對此,這里選取3×3的Sobel模塊來解釋說明。本文引用地址:http://butianyuan.cn/article/190119.htm
Sobel的加速數(shù)據(jù)結(jié)構(gòu)如圖1所示。它是一個具有以下功能的流水線:先從原始的圖像中讀取像素值存入圖中右方的3組12寄存器中,數(shù)據(jù)流過中間的3×3的乘法器陣列,即像素值與模板值做乘法運(yùn)算;然后向下流過加法器,在加法器中完成和運(yùn)算,至此實(shí)現(xiàn)了像素值與模板的卷積運(yùn)算,之后到達(dá)Ex和Ey寄存器,通過絕對值電路和加法器(實(shí)現(xiàn)式(4))到達(dá)寄存器,最終流入最下面的寄存器。圖中負(fù)號表示取反,數(shù)值1和2表示右移的位數(shù)。
為使得加速器能夠有序地按照確定的步驟進(jìn)行,本文使用了有限狀態(tài)機(jī)。如圖2所示為加速器的簡單狀態(tài)轉(zhuǎn)換圖。在加速器的執(zhí)行過程中,當(dāng)檢測到3組寄存器中的數(shù)據(jù)為空時,讀信號使能re_en置1,自動讀入新的3組數(shù)據(jù);且在下方寄存器存儲滿時,寫信號使能wr_en置1,數(shù)據(jù)被提取進(jìn)行寫操作。
在加速器的執(zhí)行過程中,像素每4個為一組進(jìn)行讀寫,這樣在高速處理過程中大大縮減了對相同像素點(diǎn)的多次重復(fù)讀取而浪費(fèi)的時間;同時,在處理過程中不需要在處理每個像素點(diǎn)時都對其鄰域的8個像素點(diǎn)更新,這樣節(jié)省了大量的讀取時間;并且由于FPGA的并行特性,像素的讀、移位及寫操作和乘法器的運(yùn)算是同時進(jìn)行的,使得處理速度有一定的提升。
fpga相關(guān)文章:fpga是什么
評論