《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技术 > 业界动态 > 异步FIFO在实时图像匹配处理机中的应用

异步FIFO在实时图像匹配处理机中的应用

2008-12-01
作者:肖志涛 国澄明 朱永松

  摘? 要: 通過FIFO芯片實現(xiàn)DSP對實時圖像數(shù)據(jù)" title="圖像數(shù)據(jù)">圖像數(shù)據(jù)的采集。介紹了異步FIFO芯片IDT7204和DSP芯片TMS320C6704的性能,設(shè)計了IDT7204與TMS320C6701的接口,討論了編程實現(xiàn)圖像采集" title="圖像采集">圖像采集的兩種方法并進行了比較。?

  關(guān)鍵詞: FIFO? IDT7204? 圖像采集? TMS320C6701?

?

  圖像匹配" title="圖像匹配">圖像匹配是無人飛行器導航和制導的關(guān)鍵技術(shù)。圖像匹配的基本任務(wù)是在空中飛行的條件下,利用實時獲取的地面圖像與預先提供的基準圖像進行匹配,從而達到確定飛行器瞬間位置并進行導航的目的。實時圖像數(shù)據(jù)采集的高效性和可靠性是十分重要的。我們通過FIFO[1](First-In First-Out)芯片實現(xiàn)了DSP對數(shù)字攝像機" title="數(shù)字攝像機">數(shù)字攝像機的高速數(shù)據(jù)的采集。由于FIFO工作機制的特性和它的高靈敏性,在使用FIFO時,硬件設(shè)計和軟件實現(xiàn)都有相應(yīng)的特點。?

1 FIFO芯片IDT7204性能簡介?

??? IDT7204是4K×9位的可以實現(xiàn)先進先出的異步讀寫操作" title="讀寫操作">讀寫操作的雙端口存儲器。允許多片F(xiàn)IFO級聯(lián),在字寬和容量深度兩方面進行擴展。IDT7204功能引腳如圖1所示。?

?

?

  讀寫操作會自動訪問存儲器中的連續(xù)的存儲單元,從FIFO中讀出的數(shù)據(jù)順序與寫入的順序相同,地址的順序在內(nèi)部已經(jīng)預先定義好。對芯片的讀/寫操作只由讀/寫信號控制,不需要額外的地址信息。這就使得FIFO的控制電路變得十分簡單。芯片對讀/寫指針提供復位功能,使內(nèi)部讀/寫指針同時設(shè)置到初始位置。另外它還可對讀指針提供單獨復位功能,僅把讀指針設(shè)置到初始位置,實現(xiàn)對已讀出數(shù)據(jù)的重新讀取。該器件采用9位數(shù)據(jù)寬度。第9位可以根據(jù)用戶需要用作控制位或奇偶校驗位,在需要對傳輸進行奇偶校驗的通訊系統(tǒng)中可以用到該位。IDT公司的IDT7204的存取速度可達12ns。?

2 DSP芯片TMS320C6701性能簡介?

??? TMS320C6701是TI公司生產(chǎn)的浮點DSP系列的成員,具有高性能、先進的VelociTITM VLIW結(jié)構(gòu),每時鐘周期可并行執(zhí)行8條32-bit的指令。在時鐘為167MHz時,每指令周期為6ns,具有每秒1G次的浮點運算。外部存儲器接口EMIF(External Memory Interface)支持8/16/32位數(shù)據(jù)寬度以及同步、異步各種類型的存儲器,便于系統(tǒng)擴展。TMS320C6701片內(nèi)有64Kbyte的數(shù)據(jù)RAM和64Kbyte的程序RAM/Cache,通過EMIF可實際訪問64Mbyte的片外存儲空間,共分為4個區(qū)(CE0、CE1、CE2、CE3)。有4個相互獨立的可編程DMA通道,可在CPU后臺工作,以CPU時鐘傳輸數(shù)據(jù)。?

3 IDT7204與TMS320C6701的接口?

??? 我們以TMS320C6701(以下簡稱C6701)為核心處理器實現(xiàn)了圖像匹配處理機,通過FIFO實現(xiàn)了DSP對實時圖像數(shù)據(jù)的采集。FIFO芯片IDT7204與DSP芯片C6701的連接圖如圖2所示。由于FIFO是非同步器件,將其映射到CE1空間。FIFO傳輸8位實時圖像數(shù)據(jù),它只連接32位數(shù)據(jù)線中的低8位。當從FIFO讀數(shù)據(jù)時,需要對高24位進行軟件屏蔽。?

?

?

  把FIFO放在CE1空間上,其地址為0x01600000~0x016FFFFF中的任意一個地址。FIFO的讀信號由EA21、EA20、FIFO的寫信號由數(shù)字攝像機送來的幀有效EF、行有效EL、數(shù)據(jù)有效ED控制;當數(shù)字攝像機把FIFO寫至2K字節(jié)時,觸發(fā)C6701中斷。C6701中斷服務(wù)子程序通過DMA將FIFO中的數(shù)據(jù)取走并寫入CE0空間的SDRAM中去。然后C6701再等待新的中斷,直至將一幀512×512×8bit圖像全部采集到SDRAM為止。?

  由于圖像匹配處理機工作的安排,需要將FIFO采集的實時數(shù)據(jù)傳到CE0空間的SDRAM,這項工作當然要由DMA完成。?

4 FIFO半滿中斷服務(wù)子程序的實現(xiàn)?

  實驗過程中發(fā)現(xiàn),用DMA將FIFO中的數(shù)據(jù)傳到SDRAM的方法有兩種,它們都可以正確地采集實時數(shù)據(jù),并且放置位置正確。?

4.1?方法之一——只使用一個DMA?

  該方法只使用一個DMA。具體實現(xiàn)為:將FIFO的數(shù)據(jù)輸出地址設(shè)為DMA的源地址,將CE0_SDRAM的相應(yīng)區(qū)間設(shè)為DMA的目標地址。程序用C語言編程實現(xiàn)。用示波器觀察可見該DMA過程為:由FIFO連續(xù)讀出三個字節(jié),然后將這三個字節(jié)連續(xù)寫入SDRAM,如此反復進行。這種寫SDRAM的方法,沒有充分發(fā)揮SDRAM頁模式寫的優(yōu)越性,結(jié)果表現(xiàn)為:采集一幀512×512×8bit圖像時,半滿次數(shù)大大多于128次(約380次)。原因是DMA寫入SDRAM時速度較慢,在半滿中斷發(fā)生后,DMA還沒有將FIFO中的2K字節(jié)讀完時又發(fā)生半滿。但是FIFO寫的速度還不至于追上FIFO讀,即不至于造成FIFO溢出而丟失數(shù)據(jù)。由于DMA的目標地址會隨所傳輸數(shù)據(jù)自動遞增,因此DMA寫入SDRAM中的數(shù)據(jù)的位置仍是連續(xù)且正確的。?

  雖然出現(xiàn)以上現(xiàn)象,但實踐證明,使用這種方法可在ED=6.67MHz、采用15ns的FIFO的情況下,仍可以正確采集數(shù)據(jù)。?

4.2?方法之二——使用兩個DMA?

  該方法使用兩個DMA。在FIFO半滿中斷時,用一個DMA(如DMA1)從FIFO讀出2K字節(jié)數(shù)據(jù)放入C6701的片內(nèi)數(shù)據(jù)RAM。該工作完成后,用另一個DMA(如DMA2)從C6701片內(nèi)數(shù)據(jù)RAM讀出放入的2K字節(jié),寫入SDRAM的相應(yīng)地址,循環(huán)進行。該方法可以保證采集256K字節(jié)數(shù)據(jù)正好發(fā)生128次半滿中斷。這可根據(jù)DMA從FIFO讀出2K字節(jié)所用時間、DMA向SDRAM寫2K字節(jié)所用時間、以及向FIFO寫數(shù)據(jù)的速度予以解釋。?

4.2.1 DMA從FIFO讀出2K字節(jié)所用時間?

  C6701的主頻為f=160MHz,時鐘周期T=6.25ns。在寄存器初始化時,若對包含F(xiàn)IFO的CE1空間的讀時序設(shè)置為:讀建立tsetup=2T、讀選通tstrobe=5T、讀保持thold=1T,則FIFO的讀周期Tr=2T+5T+1T=8T=8×6.25ns=50ns,即從FIFO讀取一個字節(jié)理論上需要50ns。那么,從FIFO讀2K字節(jié)理論上需要的時間tR=2K×50ns=102.4μs。?

  用DMA從FIFO讀數(shù)據(jù)放入片內(nèi)RAM,用示波器觀察可直接從示波器讀出FIFO的讀周期為50ns。將示波器的檔位調(diào)大,可看到讀2K字節(jié)的時間為102.4μs,說明此時為連續(xù)讀。這些實測數(shù)據(jù)與理論值完全一致。?

4.2.2? DMA向SDRAM寫入2K字節(jié)所用時間?

  這里SDRAM的工作頻率為C6701工作頻率的二分頻,即fSDRAM=0.5 f=0.5×160MHz=80MHz,TSDRAM=12.5ns。在頁模式下,SDRAM可以每個周期寫一個字節(jié),則寫2K字節(jié)理論上所用時間tW=2K×12.5ns=25.6μs。?

  用DMA從片內(nèi)RAM搬2K字節(jié)寫入SDRAM,等待一段時間,循環(huán)運行。SDRAM寫入2K字節(jié)的時間,可直接從示波器上讀出為25.6μs。與理論值完全一致。?

4.2.3? 數(shù)據(jù)寫入FIFO的速度?

  所用的數(shù)據(jù)采集頻率為6.67MHz,周期為150ns,即每150ns向FIFO寫一個字節(jié),連續(xù)進行。那么向FIFO寫2K字節(jié),即FIFO半滿所需時間為:tHF=2K×150ns=307.2μs。總的時序圖如圖3所示。?

?

?

  由圖3可知其工作過程:數(shù)據(jù)以6.67MHz的速度寫入FIFO,FIFO半滿需要tHF=307.2us,半滿后,DMA用tR=102.4ns的時間將2K字節(jié)從FIFO讀出并放入片內(nèi)RAM,然后DMA在很寬松的時間里(tHF-tR)用tW=25.6μs的時間將剛放入片內(nèi)RAM的2K字節(jié)搬到SDRAM??梢?此時還富裕很長時間。?

4.2.4 結(jié)果分析?

  雖然這里討論的兩種方法都可以正確地采集數(shù)據(jù),符合系統(tǒng)的要求,但若采用第二種方法更完善。當數(shù)據(jù)寫入FIFO的速度再提高時,第二種方法仍有富裕的時間可以利用。但是第一種方法就有可能出現(xiàn)寫FIFO追上讀FIFO的情況,從而出現(xiàn)數(shù)據(jù)溢出,產(chǎn)生圖像采集錯誤。因此,推薦使用第二種方法。?

  現(xiàn)在分析第二種方法中數(shù)據(jù)寫入FIFO速度為多快時會使得采集256K字節(jié)數(shù)據(jù)的半滿中斷次數(shù)大于128次。由圖3的時序圖可知,當FIFO半滿所需時間tHF=tR+tW=102.4μs+25.6μs=138μs時,剛好可保證發(fā)生128次中斷。此時寫FIFO的速度ED=2K/138μs=14.84MHz,即ED=14.84MHz為臨界頻率。當ED>14.84MHz時,就會出現(xiàn)采集256K字節(jié)數(shù)據(jù)的半滿中斷次數(shù)大于128次。?

??? 在使用FIFO時,應(yīng)根據(jù)FIFO的工作特點進行硬件設(shè)計和軟件編程。所給出的接口電路和兩種編程方法都是通過反復實驗得出的,可使整個圖像匹配處理系統(tǒng)良好運轉(zhuǎn),驗證了該接口電路和編程方法的可靠性和穩(wěn)定性,在信號的高速處理方面具有一定的應(yīng)用價值。?

參考文獻?

1 CMOS Asynchronous FIFO IDT7204. Integrated Device Technology Inc. 1997.9?

2 TMS320C6701 Floating-Point Digital Processor Datasheet.TI, 2000. 5?

3 彭啟綜. DSP與實時數(shù)字信號處理. 成都:電子科技大學出版社,1995
本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容