基于NiosII的二維條碼識(shí)別系統(tǒng)設(shè)計(jì)
1.1 系統(tǒng)硬件結(jié)構(gòu)
系統(tǒng)通過(guò)配置視頻采集芯片ADV7181B,通過(guò)圖像采集子系統(tǒng)將CCD采集到的條碼數(shù)據(jù)存儲(chǔ)在SRAM中后,產(chǎn)生硬件中斷,處理器響應(yīng)中斷,Nios對(duì)SRAM中的數(shù)據(jù)進(jìn)行圖像預(yù)處理、譯碼及糾錯(cuò),通過(guò)譯碼算法硬件加速模塊對(duì)耗時(shí)較多部分算法進(jìn)行優(yōu)化,在實(shí)現(xiàn)條碼數(shù)據(jù)譯碼及糾錯(cuò)后,產(chǎn)生射頻傳送和LCM顯示中斷,進(jìn)入中斷程序?qū)⒆g碼數(shù)據(jù)通過(guò)射頻傳輸模塊發(fā)送到上位機(jī),并且在LCM實(shí)時(shí)顯示。其硬件平臺(tái)結(jié)構(gòu)原理如圖3所示。本文引用地址:http://www.ex-cimer.com/article/192009.htm
1.2 圖像采集子系統(tǒng)
由于本設(shè)計(jì)采用的是灰度圖,因此圖像采集子系統(tǒng)的主要功能是:配置采集芯片,從解碼芯片讀出數(shù)據(jù)流,根據(jù)行場(chǎng)同步信號(hào)對(duì)數(shù)據(jù)流進(jìn)行分離,提取出亮度信號(hào),并將采集到的亮度信號(hào)通過(guò)乒乓緩存存入SRAM中。
在設(shè)計(jì)中,采用ADI的解碼芯片ADV7181B進(jìn)行圖像信號(hào)的數(shù)模轉(zhuǎn)換,F(xiàn)PGA中的I2C模塊是作為主設(shè)備來(lái)對(duì)ADV7181B進(jìn)行配置的,而ADV7181B作為從設(shè)備來(lái)接受I2C總線傳來(lái)的數(shù)據(jù),實(shí)現(xiàn)芯片的初始化、寄存器的配置等。圖4中T_DA為數(shù)據(jù)信號(hào),TD_VS為場(chǎng)同步信號(hào),TD_HS為行同步信號(hào)。
系統(tǒng)上電時(shí),I2C配置模塊將對(duì)ADV7181B的內(nèi)部寄存器進(jìn)行配置,ADV7181B將模擬信號(hào)轉(zhuǎn)換為Y:U:V為42:2:2的8位CCIR656數(shù)字信號(hào),其中輸出的時(shí)序包括行場(chǎng)同步、行場(chǎng)消隱、行頻場(chǎng)頻及場(chǎng)識(shí)別等信號(hào)。
CCD攝像頭采集的圖像實(shí)際尺寸為768×576像素,每幀圖像由奇場(chǎng)數(shù)據(jù)和偶場(chǎng)數(shù)據(jù)交錯(cuò)組合而成,奇場(chǎng)數(shù)據(jù)與偶場(chǎng)數(shù)據(jù)在時(shí)間上是先后輸入的。本設(shè)計(jì)使用的是320×240的液晶顯示屏,在處理過(guò)程中也采用的是320×240的圖片格式,所以要對(duì)攝像頭采集的圖片進(jìn)行提取。在設(shè)計(jì)中僅采奇場(chǎng)數(shù)據(jù)的中間240行,并對(duì)每行中間的640個(gè)數(shù)據(jù)每?jī)蓚€(gè)像素抽取一個(gè)像素,從而得到符合系統(tǒng)要求的圖像大小。由于一幀圖像的奇場(chǎng)數(shù)據(jù)與偶場(chǎng)數(shù)據(jù)實(shí)際上非常接近,而每行的相鄰兩個(gè)像素值也幾乎沒有差異,因此可以得到原輸入圖的縮小圖像而不會(huì)有失真。
圖像存入SRAM采用了乒乓緩存,如圖5所示,是為了防止寫出速度快于寫入速度而導(dǎo)致出現(xiàn)錯(cuò)誤數(shù)據(jù)。采用兩個(gè)行緩存進(jìn)行乒乓切換,在數(shù)據(jù)提取子模塊向行A寫入數(shù)據(jù)時(shí),數(shù)據(jù)寫出子模塊讀取行緩存B中的數(shù)據(jù)輸出到總線;在對(duì)下一行進(jìn)行采集時(shí),對(duì)行緩存A讀數(shù)據(jù),對(duì)行緩存B寫數(shù)據(jù)。因此行緩存寫路選器與行緩存讀路選器在同一時(shí)刻選通的一定是不同的行緩存。
評(píng)論