基于DSP和FPGA的機器視覺系統(tǒng)設(shè)計與實現(xiàn)
網(wǎng)絡(luò)圖像及控制信息的傳輸采用非面向連接的UDP協(xié)議,對于480*480大小的8位灰度的圖像,每秒可傳送20幅。
2.5 IO模塊與串行接口模塊
IO接口由FPGA控制,用于向機械部分、自動控制部分發(fā)送控制信號,并行IO接口有兩路,一路經(jīng)LV162245驅(qū)動輸出,一路經(jīng)光耦進行隔離輸出。
串行接口使用TI公司的TL16C752B UART,他與ST16C550 UART引腳兼容,并具有更大的發(fā)送、接收FIFO緩存(發(fā)送、接收各64Byte ),支持硬件、軟件流量控制。電平轉(zhuǎn)換采用MAXIM公司的MAX3160,RS-232、RS-485、RS-422等多種傳輸協(xié)議。
3、FPGA實現(xiàn)圖像預(yù)處理算法
以FPGA實現(xiàn)3*3 Sobel邊緣檢測為例,介紹FPGA實現(xiàn)圖像預(yù)處理的方法。
首先,應(yīng)從視頻信號中提取出3*3 大小的圖像框。須使用三個FIFO,其大小與一行像素大小相同,將三個FIFO串行連接在一起。用視頻信號的前三行充滿三個FIFO,之后每來一個像素在寫入FIFO的同時,從每個FIFO中讀出一個像素的亮度值,分別放入三個移位寄存器。如此,在三個像素點之后就得到一個3*3的矩形框。隨著視頻信號的不斷流入,矩形框?qū)⒈闅v整個圖像區(qū)域。
之后,就可以對提取出來的像素點,進行各種算法的處理。
以下是用Verilog語言描述的3*3 Sobel算子:
wire[10:0] temp1,temp2,temp3,temp4;
wire[7:0] sobel1,sobel2,sobel3,sobel4;
wire[7:0] dataout;
assign temp1 = temp[1] + temp[2] + temp[3];
assign temp2 = temp[7] + temp[8] + temp[9];
assign temp3 = temp[1] + temp[4] + temp[7];
assign temp4 = temp[3] + temp[6] + temp[9];
assign sobel1 = (temp1>temp2)?(temp1-temp2):0 ;
assign sobel2 = (temp3>temp4)?(temp3-temp4):0 ;
assign sobel3 = (sobel1>8’d 255) ? 8’d255 : sobel1;
assign sobel4 = (sobel2>8’d 255) ? 8’d255 : sobel2;
assign dataout[7:0] = ((sobel3 > sobel4)?sobel3[7:0]:sobel4[7:0]);
fpga相關(guān)文章:fpga是什么
評論