Global Sources
電子工程專輯
 
電子工程專輯 > FPGA/PLD
 
 
FPGA/PLD  

在高速訊號採集系統中用FPGA實現非同步FIFO設計

上網時間: 2006年10月24日     打印版  Bookmark and Share  字型大小:  

關鍵字:高速轉換  FPGA  FIFO  EDMA  TMS320C6416 

目前數據採集系統正朝向高速和高精密度等方向發展。隨著FPGA(現場可編程邏輯閘陣列)的整合度和執行速度的提高,可以滿足高速數據採集系統的需求。FPGA內部具有豐富的記憶體單元,易於實現各種記憶體,如FIFO、雙埠RAM等;另外,基於查找表的邏輯單元適用於實現各種數位訊號處理,如濾波等,以輔助DSP處理器實現各種預處理。

TI公司推出的數位訊號處理晶片TMS320C6000系列工作頻率達1GHz,具有處理速度快、靈活、精確等特性,能滿足數據採集系統中主處理器的即時性要求。基於以上考量,北京合眾達公司開發了採用TMS320C6416和FPGA的高精密度雙通道數據採集系統,每個通道的採樣率為3MSPS,最高可達10MSPS,採樣精密度為14b。系統主要包括以下幾部份:高速A/D轉換、FIFO數據緩衝記憶體和EDMA數據傳輸,系統結構圖如圖1所示。

AD9243及轉換控制

設計中採用的類比數位轉換器晶片是AD9243。AD9243是ADI公司生產的14位元、3MSPS高性能類比數位轉換器。AD9240與AD9243完全相容,因此系統的最高採樣率可相容至10Msps。

類比數位轉換器AD9243的時序控制與傳統的A/D有所不同,完全依靠時脈控制採樣、轉換和數據輸出,在第一個時脈的上升沿開始採樣轉換,第四個時脈上升沿到來時,數據將出現在D1~D14埠上。本文的範例系統自通電時起,A/D和時脈電路始終處於工作狀態,對數據不停進行轉換,以減少誤碼率,提高採樣精密度。

FIFO的實現及控制

設計中採用FPGA來實現雙通道數據的緩衝記憶體和數據傳輸的邏輯控制。Spartan3E具有大量邏輯和記憶體單元,其內部的BlockRam可以配置為大小不同的各種類型記憶體,如單埠RAM、雙埠RAM和同步FIFO,其中FIFO更適合作為A/D採樣數據高速寫入的記憶體。FIFO記憶體就像數據管道一樣,數據從管道的一頭流入、從另一頭流出,先進入的數據先流出。FIFO具有兩套數據線而無地址線,可在其一端進行寫入作業,在另一端進行讀取作業,數據在其中順序移動,因而達到很高的傳輸速度和效率,且由於省去了地址線,有利於PCB板佈線。

採用FIFO構成高速A/D採樣緩衝記憶體時,由於轉換速度較快,如果直接將ADC採樣後的數據儲存到FIFO中,對時序配置要求非常嚴格,如果兩者時序關係配合不當,就會發生數據儲存出錯或者數據流失。利用FPGA可以方便地控制時序和數據傳輸,簡單、可靠地實現採樣和儲存是選用FPGA的優點。該數據採集系統中只採用了一個外部時脈源,直接輸入到FPGA,經DCM分頻後作為FIFO和ADC的時脈源。


圖1:系統結構圖

在軟體設計中,採用ISE開發環境開發FPGA時,調用核心產生器(Core Generator)來構造FIFO,可設置FIFO的參數,如深度和寬度;而設置FIFO的各種標誌和控制位元,如空滿、半滿全滿、半空全空、可編程滿和可編程空等標誌位元;寫入啟用、讀取啟用等控制位元,可方便實現與高速A/D和DSP連接的邏輯介面。FIFO的輸入輸出接腳如表所示:其中WR_EN由DSP的GPIO埠引出,控制數據是否寫入到FIFO中,輸出接腳中只用到了PROG_FULL即可與DSP進行數據傳輸。

FPGA的作用除了建構FIFO以實現數據通道多工外,還可作為協處理器進行即時要求性高的數據預處理(如插值、取平均、FIR濾波等),以減少DSP處理的數據量。設計中採用分散式演算法的FIR濾波,首先對ADC轉換後的數據進行FIR濾波,然後存入FIFO中以等待DSP的讀取。作為取代ASIC和DSP以實現前端數位訊號處理運算的元件,FPGA已減小了尺寸及功耗,且吞吐量更高,能進一步節省開發成本。

在FPGA設計中,需提供外部快閃記憶體來儲存FPGA的下載文件,上電後數據會自動下載到FPGA內部,以對FPGA進行配置。FPGA有多種配置方式,包括主串、從串、主並、從並、SPI、BPI、以及JTAG等方式。串列方式即逐位元串列配置,接線簡單,但速度比較慢,平行方式即8位元同時傳輸,速度快,但接線複雜。串列方式和平行方式都需要外加速閃記憶體作為配置文件的記憶體。本文設計範例採用C6416的多通道緩衝記憶體串列埠(McBSP),以SPI方式對FPGA進行配置。


表1:

介面和控制電路設計

系統的介面和控制電路主要包括以下兩個部份:

1. ADC與FIFO的介面電路

利用FPGA構造了兩個完全一樣的FIFO,將兩路A/D轉換數據分別送入兩個FIFO中,實現雙通道採樣數據的緩衝記憶體和傳輸。設計中A/D轉換時脈和FIFO寫入時脈為同一時脈源,自上電起,A/D和時脈電路一直處於工作狀態,不停的進行數據的轉換,但數據是否寫入到FIFO中,由FIFO的寫入啟用訊號來決定,當DSP發出寫入啟用訊號有效時,轉換數據才能儲存到FIFO中。從前面的A/D時序電路中可知,A/D轉換數據的輸出和轉換時脈有一定的相位差,在FPGA內部可透過延遲或時脈管理器來滿足設立時間和保持時間,保證數據不流失地傳輸到FIFO中。

2. FIFO與C6416的介面電路

C6416有兩個EMIF埠,即EMIFA和EMIFB,其中EMIFA的匯流排寬度支援64、32、16和8位元,尋址空間為1,024Mb;EMFIB的匯流排寬度支援16和8位元,尋址空間為256Mb。本文範例採用EMIFB作為與FIFO的介面,其匯流排寬度配置為16位元。EMIFB可以與各種外部記憶體實現無縫通訊,如SBSRAM、SDRAM、非同步設備(包括SRAM、ROM和FIFO)和外部共享記憶體設備等。設計中EMFIB和FIFO的通訊採用非同步讀取方式,實現數據的可靠傳輸,即透過由/ARE和地址來實現對兩個同步FIFO的非同步讀取,其控制介面訊號的連接關係為:

RD_CLK=/ARE

RD_EN1=A20

RD_EN2=A19

設計中將兩個FIFO的記憶體空間都映射到EMIFB的BCE2中,當FIFO的可編程滿訊號PROG_FULL有效時,引發外部中斷,觸發EDMA以實現數據的快速傳輸。由於FIFO不需要地址線,可以透過簡單的通訊來產生EDMA的讀取地址,實現EDMA分時讀取兩個FIFO。非同步讀取FIFO必須滿足下列時序關係:


非同步讀取時序如圖2所示,其中EMFIB的時脈可以是外部時脈源,也可以是由CPU時脈分頻獲得。設計中使用外部時脈源,其頻率為133MHz,可以根據EMIFB的讀寫控制暫存器配置Setup、Strobe和Hold的值。


圖2:非同步讀取時序圖

本文小結

本文系統地介紹了一種由數位訊號處理器TMS320C6416、可編程邏輯元件Spartan3E構成的高速數據採集系統。實驗顯示,系統具有抗干擾強、可靠性高、失碼率低等優點。設計中採用了FPGA來構造FIFO,可根據不同的應用場合對FPGA編程以滿足設計要求,因此靈活性較大,是一種較好的高速數據採集方案。此外,採用了EDMA傳輸,適於在即時性要求較高的各種高速數據採集系統中應用。該數據採集卡採用標準擴展匯流排介面,可以與合眾達公司的DEC6000系列開發板連接。

作者:賈龍

開發工程師

truelong@seeddsp.com

北京合眾達電子技術有限責任公司




投票數:   加入我的最愛
我來評論 - 在高速訊號採集系統中用FPGA實現非同步...
評論:  
*  您還能輸入[0]個字
*驗證碼:
 
論壇熱門主題 熱門下載
 •   將邁入40歲的你...存款多少了  •  深入電容觸控技術就從這個問題開始
 •  我有一個數位電源的專利...  •  磷酸鋰鐵電池一問
 •   關於設備商公司的工程師(廠商)薪資前景  •  計算諧振轉換器的同步整流MOSFET功耗損失
 •   Touch sensor & MEMS controller  •  針對智慧電表PLC通訊應用的線路驅動器
 •   下週 深圳 llC 2012 關於PCB免費工具的研討會  •  邏輯閘的應用


EE人生人氣排行
 
返回頁首