,,
(1.湘潭大學(xué) 微電子科學(xué)與工程系,湘潭 411105;2.湖南長沙進(jìn)芯電子科技有限公司)
隨著物聯(lián)網(wǎng)的迅速發(fā)展,人們對設(shè)備使用效率的要求越來越高,嵌入式系統(tǒng)的高速性能也越來越備受關(guān)注,這對廣泛應(yīng)用于車站、酒店、銀行等場合的嵌入式身份證讀卡器系統(tǒng)也提出了更高的要求。
嵌入式身份證讀卡器系統(tǒng)是基于數(shù)字信號處理器(DSP)和現(xiàn)場可編程門陣列(FPGA)架構(gòu)而開發(fā)的實(shí)用系統(tǒng)。該系統(tǒng)不僅結(jié)構(gòu)靈活,且有較強(qiáng)的通用性,適合模塊化設(shè)計(jì)從而提高算法效率,而且開發(fā)周期較短,平臺易于維護(hù)和擴(kuò)展,適用于實(shí)時(shí)信號處理[1]。
身份證讀卡系統(tǒng)雖然已經(jīng)被廣泛應(yīng)用,但是因?yàn)橛脩粜枨蟮亩鄻踊约笆軘?shù)據(jù)傳輸響應(yīng)速度的限制,現(xiàn)有的系統(tǒng)數(shù)據(jù)傳輸速率并不能滿足高速CMOS圖像傳感器的采樣頻率以及用戶對使用等待時(shí)間的要求。針對這一問題,利用集成了DMA模塊的DSP進(jìn)行數(shù)據(jù)搬移、存儲和處理,提高了整個(gè)系統(tǒng)的響應(yīng)速度。
身份證讀卡器是一款用于對身份證信息掃描和采集的儀器,需要獲取的身份證數(shù)據(jù)主要包括射頻識別RFID[2](Radio Frequency Identification)數(shù)據(jù)和圖像掃描數(shù)據(jù)。RFID信息數(shù)據(jù)大約有100多KB,通過串行通信獲取,而圖像掃描數(shù)據(jù)則通過A/D采樣的模擬信號,信號數(shù)據(jù)有4 MB左右。對于如此大量的數(shù)據(jù)處理,速度是關(guān)鍵,處理的慢則耗時(shí)越久,這是使用者難以接受的。所以根據(jù)實(shí)際使用情況及用戶要求,我們將掃描過程耗時(shí)控制在1 s以內(nèi),經(jīng)計(jì)算要達(dá)到這個(gè)時(shí)間要求,則圖像掃描頻率需達(dá)到3 MHz以上。
原系統(tǒng)由CMOS圖像傳感器、光電傳感器、片外A/D、ARM、FPGA、SDRAM和USB2.0接口等硬件組成。系統(tǒng)硬件結(jié)構(gòu)框圖如圖1所示。

圖1 系統(tǒng)硬件結(jié)構(gòu)框圖
片外A/D采集CMOS傳感器圖像后由FPGA存儲到SDRAM,再由ARM進(jìn)行處理,最后通過USB2.0上傳至上位機(jī)[3]。
基于對提高整個(gè)系統(tǒng)的運(yùn)行速度及降低硬件結(jié)構(gòu)尺寸來提升性價(jià)比的方面考慮,我們提出了一種新的升級方案——用一塊DSP芯片替代ARM+片外A/D兩塊芯片,新方案系統(tǒng)硬件結(jié)構(gòu)框圖如圖2所示。

圖2 新方案系統(tǒng)硬件結(jié)構(gòu)框圖
方案中的DSP首先使用的是ADP32F12,該芯片內(nèi)部集成了一個(gè)流水線結(jié)構(gòu)且分辨率為12位的ADC模塊[4]。該ADC模塊有16個(gè)通道,可配置成兩個(gè)獨(dú)立的8通道模塊,可以為外設(shè)事件管理器EV服務(wù),兩個(gè)8通道模塊具有一對一系列轉(zhuǎn)換自動化序列化的能力,通過模擬多路器可以任意選擇可用的8個(gè)通道中的一個(gè)通道,一旦轉(zhuǎn)換結(jié)束,已選擇的通道值就保存在各個(gè)通道的結(jié)果寄存器ADCRESULT中。自動序列允許系統(tǒng)對同一通道轉(zhuǎn)換多次,允許用戶執(zhí)行采樣算法[5],完全等效TITMS320F2812芯片的功能。
由于A/D采樣率最高可達(dá)12.5 MHz,如果采用該系統(tǒng),直接以一個(gè)8 MHz的頻率去啟動A/D采樣,由于上下兩個(gè)面各有一個(gè)掃描頭,各需要一個(gè)A/D通道對其采樣,所以實(shí)際的A/D采樣頻率為4 MHz。
同樣,兩個(gè)A/D通道采集完后進(jìn)入A/D中斷,該中斷的頻率同樣是4 MHz,然后在中斷服務(wù)程序中將A/D采樣數(shù)據(jù)搬移至片外RAM中,整個(gè)掃描過程結(jié)束。但在實(shí)際測試時(shí)發(fā)現(xiàn)掃描數(shù)據(jù)會大量丟失,理論上掃描數(shù)據(jù)有:
648(每行點(diǎn)數(shù))×3(RGB三色)×1024(行數(shù))×2(正反兩面)=3 981 312個(gè)
而通過實(shí)驗(yàn)掃描得到的數(shù)據(jù)點(diǎn)數(shù)只有理論計(jì)算的一半。經(jīng)驗(yàn)證,發(fā)現(xiàn)A/D采樣在非連續(xù)模式下其采樣率遠(yuǎn)達(dá)不到12.5 MHz,而只有1.5 MHz左右,并且中斷的響應(yīng)頻率最快只有2 MHz左右,完全滿足不了系統(tǒng)的應(yīng)用需求。
經(jīng)分析發(fā)現(xiàn),A/D如果在連續(xù)采樣模式下,采樣率能夠滿足應(yīng)用要求,只是采樣后的數(shù)據(jù)CPU無法將其快速搬移。但如果仍沿用該系統(tǒng)架構(gòu),即使采用A/D連續(xù)采樣,數(shù)據(jù)也無法達(dá)到應(yīng)用要求的速度進(jìn)行快速搬移,因?yàn)? MHz的A/D中斷的響應(yīng)頻率還是無法滿足要求。無法滿足數(shù)據(jù)搬移的速度是該方案的瓶頸所在。
于是,在上述方案的基礎(chǔ)上將ADP32F12替換為ADP32F28335,該芯片相對ADP32F12,除了具有ADP32F12所有的功能及相對更先進(jìn)的新功能外,還集成了DMA模塊,DMA模塊用硬件實(shí)現(xiàn)了從源地址到目的地址的搬移,只需要CPU在數(shù)據(jù)傳送開始和結(jié)束做一些處理,即可直接進(jìn)行高速數(shù)據(jù)傳送,從而為其它系統(tǒng)功能釋放帶寬,提高CPU利用率[6]。
ADP32F28335共有6個(gè)DMA通道,每個(gè)通道有各自獨(dú)立的觸發(fā)源來啟動數(shù)據(jù)傳輸,并通過各自獨(dú)立的PIE中斷觸發(fā)CPU 來控制DMA數(shù)據(jù)傳輸?shù)拈_始和結(jié)束。DMA模塊內(nèi)部由DMA控制器DMAC(DMAC是DSP的核心數(shù)據(jù)傳輸引擎[7])來掌管其內(nèi)部地址總線如數(shù)據(jù)讀/寫總線、控制總線,與總線相連的是地址和數(shù)據(jù)源/目的接口。
數(shù)據(jù)傳輸時(shí)采用了四級流水線機(jī)制,內(nèi)部狀態(tài)機(jī)是嵌套的內(nèi)循環(huán)和外循環(huán)兩級結(jié)構(gòu),內(nèi)循環(huán)表示每個(gè)通道在一次外部中斷觸發(fā)到來時(shí),每次突發(fā)傳送的數(shù)據(jù)量;外部循環(huán)表示內(nèi)循環(huán)的次數(shù)。
首先,對DMA從A/D將數(shù)據(jù)搬移至片外SDRAM這個(gè)過程的響應(yīng)速度進(jìn)行了驗(yàn)證。由于DMA的源/目標(biāo)地址的可配置性,直接將源地址設(shè)置為A/D結(jié)果寄存器、目標(biāo)地址設(shè)置為片外SDRAM。系統(tǒng)設(shè)置為:A/D時(shí)鐘為25 MHz,采樣率為12.5 MHz,采樣模式設(shè)為雙序列順序采樣、2通道(A0、A1)連續(xù)采樣,每個(gè)通道采樣648個(gè)點(diǎn),共1296個(gè)點(diǎn),則總共耗時(shí)為:
試驗(yàn)中,用I/O翻轉(zhuǎn)測試耗時(shí)結(jié)果如圖3 所示。

圖3 I/O翻轉(zhuǎn)測試耗時(shí)結(jié)果
由圖3可知,總共耗時(shí)為104 μs,與理論計(jì)算值基本吻合,結(jié)果表明合理利用ADP32F28335的DMA搬移連續(xù)A/D采樣結(jié)果數(shù)據(jù)的速率是能夠滿足要求的。
在核心功能滿足要求的基礎(chǔ)上,搭建了整個(gè)系統(tǒng)的硬件平臺,整體系統(tǒng)結(jié)構(gòu)如圖4所示。

圖4 整體系統(tǒng)結(jié)構(gòu)框圖
A/D采樣結(jié)果通過DMA傳輸至片外SDRAM進(jìn)行存儲,等整張圖片掃描完畢后,DSP再從SDRAM中讀取掃描數(shù)據(jù)進(jìn)行相應(yīng)的處理,處理完后再存回SDRAM中,等所有處理過程結(jié)束后,再由FPGA將SDRAM中處理好的數(shù)據(jù)采用USB進(jìn)行主控制器與上位機(jī)的數(shù)據(jù)通信[8],經(jīng)USB3.0發(fā)送至上位機(jī)進(jìn)行顯示。整個(gè)系統(tǒng)的程序流程如圖5所示。

圖5 整個(gè)系統(tǒng)的程序流程
由于ADP32F28335的外部擴(kuò)展的尋址范圍只有1 MB,而我們的SDRAM有16M×16bit的存儲空間,為了滿足在超出的尋址范圍尋址,使用GPIO8口的GPIOB0~GPIOB3作為地址線,經(jīng)FPGA的接口處理使得DSP能夠?qū)DRAM的16 MB的空間進(jìn)行訪問。而其中的地址切換在DMA中斷中進(jìn)行,即每達(dá)到1 MB的地址范圍后,切換I/O口狀態(tài)以達(dá)到將I/O口作為地址線使用的目的,DMA中斷程序如圖6所示,其中DMA配置相關(guān)程序代碼如圖7所示。

圖6 DMA中斷程序圖

圖7 DMA配置相關(guān)程序代碼
通過對原系統(tǒng)的優(yōu)化設(shè)計(jì),在提升了掃描速度和降低硬件結(jié)構(gòu)尺寸來提升性價(jià)比后,將身份證插入讀卡器,在上位機(jī)端得到的測試結(jié)果如圖8所示。掃描過程耗時(shí)0.4 s,比原系統(tǒng)提升了90%的速率,大大提升了用戶的體驗(yàn)效果。測試結(jié)果驗(yàn)證了該系統(tǒng)優(yōu)化設(shè)計(jì)的正確性,本系統(tǒng)所具有的高效性和實(shí)用性的特點(diǎn)將會被廣泛地應(yīng)用。

圖8 測試結(jié)果
