2023年基於FPGA的DDS設計版

2023-02-11 02:57:05 字數 3717 閱讀 5594

一、實驗名稱:基於fpga的dds訊號源設計

二、技術規範:

1.實驗目標:

設計乙個直接數字頻率合成(dds,direct digital synthesis),dds是一種新型的頻率合成技術。dds 技術是一種把一系列數字形式的訊號通過dac 轉換成模擬訊號的合成技術。

dds 技術具有頻率切換時間短,頻率解析度高,頻率穩定度高,輸出訊號的頻率和相位可以快速切換,輸出相位可連續,並且在改變時能夠保持相位的連續,很容易實現頻率、相位和幅度的數字控制。它在相對頻寬、頻率轉換時間、相位連續性、高解析度以及整合化等一系列效能指標方面遠遠超過了傳統頻率合成技術。因此在現代電子系統及裝置的頻率源設計中,尤其在通訊領域,直接數字頻率合成器的應用越來越廣泛。

2.實現功能:

本實驗最後將設計出乙個具有頻率控制和相位移控制功能的dds。

3.引腳:

本實驗有三個輸入埠,8位的頻率控制字埠,分別接8個開關按鍵,8位的相位控制字埠,分別接另外的8個開關按鍵,系統時鐘輸入埠;乙個8位輸出埠,接d/a的輸入埠。fpga板上的時鐘頻率為50mhz,本實驗將其10分頻後得到5mhz再使用。

三.總體設計方案;

原理:實驗採用目前使用最廣泛的一種dds 方式是利用高速儲存器作查詢表,然後通過高速dac 輸出已經用數字形式儲存的波形。

圖1:dds 系統的基本原理圖

圖1中虛方框部分是dds 的核心單元,它可以採用cpld/fpga 來實現。圖中的相位累加器由n位全加器和n位累加暫存器級聯而成,可對頻率控制字的二進位製碼進行累加運算,是典型的反饋電路。

頻率控制字m和相位控制字分別控制dds 輸出正(餘)弦波的頻率和相位。每來乙個時鐘脈衝,相位暫存器以步長m遞增。相位暫存器的輸出與相位控制字相加,其結果作為正(餘)弦查詢表的位址。

正(餘)弦查詢表的資料存放在rom中,內部存有乙個週期的正弦波訊號的數字幅度資訊,每個查詢表的位址對應於正弦波中0°~360°範圍內的乙個相位點。查詢表把輸入的址資訊對映成正(餘)弦波的數字幅度訊號,同時輸出到數模轉換器dac 的輸入端,dac輸出的模擬訊號經過低通濾波器 (lpf),可得到乙個頻譜純淨的正(餘)弦波。

dds 具體工作過程如下:每來乙個時鐘脈衝clk,n 位全加器將頻率控制資料m 與累加暫存器輸出的累加相位資料n 相加,把相加後的結果送至累加暫存器的輸入端。累加暫存器一方面將上一時鐘週期作用後所產生的新的資料反饋到加法器的輸入端,以使加法器在下一時鐘的作用下繼續與頻率控制資料m 相加;另一方面將這個值作為取樣位址值送入幅度/相位轉換電路,此電路根據取樣位址輸出相應的波形資料。

最後經d/a 轉換器和低通濾波器將波形資料轉換成所需要的模擬波形。

dds 輸出訊號的頻率由下式決定:q=()×clk (代表取樣點數,m 為頻率控制字、代表儲存器中儲存資料的多少,n 代表累加器的位數,clk 代表基準時鐘頻率) 。調節m 可以改變取樣的點數,從而改變頻率。

假定基準時鐘為70mhz,累加器為16 位,則clk=70mhz ,y==65536 (n=16),設m=12 則x==4096,所以q=(4096/65536) ×70=4.375mhz。可見,通過設定相位累加器位數n、頻率控制字m 和基準時鐘的值,就可以產生任一頻率的輸出。

dds 的頻率解析度定義為:q=clk/ 由於基準時鐘一般是固定的,因此相位累加器的位數就決定了頻率的解析度。

2.功能實現:

如果利用at29c010晶元實驗接線圖如下:

圖2:dds試驗連線圖

頂層模組圖:

圖3:dds頂層設計電路圖

3.系統總體框圖:

圖4:總體框圖

4.模組描述及功能實現(這裡採用的是自己編的rom,沒有用falsh晶元):

①頂層模組:頂層模組主要用於分頻,定義系統的輸入和輸出埠。由於實驗箱採用系統時鐘位50mhz,本實驗才有時鐘頻率為5mhz,所以本模組主要負責將時鐘進行10分頻。

模組將呼叫相位累加模組和rom模組。模組埠有:系統時鐘輸入埠(接系統時鐘),8位頻率控制字輸入埠和8位相位控制輸入埠(接16個開關按鍵),8位資料輸出埠(接d/a的8位輸入埠),復位輸入端(接乙個按鍵),分頻後的時鐘輸出(接d/a的時鐘輸入)。

②相位累加模組:相位累加主要是利用頻率控制字和相位控制字來累加出定址位址,n=n+m;address=n+p;其中n位累加暫存器,初期為0;m位頻率控制字;address為定址位址。模組埠有:

時鐘輸入埠(接頂層模組5mhz時鐘),復位輸入埠(接頂層模組復位端),8位頻率控制字輸入埠和8位相位控制輸入埠(分別接頂層模組的8位頻率控制字輸入埠和8位相位控制輸入埠),位址輸出埠(將位址通過頂層模組傳送給rom模組,8位)。

③rom模組:首先利用matlab生成乙個.hex檔案,.hex檔案儲存的是乙個深度為8192,寬度為8的正弦波形數碼訊號(資料不能超過255)。**為:

depth=8192儲存單元數;

widths=8資料寬度為8位;

n=0:1:8192;

s=sin(pi*n/125計算0~pi/2的sin值;

fidc=fopen('','wt以"wt"的形式開啟,\n為換行

% 寫入 %

fprintf(fidc,'depth=%d;\n',depth);

fprintf(fidc,'width=%d;\n',widths);

fprintf(fidc,'address_radix=uns;\n');

fprintf(fidc,'data_radix = uns;\n');

fprintf(fidc,'content begin\n');

for(x=1:depth)

fprintf(fidc,'%d\n', round(125*sin(pi*(x-1)/4096)+125));

endfprintf(fidc,'end;');

fclose(fidc);

然後在quartus下利用matlab生成的資料編寫乙個單口rom,並且生成對應的.v檔案,即rom模組。本模組的功能是通過傳送過來的位址,查詢位址所對應的資料,並將資料輸出。

生成的模組埠:位址輸入埠(接相位累加模組傳送過來的位址,13位),時鐘輸入埠(接分頻後的5mhz時鐘),資料輸出埠(8位)。

實驗結果及分析:

板子**:

將數字輸出接到da轉換晶元的8個輸入腳,用示波器檢測da的模擬輸出訊號。改變頻率控制字和相位控制字(由於濾波器原因,改變相位控制字沒有實際效果),觀察波形的改變。

頻率控制字為0

頻率控制字為128

理論值:q=(128/16384)×500k=3.90625khz(500k為分頻後的時鐘)

頻率控制字為64

理論值:q=(64/16384)×500k=1.953khz

頻率控制字為32

理論值:q=(32/16384)×500k=0.977khz

頻率控制字為16

理論值:q=(16/16384)×500k=0.488khz

頻率控制字為8

理論值:q=(8/16384)×500k=0.244khz

頻率控制字為4

理論值:q=(4/16384)×500k=0.122khz

頻率控制字為1

理論值:q=(1/16384)×500k=0.0305khz

總結:效果還不是很好,有點失真。實際資料與理論有點偏差而且頻率大偏差也有所增加,但是頻率越高波形效果越好。由於沒有濾波器,毛刺問題沒有得到很好的解決。

五.綜合布局佈線

頂層模組「dds」:

rom:

綜合佈線:

注:其實實驗最後得到的效果比上面的波形好些,只是當時找不到小容量u盤所以沒有把波形存下來。

基於FPGA的交通燈設計

數字系統課程設計報告書 目錄摘要1 1設計目的2 2設計內容及要求2 3系統整體方案及設計原理2 4各模組電路設計與實現3 4.1 分頻模組設計與實現3 4.1.1分頻模組圖 4.1.2分頻模組程式 4.2 交通燈控制器模組設計與實現4 4.2.1交通燈控制模組圖 4.2.2交通燈控制模組程式 4....

基於FPGA的函式發生器

姆潛電子測量技術 王金庭楊敏田浩 沈田第 卷第 年 月期 湖北經濟學院電子工程系武漢 中國地質大學機電學院武漢 摘要 介紹了基於 的函式發生器的設計 實驗和測試。系統運用了基於嵌入式處理器的 技術,以 公司的 系列 為平台,將微處理器 匯流排 數字頻率合成器 儲存器和 介面等部件整合在 一片 上,實...

基於FPGA的FIFO設計和應用

技術分類 可程式設計器件 2009 11 20 張奇山劉安芝劉希順 引言在利用dsp實現 實時跟蹤時,需要進行大量高速的影象採集。而dsp本身自帶的fifo並不足以支援系統中大量資料的暫時儲存,這就要求大的中間快取,而專用的高速fifo晶元 昂貴且容量受限,大大增加了商業成本,因此在實際應用中尋找f...