FPGA+DSP的高速AD採集處理開發詳解

1微信

案例說明ide

1. Kintex-7 FPGA使用SRIO IP核做爲Initiator,經過AD9613模塊採集AD數據。AD9613採樣率爲250MSPS,雙通道12bit,12bit按照16bit發送,所以數據量爲16bit * 2 * 250M = 8Gbps
svg

2. AD數據經過SRIO由Kintex-7發送到C6678 DSP(Target)的0x0C3F0000~0x0C3F7FFF的地址空間,數據量爲32KByte,使用SWRITE方式,期間每傳16KByte數據後就發送一個DOORBELL信息,讓C6678作乒乓處理。Kintex-7經過SRIO與C6678鏈接,共4個lane,每一個lane的通訊速率爲5Gbps,數據有效帶寬爲20Gbps * 80% = 16Gbps函數

3. 採集到的AD數據可分別經過Xilinx VivadoTI CCS軟件查看波形,並在C6678作FFT處理工具

此開發案例基於創龍Kintex-7+C6678評估板TL6678F-EasyEVM展開。flex

 


AD採集處理案例視頻url

2spa

案例框圖.net

33d

案例演示

硬件鏈接



 (1) 將創龍AD9613高速AD模塊TL9613/9706F(此模塊集成高速DA,DA芯片爲AD9706)經過FMC接口與評估板鏈接。


(2) 信號發生器設置成兩路正弦波輸出,幅度設置:1.5Vpp以及無直流偏置,頻率設置:1MHz

(3) 信號發生器的兩路輸出分別鏈接到模塊的ADC_CHA、ADC_CHB


1.FPGA端

參考TL6678F-EasyEVM評估板光盤用戶手冊《基於下載器的程序固化與加載》文檔中「Vivado下bit文件加載步驟」章節,將tl_fmc_ad9613_srio_tl6678f_xc7k325t.bit文件燒錄到FPGA。燒寫bit文件時,指定調試文件tl_fmc_ad9613_srio_tl6678f_xc7k325t.ltx,能夠觀察到ILA調試信號,查看ADC採樣波形。

ADC兩路信號在ILA內嵌邏輯分析儀中均設置爲有符號數、模擬波形顯示,以下圖所示:

ILA觸發抓取兩路ADC採樣波形,以下圖所示(兩路正弦波形):

2.DSP端

參考TL6678F-EasyEVM評估板光盤用戶手冊《CCS工程的生成與加載》文檔,在「tl-fmc-ad9613-srio/DSP/src」目錄下創建CCS工程並導入到CCS軟件中編譯生成tl-srio-fft.out文件,經過仿真器加載tl-srio-fft.out文件到DSP端。將tl-srio-fft.out下載到C6678 Core0 ~ Core7核中,在tl-srio-fft.c窗口中紅色框標註的地方建立breakpoint,使DSP程序運行後能暫停,以下圖所示:

由於Core0負責系統初始化,爲確保其餘核跟Core0是同步開始傳輸,因此Core0核最後運行(Core0核可查看原始波形以及振幅波形,其餘核僅可查看原始波形)。運行程序,DSP程序正常暫停,可經過圖像波形形式查看數據,使用Graph工具,輸入下述配置,查看Channel A波形數據。

輸入下圖配置,查看Channel A通過FFT振幅波形

若出現波形顯示不正常或沒有波形產生,請參考如下操做:

1.請確保已正常加載GEL文件。

2.請確保Breakpoint設置成功,DSP程序可以暫停。

3.請硬件斷電重啓後從新燒寫FPGA和DSP程序。

頻率計算


FFT變換點數N=512,AD採樣率Fs爲250MSPS。某點n所表示的頻率爲:Fn=n*(Fs/N) (n >=0)。當n=0時,Fn爲0,由於第一點表示的是直流份量,因此頻率爲0,幅值也爲0,由於該正弦波沒有直流份量。

從上面的FFT振幅波形圖中能夠看出,Channel A在第6個點處有信號,因此對應的頻率爲Fn = 6 * (Fs/N) = 6 * 250MHz / 512 = 2.9296875 MHz。對應原始信號3MHz。

此處存在偏差,目前採樣點爲512個,一個點表示Fs/N= 488.281KHZ,因此若是須要提升精度,用戶能夠提升採樣點。

經過查看串口輸入數據,也可查看處理結果。其中peak point表明振幅圖峯值點橫座標;amplitude表明振幅圖幅值;input frequency根據振幅圖計算的輸入頻率。

4

關鍵代碼說明

1.管腳約束

例程管腳約束文件位於Vivado工程「src\constraints」目錄下。

2.FPGA端的代碼

頂層文件tl_fmc_ad9613_srio.v的主要功能:

(1)端口定義。

(2)使用STARTUPE2原語提供的EOS做爲系統復位信號,使用STARTUPE2原語提供的內部65MHz時鐘CFGMCLK做爲系統時鐘。

(3)配置時鐘芯片,輸出125MHz的參考時鐘爲SRIO IP核。

(4)調試Block design。

  能夠查看生成的RTL原理圖:

3.DSP端的代碼

(1)main函數初始化srio子系統,hwi中斷註冊。

(2)srio_db_isr響應srio doorbell中斷,以郵箱方式通知Core0 ~ Core7核同時進行FFT運算。

(3)tl_srio_fft任務等待郵箱信號,Core0 ~ Core7核同時進行FFT運算。

(4)tl_fft_amplitude任務等待信號量置位,Core0核進行FFT振幅運算,經過串口打印數據處理結果。

5

Block Design說明

Block Design以下


1.Select IO IP核配置說明

參考TL6678F-EasyEVM評估板光盤tl-fmc-ad9613例程的IP核與模塊介紹章節。

2.SRIO IP配置說明

SRIO鏈路寬度設置爲4個lane,通訊頻率爲5Gbps(即每一個lane均爲5Gbps),參考時鐘爲125MHz;設置8bit位寬的ID,且ID=0xFF

Port I/O Style選擇爲Initiator/Target模式,其中Condensed I/O接收和發送均使用一個AXI4-Stream通道,Initiator/Target接收和發送採用不一樣的AXI4-Stream通道。

I/O Format:I/O端口配置使用HELLO格式包。

其餘參數保持保持默認值便可。

更詳細說明請查閱IP核手冊:《pg007_srio_gen2.pdf》

3.data_to_srio RTL模塊功能

(1)連續不停地將AD9613採集的數據寫入FIFO

(2)控制FIFO讀操做,每次從FIFO讀取完指定的數據並經過AXI4-stream接口傳輸到SRIO IP。其中本例程每發送16KByte的數據就發送一個DOORBELL信息,通知Target(DSP)對數據作處理。

雙擊block degin中的模塊,可配置:

Doorb Triger Threshold: 門鈴觸發閾值,本例設置爲16384Bytes = 16KB,即經過SRIO發送16KB的數據後就發送一個DOORBELL信息。

Srio Doorb info1:發送完Doorb Triger Threshold個字節的數據以後發送的門鈴信息。

Srio Doorb info2:發送完2倍的Doorb Triger Threshold個數據以後發送的門鈴信息。

Srio Target Addr:SRIO Target的內存地址。(本例設置的爲DSP的MSMC地址0x0C3F0000)

Srio Target Id:SRIO Target的ID。

Srio Local Id:SRIO Iitiator的ID。

代碼解釋


(1)端口定義

(2)FIFO原語

配置FIFO大小爲36 Byte,讀寫數據的位寬爲64bit(FIFO深度爲512)。

ALMOST_EMPTY_OFFSET和ALMOST_FULL_OFFSET配置爲0x20,即32;即當FIFO寫入數據個數大於32個,ALMOST_FULL輸出高電平。

本例FIFO設置位寬爲64bit,因此64bit * 32 / 8 = 256 Byte,即當FIFO寫入數據大於256 Byte,ALMOST_FULL會輸出高電平。

由於SRIO的package最大有效數據爲256 Byte,爲了確保SRIO能傳輸完整的數據包,因此設置FIFO的門限值爲256Byte.

FIFO原語詳細說明請查閱:《ug473_7Series_Memory_Resources.pdf》

(3)FIFO寫控制

  • 由於AD9613輸出的AD數據爲雙通道的24bit,因此分別將兩個通道的數據補成16bit。而後保存到data_in_store中。

  • 由於FIFO的位寬64bit,而上個步驟將AD的雙通道數據補成了32bit,因此每存夠兩個32bit的AD數據,湊成64bit的data_in_store,再使能fifo_wr_en信號,把64bit的數據寫入FIFO。

  • 後寫入的數據存在高32位,發送到SRIO Target端(DSP),方便其按順序處理數據。

其中wr_cnt爲一個1bit,計數只有0和1兩個值。

(4)讀取FIFO數據並打包HELLO格式發送數據

    HELLO包頭拼接:

(6)狀態切換

本例設置的TOTAL_DATA_SIZE爲32KByte,即每發送16KByte的數據包以後發送一個門鈴信息。

6

資料下載

點擊如下連接或掃描二維碼,獲取本案例源碼TL6678F-EasyEVM評估板詳細資料。

http://site.tronlong.com/pfdownload

 


TL6678F-EasyEVM評估板

 更多推薦




想更多地瞭解創龍,歡迎與咱們聯繫:

銷售郵箱:sales@tronlong.com

技術郵箱:support@tronlong.com

創龍總機:020-8998-6280

技術熱線:020-3893-9734

創龍官網:www.tronlong.com

技術論壇:www.51ele.net

官方商城:https://tronlong.taobao.com



創龍官網

創龍微信公衆號

【長按識別二維碼關注咱們】



本文分享自微信公衆號 - FPGA開源工做室(leezym0317)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索