基于DSP的紙幣號(hào)碼識(shí)別系統(tǒng)
關(guān)鍵詞:視頻解碼;DSP;CPLD;異步串口
近年來(lái),錢(qián)幣、特別是紙幣被搶劫事件不斷發(fā)生,嚴(yán)重影響了社會(huì)治安,也使銀行在經(jīng)濟(jì)上受到嚴(yán)重?fù)p失。如果被搶劫的錢(qián)幣不能在市場(chǎng)上流通,將從一個(gè)方面抑制銀行搶劫事件的發(fā)生。其中一種解決方案就是記錄每一捆紙幣的號(hào)碼,并用被搶劫的紙幣號(hào)碼建立一個(gè)數(shù)據(jù)庫(kù)。與此同時(shí),在貨幣流通市場(chǎng)提供一種紙幣號(hào)碼自動(dòng)識(shí)別裝置,比如說(shuō)與點(diǎn)鈔機(jī)結(jié)合,將貨幣號(hào)碼識(shí)別數(shù)據(jù)與被搶劫號(hào)碼數(shù)據(jù)庫(kù)進(jìn)行比較,一旦有相同號(hào)碼出現(xiàn),便可確認(rèn)目前流通的錢(qián)幣為被搶劫的錢(qián)幣,從而限制其流通,同時(shí)也有利于搶劫案件的偵破。另外,由于紙幣號(hào)碼的唯一性,通過(guò)識(shí)別紙幣上的號(hào)碼,可以幫助識(shí)別假幣。
目前,國(guó)外已有一種驗(yàn)鈔打號(hào)機(jī),可以對(duì)典型的紙幣(比如美元、英鎊等)進(jìn)行自動(dòng)識(shí)別和號(hào)碼打印?這種裝置的典型識(shí)別速度為1張/秒。不過(guò)截止目前還沒(méi)有點(diǎn)鈔機(jī)附帶號(hào)碼自動(dòng)識(shí)別裝置的文獻(xiàn)報(bào)道。近些年,國(guó)內(nèi)也有一些單位研制開(kāi)發(fā)紙幣號(hào)碼自動(dòng)識(shí)別裝置,其中南京航空航天大學(xué)開(kāi)發(fā)了一種基于單片機(jī)的紙幣號(hào)碼識(shí)別系統(tǒng),利用線陣CCD攝像機(jī)實(shí)現(xiàn)紙幣圖像的采集,再利用單片機(jī)實(shí)現(xiàn)號(hào)碼的定位與識(shí)別。該方法的主要問(wèn)題是難以提高號(hào)碼的識(shí)別速度。此外,哈爾濱工業(yè)大學(xué)也開(kāi)發(fā)了一種基于DSP的紙幣號(hào)碼識(shí)別系統(tǒng),其識(shí)別速度為8張/秒,但該速度為在PC機(jī)上的仿真結(jié)果,實(shí)際樣機(jī)還沒(méi)有實(shí)現(xiàn)。此外,該系統(tǒng)采用CIS(即接觸式線型圖象傳感器)來(lái)獲得紙幣圖像信號(hào),因而還存在傳感器磨損問(wèn)題。
針對(duì)以上情況,本文給出一種基于DSP的新型紙幣號(hào)碼識(shí)別系統(tǒng),該系統(tǒng)利用面陣CCD攝像機(jī)采集紙幣號(hào)碼圖像,每秒可采集25幅圖像,而目前點(diǎn)鈔機(jī)的點(diǎn)鈔速度為每秒十幾張左右,從而可以實(shí)現(xiàn)與點(diǎn)鈔機(jī)的配合使用。該系統(tǒng)首先利用Philips公司的專業(yè)視頻解碼器SAA7113實(shí)現(xiàn)紙幣號(hào)碼圖像的數(shù)字化,然后利用TI公司的數(shù)字信號(hào)處理器TMS320VC5410實(shí)現(xiàn)數(shù)字紙幣號(hào)碼圖像的采集和處理,最后利用TI公司的異步串行接口芯片TL16C550完成整個(gè)系統(tǒng)與PC機(jī)之間的通信。
1 硬件設(shè)計(jì)原理
這種基于DSP的紙幣號(hào)碼識(shí)別系統(tǒng)首先將從面陣CCD攝像頭攝取的紙幣模擬視頻圖像經(jīng)專業(yè)視頻解碼芯片轉(zhuǎn)換為數(shù)字圖像。然后將數(shù)字視頻信號(hào)經(jīng)先入先出陣列FIFO存入DSP的數(shù)據(jù)空間,以作為后續(xù)圖像識(shí)別的數(shù)據(jù)來(lái)源;視頻解碼芯片可同時(shí)分離出行、場(chǎng)同步信號(hào)和像素時(shí)鐘參考信號(hào),以作為圖像緩存模塊的控制信號(hào);為了保存和記錄號(hào)碼,經(jīng)識(shí)別后的紙幣號(hào)碼數(shù)據(jù)存儲(chǔ)在快速閃爍存儲(chǔ)器FLASH中,也可根據(jù)需要通過(guò)異步串口傳送給PC機(jī)。復(fù)雜可編程邏輯器件CPLD在整個(gè)系統(tǒng)中的作用是控制全局邏輯和對(duì)采集的紙幣圖像實(shí)現(xiàn)開(kāi)窗處理。該系統(tǒng)的總體結(jié)構(gòu)框圖如圖1所示。
2 圖像采集模塊的設(shè)計(jì)
2.1 視頻解碼芯片SAA7113的應(yīng)用
SAA7113是Philips公司的一種高集成度視頻解碼芯片,它支持隔行掃描和多種數(shù)據(jù)輸出格式,可通過(guò)其I2C接口對(duì)芯片內(nèi)部電路進(jìn)行控制。該芯片具有如下特點(diǎn):
●支持四路模擬輸入,內(nèi)置信號(hào)源選擇器。
●有兩個(gè)模擬預(yù)處理通道。
●內(nèi)置兩個(gè)模擬抗混疊濾波器。
●兩個(gè)片內(nèi)8位視頻A/D轉(zhuǎn)換器。
●行/場(chǎng)同步信號(hào)自動(dòng)檢測(cè)。
●多種數(shù)據(jù)輸出格式。
對(duì)SAA7113的控制主要包括對(duì)輸入模擬信號(hào)的預(yù)處理、色度和亮度的控制,輸出數(shù)據(jù)格式及輸出圖像同步信號(hào)的選擇控制等。整個(gè)系統(tǒng)對(duì)圖像的識(shí)別處理主要是針對(duì)灰度圖像進(jìn)行的,對(duì)數(shù)字圖像數(shù)據(jù)的采集只需采集圖像的灰度值即可。在SAA7113所提供的多種數(shù)據(jù)輸出格式中,RAW格式在8位輸出管腳上直接輸出與像素時(shí)鐘相對(duì)應(yīng)的像素灰度值,此種數(shù)據(jù)格式與其它格式相比對(duì)灰度圖像的采集將更直接。
SAA7113的輸出控制管腳RTS0和RTS1是多功能復(fù)用管腳,根據(jù)不同的系統(tǒng)要求,通過(guò)對(duì)子地址寄存器SA12寫(xiě)入不同的控制字可將兩輸出管腳配置為行同步、幀同步、奇偶場(chǎng)同步等不同的信號(hào)。本系統(tǒng)將SA12子地址寄存器設(shè)置為0xa7?這樣可將RTS0設(shè)置為行同步信號(hào),RTS1設(shè)置為場(chǎng)同步信號(hào)。同時(shí),SAA7113還可輸出像素時(shí)鐘的參考信號(hào)LLC,時(shí)鐘頻率為27MHz,該信號(hào)是像素時(shí)鐘的二倍,即像素時(shí)鐘為13.5MHz。CCD攝像頭傳送的信號(hào)為PAL制、場(chǎng)頻為50Hz的視頻信號(hào),經(jīng)視頻解碼芯片后,可以在RTS0和RTS1管腳上看到該圖像的同步信號(hào),其行周期為64μs,場(chǎng)周期為20ms。
通過(guò)I2C總線協(xié)議對(duì)SAA7113的各個(gè)控制寄存器進(jìn)行配置可使其滿足系統(tǒng)要求。由于DSP芯片是處理型器件,它的控制能力比較弱,通用I/O口比較少,而單片機(jī)則具有很好的控制功能,因此,對(duì)SAA7113的初始化工作可用AT89C51單片機(jī)來(lái)完成。AT89C51單片機(jī)內(nèi)部無(wú)硬件I2C總線接口,可將單片機(jī)的P1.0口設(shè)置為I2C總線的串行數(shù)據(jù)線SDA,P1.1設(shè)置為I2C總線的串行時(shí)鐘線SCL,然后通過(guò)軟件模擬I2C總線并對(duì)視頻解碼芯片SAA7113進(jìn)行初始化。具體電路框圖如圖2所示。
2.2 用CPLD實(shí)現(xiàn)對(duì)圖像的開(kāi)窗處理
從SAA7113輸出的數(shù)字視頻圖像為整幅圖像,但對(duì)識(shí)別有用的圖像大小只有40×200?因此,為了減少圖像數(shù)據(jù)的存儲(chǔ)量和處理量,可以通過(guò)調(diào)整CCD攝像頭與點(diǎn)鈔機(jī)之間的位置,并利用視頻解碼器的行、場(chǎng)同步信號(hào)HS、VS和像素時(shí)鐘參考信號(hào)LLC以及VHDL語(yǔ)言,來(lái)對(duì)感興趣的圖像區(qū)域進(jìn)行開(kāi)窗處理。具體做法是在場(chǎng)信號(hào)VS為高期間對(duì)行信號(hào)HS進(jìn)行計(jì)數(shù), 并在感興趣的圖像區(qū)間使場(chǎng)信號(hào)輸出為高,而在其它區(qū)域使場(chǎng)信號(hào)為低,這樣,就可得到新的場(chǎng)信號(hào)VREF。與此同時(shí)在行信號(hào)HS為高時(shí),對(duì)像素時(shí)鐘LLC2進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)到需要的圖像數(shù)據(jù)時(shí),使行信號(hào)有效為高電平,而在其它期間使行信號(hào)無(wú)效為低電平?以得到新的行信號(hào)HREF。這樣,通過(guò)兩個(gè)計(jì)數(shù)器就可實(shí)現(xiàn)對(duì)圖像的開(kāi)窗處理。圖3給出了利用CPLD進(jìn)行圖像開(kāi)窗處理的示意圖,下面是行截取的VHLD程序(對(duì)列的截取與行截取相類似):
process(LLC2,HS)
variable temp:std_logic_vector(10 down to 0);?
begin
if(LLC2'event and LLC2=′1′) then
if(HS=′1′) then temp?=temp+′1′;
if?temp>80 and temp<241? then Href<=′1′;
else Href<=′0′;
end if;
else Href<=′0′;
end if;
end if;
end process;
2.3 利用DSP實(shí)現(xiàn)圖像的采集
SAA7113上電初始化之后將一直處于工作狀態(tài),該芯片輸出的像素時(shí)鐘頻率為13.5MHz,這么快的時(shí)鐘頻率如果直接進(jìn)行圖像采集的話將出現(xiàn)數(shù)據(jù)丟失現(xiàn)象。所以本文采用了先進(jìn)先出存儲(chǔ)器FIFO來(lái)作為圖像緩存以將圖像數(shù)據(jù)先存入FIFO,然后通過(guò)DSP讀?。疲桑疲现械膱D像數(shù)據(jù),來(lái)完成圖像的采集。FIFO芯片選用的是IDT公司的IDT72V06,該芯片的存儲(chǔ)容量為16kB,讀寫(xiě)周期為25ns,工作電壓為3.3V。由于FIFO是沒(méi)有片選的,所以主要是控制其讀寫(xiě)信號(hào)的有效。當(dāng)FIFO的讀信號(hào)為高時(shí),數(shù)據(jù)總線為高阻狀態(tài),從而實(shí)現(xiàn)與電路的總線隔離。FIFO寫(xiě)信號(hào)則通過(guò)CPLD圖像截取后的行場(chǎng)同步信號(hào)以及像素時(shí)鐘信號(hào)來(lái)控制,讀FIFO時(shí),可將FIFO映射到DSP的I/O空間,由于本系統(tǒng)中還有其它器件也是映射到DSP的I/O空間,為了與其它器件進(jìn)行區(qū)分,筆者使用了地址線A15和A14進(jìn)行譯碼。即在FIFO寫(xiě)完一場(chǎng)圖像數(shù)據(jù)之后,利用半滿信號(hào)作為DSP的中斷信號(hào),并通過(guò)中斷服務(wù)子程序?qū)D像數(shù)據(jù)存入DSP的數(shù)據(jù)空間以作為識(shí)別處理的數(shù)據(jù)來(lái)源。FIFO的讀寫(xiě)控制邏輯如圖4所示。
其中斷服務(wù)子程序如下:
interrupt void FIFO_RD(void)
{
*(volatile u16 *)IFR=0x0000?
for(i=0;i<8000;i++)
{
*(u16 *)(0x8000+i)=(port4000 & 0x00ff);
}
}
圖5是本系統(tǒng)通過(guò)此程序采集到的紙幣圖像。
3 DSP存儲(chǔ)空間的設(shè)計(jì)
DSP芯片采用了改進(jìn)的哈佛結(jié)構(gòu),處理速度比較快。由于具有特殊的DSP指令和可快速實(shí)現(xiàn)各種數(shù)字信號(hào)處理算法等特點(diǎn),因而可廣泛地應(yīng)用于各種圖像處理系統(tǒng)之中。本系統(tǒng)選用TMS320VC5410作為中央處理器,該芯片的讀寫(xiě)周期為10ns,且具有豐富的片上資源主要表現(xiàn)為:
●在程序空間有16k×16bit的片上ROM;
●具有64k×16bit的片上RAM,主要由4塊2k×16bit的片上雙訪問(wèn)程序/數(shù)據(jù)RAM和7塊8k×16bit的片上單訪問(wèn)程序/數(shù)據(jù)RAM兩部分組成;
●外擴(kuò)程序空間為8M×16bit;
●外擴(kuò)數(shù)據(jù)空間為32k×16bit。
根據(jù)紙幣號(hào)碼圖像大小和號(hào)碼識(shí)別算法的要求,本設(shè)計(jì)在DSP外擴(kuò)了一片64k×16bit的RAM,其中0x0000~0x3fff的存儲(chǔ)區(qū)映射到DSP的程序空間,0x8000~0xffff的存儲(chǔ)區(qū)映射到DSP的數(shù)據(jù)空間。而外擴(kuò)一片256k×16bit的FLASH芯片SST39VF400A則可根據(jù)DSP系統(tǒng)程序加載的特點(diǎn),將FLASH地址為0x8000~0xffff的存儲(chǔ)區(qū)在程序下載的過(guò)程中映射到DSP的數(shù)據(jù)空間,而在程序加載的過(guò)程中映射到DSP的程序空間,其空間的區(qū)分通過(guò)DSP的通用I/O口XF來(lái)進(jìn)行控制。FLASH地址為0x0000~0x7fff、0x10000~0x1ffff和0x20000~0x2ffff的存儲(chǔ)區(qū)可映射到DSP的程序空間,以作為識(shí)別號(hào)碼結(jié)果的記錄存儲(chǔ)之用。
4 利用TL16C550實(shí)現(xiàn)與PC機(jī)的通信
在圖像采集調(diào)試及對(duì)號(hào)碼的算法調(diào)試中,為了檢驗(yàn)圖像效果,可將圖像在PC機(jī)中呈現(xiàn)出來(lái)。由于TMS320VC5410的串口是同步串行口,而與PC機(jī)通信卻是異步串行收發(fā)的,因此本系統(tǒng)采用異步串行收發(fā)器TL16C550來(lái)實(shí)現(xiàn)DSP與PC機(jī)之間的通信。TL16C550是TI公司生產(chǎn)的一種具有異步串行通信功能的大規(guī)模集成電路芯片,對(duì)TL16C550的控制可通過(guò)對(duì)寄存器輸入A0、A1、A2的不同配置來(lái)進(jìn)行。
本系統(tǒng)使用IS和A15、A14的組合來(lái)作為TL16C550的片選信號(hào),以將其映射到DSP的I/O空間的0x8000地址。將DSP的地址線A2、A1、A0與TL16C550的寄存器選擇控制引腳A2、A1、A0相連,即可對(duì)DSP的I/O空間地址為0x8000-0x8007的空間進(jìn)行寄存器訪問(wèn)。在TL16C550中接收和發(fā)送信號(hào)使用的是同一個(gè)中斷信號(hào)INTRPT?而通過(guò)使能不同的中斷方式可實(shí)現(xiàn)系統(tǒng)與PC機(jī)之間的數(shù)據(jù)接收與發(fā)送。
5 系統(tǒng)軟件設(shè)計(jì)
采用手工編寫(xiě)的匯編語(yǔ)言程序雖然具有執(zhí)行速度快的優(yōu)點(diǎn),但用匯編語(yǔ)言編寫(xiě)程序特別是識(shí)別算法的程序?qū)⑹潜容^費(fèi)時(shí)費(fèi)力。為了提高程序開(kāi)發(fā)的效率,整個(gè)系統(tǒng)的軟件可采用TMS320C54x的C語(yǔ)言進(jìn)行編寫(xiě)。
上電復(fù)位之后,通過(guò)DSP片內(nèi)掩膜的Bootloader程序,采用并行加載方法,可將下載到外部FLASH中的程序加載到DSP的內(nèi)部程序空間,以提高程序的執(zhí)行速度。然后初始化視頻解碼器SAA7113和DSP以使系統(tǒng)處于正常工作狀態(tài)。先判斷先進(jìn)先出陣列FIFO的半滿標(biāo)志,然后利用DSP的采集程序開(kāi)始圖像的采集,接著對(duì)采集到的圖像進(jìn)行識(shí)別處理,便可通過(guò)顯示程序?qū)⒆R(shí)別結(jié)果在PC機(jī)上顯示出來(lái)。整個(gè)系統(tǒng)的軟件流程圖如圖6所示。