基于SOPC的頻譜分析儀設計與研制
3.1.2 硬件FFT IP CCore的定制與集成
FFT運算器采用FFT Core實現(xiàn),其引擎結構為雙Sin―gle―output,I/O數據流采用突發(fā)(Burst)方式。FFT Core采用Atlantic Interface協(xié)議,輸入接口視為主接收器,輸出接口視為主發(fā)送器。
具體的工作流程:系統(tǒng)復位后,數據源將master sink day置位,表示有采樣數據等待輸入;作為回應,F(xiàn)FTCore將mas―te_sink_ena置位,表示可以接收輸入數據;數據源加載第一個復數數據,同時master_sink_sop置位,表示輸入數據塊的起始;下一個時鐘,master_sink_sop被清零,輸入數據按照自然順序被加入。輸入數據達到512點時。系統(tǒng)自然啟動FFT運算。通過inv_i信號的置位/清零可以改變單個數據塊的FFT轉換方向,inv_i信號必須和master_sink_sop信號嚴格同步。當FFT轉換結束時,子接收器已經將master_source_dav信號置位,表示子接收器可以接收FFT的轉換結果:同時,master_source_ena信號置位,F(xiàn)FT Core按照自然順序輸出運算結果:在輸出過程中.master_source_sop和mas―ter_soure_eop信號被置位,表示輸出數據塊的起始和結束。具體接口定義如表1所示。
3.1.3 FIFO硬件設計
FIF0是一種先進先出的數據緩存器,根據FIFO工作的時鐘域,可以將FIF0分為同步FIF0和異步FIFO。FIF0的一些重要參數如下:
FIFO的寬度:指的是FIF0一次讀寫操作的數據位。
FIFO的深度:指的是FIFO可以存儲多少個N位的數據。
設計中采用了寬度為16位,深度為256的異步FIF0。
3.1.4 I2C總線設計
I2C總線是由數據線SDA和時鐘SCL構成的串行總線.可發(fā)送和接收數據。I2C總線在傳送數據過程中共有3種類型信號,分別是:開始信號、結束信號和應答信號。
開始信號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送數據。
結束信號:SCL為低電平時,SDA由低電平向高電平跳變,結束傳送數據。
應答信號:接收數據的IC在接收到8 bit數據后,向發(fā)送數據的IC發(fā)出特定的低電平脈沖,表示已收到數據。其數據傳送過程如圖4所示。
3.1.5 串轉并數據采集模塊設計
由于從FPGA音頻接口采集來的信號是串行的,故此處理前應將此串行信號轉成并行信號,然后送NIOS核處理器進行處理。
設計中只需要16位數據,而從FPGA音頻采集輸出端ADCDAT輸出的24位的串行數據,考慮到數據計算可能溢出造成失真,因此必須對采樣所得數據作近似處理,故取其高15位數據,并將高位補零從而得到16位數據。其設計接口包括:clk為系統(tǒng)時鐘;AUD_ADCDAT為音頻采集數據輸入;data_out為并行輸出;Wr為輸出使能信號,用于控制向外輸出完整的數據。其仿真波形如圖5所示。
評論