Matlab與FPGA數字信號處理系列——DDS信號發生器——Quartus ii 原理圖法利用 ROM 存儲波形實現DDS(1)

MATLAB 與 FPGA無線通信、圖像處理、數字信號處理系列
  1. 系統框圖
    基於FPGA的DDS信號發生器系統框圖如下圖所示,採取查表法。
    (1)對一個完整週期的波形進行採樣,將採樣點存在ROM中;
    (2)依次給出ROM的訪問地址,即可輸出一個完整的波形;
    (3)通過設置不同的頻率控制字可以讓ROM的訪問地址以不同的步進值訪問,這樣起到改變輸出波形的頻率的作用;
    (4)通過設置不同的相位控制字可以讓ROM的訪問時的初始地址改變,這樣起到改變輸出波形初始相位的作用。
    在這裏插入圖片描述
  2. DDS產生固定頻率和固定相位的正弦信號
    首先產生固定頻率和相位的正弦信號,一個週期採樣 256 點,數據位寬爲 8 位,需要:
    (1)在 ROM 中存儲波形,ROM 設置參數:單口ROM,數據深度 256,數據位寬 8 位,輸出後可以接 8 位的 DAC 數模轉換模塊;
    (2)使用一個計數器產生ROM的地址,計數器輸出位寬8位;
    (3)使用100 MHz的時鐘,時鐘週期爲 10 ns,每個時鐘輸出一個正弦波的採樣點,一個正弦波週期有 256 個點,需要 256 個時鐘週期,即 2560 ns,這樣,輸出的正弦波的頻率爲 100 MHz / 256 = 390.625 KHz。
Quartus ii 實現 8 位計數器教程——Verilog實現8位計數器

在這裏插入圖片描述
這樣設置後,即可產生一個標準正弦波,其參數爲:
(1)幅值由DAC決定,DAC選定後賦值即固定(比如 0 ~ 5V),不可通過FPGA調幅,後級可以通過 VGA(壓控放大器)等調幅;
(2)頻率爲 390.625 KHz,不可調頻;
(3)初始相位爲0。

  1. 設計過程
    (1)獲取sin波形的抽樣點
    使用Guagle_wave工具,查看->全局參數,設置全局參數如下
    在這裏插入圖片描述
    設定波形->正弦波,文件->保存,將256個採樣點保存爲sin.mif文件。mif文件是quartus軟件中ROM的存儲文件,內容包含存儲的數據和該數據在ROM中對應的地址。
    在這裏插入圖片描述

(2)ROM存儲波形
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
(3)計數器產生地址
在這裏插入圖片描述

Quartus ii 實現 8 位計數器教程——Verilog實現8位計數器
module count(
	clk,
	rst_n,
	count_out
);

input clk;
input rst_n;
output reg [7:0] count_out;

always @ ( posedge clk or negedge rst_n )
begin
	if( !rst_n ) begin
		count_out <= 8'b0;
	end 
	else begin
		count_out <= count_out + 1'b1;
	end 
end 

endmodule

在這裏插入圖片描述

(4)例化頂層文件
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

4.仿真結果
使用modelsim仿真分析,編寫test bench。
在仿真的時候,無法以BDF原理圖模式做頂層文件去調用(開發板實物可以,仿真還是要用verilog去例化),這時候需要新建一個 Verilog 文件,並設置爲頂層文件。
在這裏插入圖片描述

MATLAB 與 FPGA無線通信、圖像處理、數字信號處理系列
2017年全國大學生電子設計競賽綜合測評題目解析——Multisim仿真
Verilog學習筆記——有符號數的乘法和加法

歡迎關注:FPGA探索者
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章