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

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

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

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

  關鍵詞: FIFO? IDT7204? 圖像采集? TMS320C6701?

?

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

1 FIFO芯片IDT7204性能簡介?

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

?

?

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

2 DSP芯片TMS320C6701性能簡介?

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

3 IDT7204與TMS320C6701的接口?

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

?

?

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

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

4 FIFO半滿中斷服務子程序的實現?

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

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

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

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

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

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

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

  C6701的主頻為f=160MHz,時鐘周期T=6.25ns。在寄存器初始化時,若對包含FIFO的CE1空間的讀時序設置為:讀建立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讀數據放入片內RAM,用示波器觀察可直接從示波器讀出FIFO的讀周期為50ns。將示波器的檔位調大,可看到讀2K字節(jié)的時間為102.4μs,說明此時為連續(xù)讀。這些實測數據與理論值完全一致。?

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

4.2.3? 數據寫入FIFO的速度?

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

?

?

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

4.2.4 結果分析?

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

  現在分析第二種方法中數據寫入FIFO速度為多快時會使得采集256K字節(jié)數據的半滿中斷次數大于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時,就會出現采集256K字節(jié)數據的半滿中斷次數大于128次。?

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

參考文獻?

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

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

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

相關內容