a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 基于FPGA的流水線結構DDS多功能信號發生器的設計與實現

基于FPGA的流水線結構DDS多功能信號發生器的設計與實現

作者: 時間:2017-06-05 來源:網絡 收藏

隨著現代電子技術的不斷發展,在通信系統中往往需要在一定頻率范圍內提供一系列穩定和準確的頻率信號,一般的振蕩器已不能滿足要求,這就需要頻率合成技術。是第3代頻率合成器,它采用全數字技術,具有頻率切換時間短、頻率精度和分辨率高、輸出相位連續、易于控制等優點。

現場可編程門陣列()器件具有工作速度快、集成度高、可靠性高和現場可編程等優點,并且支持系統現場修改和調試,采用FP GA設計的具有電路簡單,性能穩定等特點,也能滿足絕大多數通信系統的使用要求。而在相位累加器的設計當中,傳統的累加器采用多位全加器直接相加的方式來實現,但隨著頻率控制字位數的增加,系統的實時性會大幅降低。針對這一問題,本文提出了一種流水線結構的相位累加器,該結構能夠縮短運算時間,提高整個系統的實時性。

本文介紹了DDS的基本原理,闡述了基于流水線結構的累加器的設計方案及具體的設計方法,采用嵌入式邏輯分析儀分析了正弦波、方波、鋸齒波和三角波等波形,并給出了計算機仿真和實驗結果,最后總結了該系統的特點。

1 DDS基本原理

如圖1所示,基本的DDS結構一般由4個模塊構成,分別是相位累加器、波形存儲器ROM,D/A轉換器和低通濾波器LPF。

系統時鐘fc為基準頻率源,K為頻率控制字,通過改變K的數值可以改變DDS的輸出頻率,在fc上升沿到來時,相位累加器會對頻率控制字K進行相位累加,累加結果即是波形存儲器ROM中幅值的地址數據,經過尋址,幅值由ROM輸出到D/A轉換器中,D/A轉換器將由二進制編碼的數字信號轉換為模擬信號輸出,該模擬信號再經過低通濾波器的濾波就可以得到平滑的波形曲線。

本文引用地址:http://www.j9360.com/article/201706/348986.htm

DDS的輸出頻率為:

fo=(K/2N)fc (1)

式中:N為相位累加器的位數;fc作為基準頻率源一般是給定的數值,因此,決定DDS輸出頻率的因素分別是頻率控制字K和相位累加器的位數N。當K取最小值1時,DDS的輸出頻率即是它的最小分辨率:

fo=fc/2N (2)

2 的設計

相位累加器是DDS的重要組成部分,在基準時鐘控制下,它用來實現線性數字信號的逐級累加,信號范圍從0加到累加器的滿偏值,由此得到相應的相位數據,而相位累加器的頻率就是DDS輸出信號的頻率。在通常的電路優化設計中,累加器模塊采用超前進位加法器,這種結構克服了串行進位引起的時間滯后,很大程度上提高了加法器的運算速度,但仍有不足。為了提高DDS頻率轉換速度和實時性,本文提出了一種流水線結構來優化DDS的相位累加器。

的結構特點很適合采用流水線設計,以Altera低成本系列CycloneⅡ為例,不僅有最多達68 416個邏輯單元(LE),每個LE均含有1個四輸入查找表LUT、1個可編程觸發器等。設計中可將1個算術操作分解成一些小規模的基本操作配置到LUT中,將進位和中間值存儲在寄存器中,在下一個時鐘內繼續運算,整個系統只需要極少或不需要額外的資源成本。
流水線結構的基本原理是將整個電路劃分為若干個流水線級,每級之間設置寄存器鎖存上一級輸出的數據;每一級只完成數據處理的一部分,一個時鐘周期完成一級數據處理,然后在下一個時鐘到來時將處理后的數據傳遞給下一級。第一組數據進入流水線后,經過1個時鐘周期傳到第二級,同時第二組數據進入第一級,數據隊列依次前進。每組數據都要經過所有的流水線級后才能得到最后的計算結果,但對整個流水線而言,每個時鐘都能計算出一組結果,所以平均計算一組數據只需要一個時鐘周期的時間,這樣就大大提高了數據處理速度。圖2為在QuartusⅡ開發環境下用原理圖輸入法搭建的結構圖。該結構由四級流水線構成,每一級流水線的輸入字節為8位,分別由8位數據鎖存器,8位數據全加器,1位數據鎖存器構成,整個系統可實現32位輸入控制字的相位累加功能。根據的工作原理,首先將32位輸入控制字a由低位到高位平均分為4段,每一段為8位,分別以a[0..7]到a[24..32]來命名。將a[0..7]作為第一級的輸入控制字輸入到8位數據鎖存器reg8中,在時鐘信號clk上升沿到來之時,reg8暫存的控制字會送入到8位數據全加器adder8中與另一個加法數和進位信號進行全加運算。另一個加法數是來自本級運算結果的反饋,為保持時鐘節拍的一致性,該反饋先輸入到另一個reg8中暫存,然后在時鐘上升沿到來之時輸入到全加器進行運算;進位信號來自第四級,該信號也是先暫存在一個1位數據鎖存器reg1中再輸入到全加器中進行運算。

第一級流水線經過全加器之后得出運算結果sum[0..7]和進位信號,sum[0..7]作為本級的輸出,它是整個累加結果的最低8位,而進位信號經過一個reg1之后作為下一級全加器的輸入。

第二級流水線的輸入信號是a[8..15],因為上一級共由兩級數據鎖存器構成,所以在做全加運算之前先分別將輸入信號和本級的反饋信號經過2次數據鎖存,然后再與來自上一級的進位信號進行全加運算,運算之后的結果作為本級的輸出sum[8..15],同時產生進位信號參與下一級的運算。第三級與第四級的工作原理同上,系統每增加一級流水線結構,鎖存器也會隨之增加一級。

圖3為在QuartusⅡ環境下得到的四級流水線仿真波形,時鐘信號的頻率是200 MHz,占空比為50 %,偏移量為0。為觀察方便,輸入控制字a和累加結果sum均用無符號十進制數來表示,且輸入控制字設定為32,由波形圖可見,該系統可以實現32位的相位累加。


3 任意波形發生器的設計及實現

DDS可以根據ROM中存儲數據的不同產生多種波形。在QuartusⅡ開發環境下搭建DDS系統模型需要訂制波形存儲器ROM,根據所需精度的不同,ROM中存儲的采樣點數也不同。當所需波形數據非常簡單時,可以在QuartusⅡ中定制ROM時直接將數據寫入新建的mif文件,然后保存即可,當所需波形數據較為復雜時,可以通過Matlab來自動生成所需波形的幅度數據,然后再通過調用mif文件來達到預期目標。以256個點的正弦波為例加以分析說明。

產生正弦波的Matlab程序如下:

width定義的是位寬,depth是深度,也就是將來生成的mif文件含有多少個存儲單元,在此處,設定了數據寬度為8位,存儲單元數為256,將來在QuartusⅡ中定制ROM時也要相應地將存儲單元數設定為256,根據DDS的基本原理,隨著設計點數的增加,所得的波形數據會更加準確,通過D/A轉化后在示波器上觀測的波形也越精準,但所需ROM的存儲空間將會呈指數增長,所以要根據實際的需要來綜合考慮存儲單元的個數。將上述指令在Matlab環境中運行之后就能夠得到所需mif文件。

在mif文件生成之后需要將此文件添加進入DDS系統的ROM中,然后進行全局的編譯,編譯通過后就可以進行工程的下載。具體的波形可以通過示波器來分析,或者使用Quartus Ⅱ自帶的嵌入式邏輯分析儀來分析。在使用嵌入式邏輯分析儀分析和觀察時,采樣信號要根據DDS的時鐘信號來確定,待測信號設定為DDS的輸出信號,當工程下載到FPGA芯片后,待測信號通過USB-BLASTER反饋至嵌入式邏輯分析儀中,選擇不同的數據類型,可以觀察到以十進制數據表示的數字信號或者以實際波形表示的模擬信號。

圖4為在在嵌入式邏輯分析儀中觀察到的正弦曲線。由波形圖可以看出,該設計方案可以實現正弦信號發生器的功能。按照相同的方法,修改產生mif文件的Matlb運算指令可以獲得方波,鋸齒波,三角波等波形。

圖5~圖7為能產生方波,鋸齒波和三角波波形的工程文件下載到FPGA芯片后通過嵌入式邏輯分析儀得到的波形圖。由波形圖可以看出,該系統能夠實現任意波形發生器的功能。


4 結語

本文將流水線相位累加器引進到DDS的設計中,利用電子設計自動化技術進行系統設計,并從嵌入式邏輯分析儀分析和觀察了相應的波形,仿真和硬件實驗驗證了設計方案的正確性。該系統具有結構簡單、運行速度快和占用芯片資源少等特點。隨著ROM查找表的擴大以及越來越多的直接計算波形數據的方法不斷被提出,對DDS整體實時性的要求也越來越高,尤其像目前較為流行的cordic算法及改進的其它插值算法,由于算法本身隨著級數的增多,整個系統的頻率轉換效率就會降低,而流水線相位累加器結構可以很好地解決這一問題。



評論


相關推薦

技術專區

關閉