,,
(1.湘潭大學 微電子科學與工程系,湘潭 411105;2.湖南長沙進芯電子科技有限公司)
隨著物聯(lián)網(wǎng)的迅速發(fā)展,人們對設備使用效率的要求越來越高,嵌入式系統(tǒng)的高速性能也越來越備受關注,這對廣泛應用于車站、酒店、銀行等場合的嵌入式身份證讀卡器系統(tǒng)也提出了更高的要求。
嵌入式身份證讀卡器系統(tǒng)是基于數(shù)字信號處理器(DSP)和現(xiàn)場可編程門陣列(FPGA)架構而開發(fā)的實用系統(tǒng)。該系統(tǒng)不僅結構靈活,且有較強的通用性,適合模塊化設計從而提高算法效率,而且開發(fā)周期較短,平臺易于維護和擴展,適用于實時信號處理[1]。
身份證讀卡系統(tǒng)雖然已經(jīng)被廣泛應用,但是因為用戶需求的多樣化以及受數(shù)據(jù)傳輸響應速度的限制,現(xiàn)有的系統(tǒng)數(shù)據(jù)傳輸速率并不能滿足高速CMOS圖像傳感器的采樣頻率以及用戶對使用等待時間的要求。針對這一問題,利用集成了DMA模塊的DSP進行數(shù)據(jù)搬移、存儲和處理,提高了整個系統(tǒ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ù)處理,速度是關鍵,處理的慢則耗時越久,這是使用者難以接受的。所以根據(jù)實際使用情況及用戶要求,我們將掃描過程耗時控制在1 s以內,經(jīng)計算要達到這個時間要求,則圖像掃描頻率需達到3 MHz以上。
原系統(tǒng)由CMOS圖像傳感器、光電傳感器、片外A/D、ARM、FPGA、SDRAM和USB2.0接口等硬件組成。系統(tǒng)硬件結構框圖如圖1所示。
圖1 系統(tǒng)硬件結構框圖
片外A/D采集CMOS傳感器圖像后由FPGA存儲到SDRAM,再由ARM進行處理,最后通過USB2.0上傳至上位機[3]。
基于對提高整個系統(tǒng)的運行速度及降低硬件結構尺寸來提升性價比的方面考慮,我們提出了一種新的升級方案——用一塊DSP芯片替代ARM+片外A/D兩塊芯片,新方案系統(tǒng)硬件結構框圖如圖2所示。
圖2 新方案系統(tǒng)硬件結構框圖
方案中的DSP首先使用的是ADP32F12,該芯片內部集成了一個流水線結構且分辨率為12位的ADC模塊[4]。該ADC模塊有16個通道,可配置成兩個獨立的8通道模塊,可以為外設事件管理器EV服務,兩個8通道模塊具有一對一系列轉換自動化序列化的能力,通過模擬多路器可以任意選擇可用的8個通道中的一個通道,一旦轉換結束,已選擇的通道值就保存在各個通道的結果寄存器ADCRESULT中。自動序列允許系統(tǒng)對同一通道轉換多次,允許用戶執(zhí)行采樣算法[5],完全等效TITMS320F2812芯片的功能。
由于A/D采樣率最高可達12.5 MHz,如果采用該系統(tǒng),直接以一個8 MHz的頻率去啟動A/D采樣,由于上下兩個面各有一個掃描頭,各需要一個A/D通道對其采樣,所以實際的A/D采樣頻率為4 MHz。
同樣,兩個A/D通道采集完后進入A/D中斷,該中斷的頻率同樣是4 MHz,然后在中斷服務程序中將A/D采樣數(shù)據(jù)搬移至片外RAM中,整個掃描過程結束。但在實際測試時發(fā)現(xiàn)掃描數(shù)據(jù)會大量丟失,理論上掃描數(shù)據(jù)有:
648(每行點數(shù))×3(RGB三色)×1024(行數(shù))×2(正反兩面)=3 981 312個
而通過實驗掃描得到的數(shù)據(jù)點數(shù)只有理論計算的一半。經(jīng)驗證,發(fā)現(xiàn)A/D采樣在非連續(xù)模式下其采樣率遠達不到12.5 MHz,而只有1.5 MHz左右,并且中斷的響應頻率最快只有2 MHz左右,完全滿足不了系統(tǒng)的應用需求。
經(jīng)分析發(fā)現(xiàn),A/D如果在連續(xù)采樣模式下,采樣率能夠滿足應用要求,只是采樣后的數(shù)據(jù)CPU無法將其快速搬移。但如果仍沿用該系統(tǒng)架構,即使采用A/D連續(xù)采樣,數(shù)據(jù)也無法達到應用要求的速度進行快速搬移,因為2 MHz的A/D中斷的響應頻率還是無法滿足要求。無法滿足數(shù)據(jù)搬移的速度是該方案的瓶頸所在。
于是,在上述方案的基礎上將ADP32F12替換為ADP32F28335,該芯片相對ADP32F12,除了具有ADP32F12所有的功能及相對更先進的新功能外,還集成了DMA模塊,DMA模塊用硬件實現(xiàn)了從源地址到目的地址的搬移,只需要CPU在數(shù)據(jù)傳送開始和結束做一些處理,即可直接進行高速數(shù)據(jù)傳送,從而為其它系統(tǒng)功能釋放帶寬,提高CPU利用率[6]。
ADP32F28335共有6個DMA通道,每個通道有各自獨立的觸發(fā)源來啟動數(shù)據(jù)傳輸,并通過各自獨立的PIE中斷觸發(fā)CPU 來控制DMA數(shù)據(jù)傳輸?shù)拈_始和結束。DMA模塊內部由DMA控制器DMAC(DMAC是DSP的核心數(shù)據(jù)傳輸引擎[7])來掌管其內部地址總線如數(shù)據(jù)讀/寫總線、控制總線,與總線相連的是地址和數(shù)據(jù)源/目的接口。
數(shù)據(jù)傳輸時采用了四級流水線機制,內部狀態(tài)機是嵌套的內循環(huán)和外循環(huán)兩級結構,內循環(huán)表示每個通道在一次外部中斷觸發(fā)到來時,每次突發(fā)傳送的數(shù)據(jù)量;外部循環(huán)表示內循環(huán)的次數(shù)。
首先,對DMA從A/D將數(shù)據(jù)搬移至片外SDRAM這個過程的響應速度進行了驗證。由于DMA的源/目標地址的可配置性,直接將源地址設置為A/D結果寄存器、目標地址設置為片外SDRAM。系統(tǒng)設置為:A/D時鐘為25 MHz,采樣率為12.5 MHz,采樣模式設為雙序列順序采樣、2通道(A0、A1)連續(xù)采樣,每個通道采樣648個點,共1296個點,則總共耗時為:
試驗中,用I/O翻轉測試耗時結果如圖3 所示。
圖3 I/O翻轉測試耗時結果
由圖3可知,總共耗時為104 μs,與理論計算值基本吻合,結果表明合理利用ADP32F28335的DMA搬移連續(xù)A/D采樣結果數(shù)據(jù)的速率是能夠滿足要求的。
在核心功能滿足要求的基礎上,搭建了整個系統(tǒng)的硬件平臺,整體系統(tǒng)結構如圖4所示。
圖4 整體系統(tǒng)結構框圖
A/D采樣結果通過DMA傳輸至片外SDRAM進行存儲,等整張圖片掃描完畢后,DSP再從SDRAM中讀取掃描數(shù)據(jù)進行相應的處理,處理完后再存回SDRAM中,等所有處理過程結束后,再由FPGA將SDRAM中處理好的數(shù)據(jù)采用USB進行主控制器與上位機的數(shù)據(jù)通信[8],經(jīng)USB3.0發(fā)送至上位機進行顯示。整個系統(tǒng)的程序流程如圖5所示。
圖5 整個系統(tǒng)的程序流程
由于ADP32F28335的外部擴展的尋址范圍只有1 MB,而我們的SDRAM有16M×16bit的存儲空間,為了滿足在超出的尋址范圍尋址,使用GPIO8口的GPIOB0~GPIOB3作為地址線,經(jīng)FPGA的接口處理使得DSP能夠對SDRAM的16 MB的空間進行訪問。而其中的地址切換在DMA中斷中進行,即每達到1 MB的地址范圍后,切換I/O口狀態(tài)以達到將I/O口作為地址線使用的目的,DMA中斷程序如圖6所示,其中DMA配置相關程序代碼如圖7所示。
圖6 DMA中斷程序圖
圖7 DMA配置相關程序代碼
通過對原系統(tǒng)的優(yōu)化設計,在提升了掃描速度和降低硬件結構尺寸來提升性價比后,將身份證插入讀卡器,在上位機端得到的測試結果如圖8所示。掃描過程耗時0.4 s,比原系統(tǒng)提升了90%的速率,大大提升了用戶的體驗效果。測試結果驗證了該系統(tǒng)優(yōu)化設計的正確性,本系統(tǒng)所具有的高效性和實用性的特點將會被廣泛地應用。
圖8 測試結果