精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于DDS原理設計信號發生器的方案

454398 ? 來源:博客園 ? 作者:Apollo-Mao ? 2020-10-19 11:50 ? 次閱讀

信號發生器又稱信號源或振蕩器,在生產實踐和科技領域中有著廣泛的應用。能夠產生多種波形,如三角波、鋸齒波、矩形波(含方波)、正弦波的電路被稱為函數信號發生器。函數信號發生器的實現方法通常是采用分立元件或單片專用集成芯片,但其頻率不高,穩定性較差,且不易調試,開發和使用上都受到較大限制。隨著可編程邏輯器件(FPGA)的不斷發展,直接頻率合成(DDS)技術應用的愈加成熟,利用DDS原理在FPGA平臺上開發高性能的多種波形信號發生器與基于DDS芯片的信號發生器相比,成本更低,操作更加靈活,而且還能根據要求在線更新配置,系統開發趨于軟件化、自定義化。本文研究了基于 FPGA的DDS信號發生器設計,實現了滿足預定指標的多波形輸出。

DDS建立在采樣定理基礎上,首先對需要產生的波形進行采樣,將采樣值數字化后存入存儲器作為查找表,然后通過查表讀取數據,再經D/A轉換器轉換為模擬量,將保存的波形重新合成出來。DDS基本原理框圖如圖1所示。

除了濾波器(LPF)之外,DDS系統都是通過數字集成電路實現的,易于集成和小型化。系統的參考時鐘源通常是一個具有高穩定性的晶體振蕩器,為各組成部分提供同步時鐘。頻率控制字(FSW)實際上是相位增量值(二進制編碼)作為相位累加器的累加值。相位累加器在每一個參考時鐘脈沖輸入時,累加一次頻率字,其輸出相應增加一個步長的相位增量。由于相位累加器的輸出連接在波形存儲器(ROM)的地址線上,因此其輸出的改變就相當于查表。這樣就可以通過查表把存儲在波形存儲器內的波形抽樣值(二進制編碼)查找出來。ROM的輸出送到D/A轉換器,經D/A轉換器轉換成模擬量輸出。

設計功能及端口

1.設計實現的功能

用一個8×128的ROM完成對所要顯示正弦波形數據的存儲,即生成正弦波的波形數據查找表,通過VerilogHDL編寫DDS直接數字頻率合成代碼,在Quartus II與modelsim工具軟件的環境中進行設計和仿真,要求能根據相位累加產生的地址并按照不同的頻率控制信號(freq)讀取ROM波形查找表中的數值做為輸出,并正確顯示波形。同時還可通過改變相移變量(pha)控制程序從不同的位置開始讀取ROM波形查找表中的數據。

2.輸入輸出端口

input wire clk; //時鐘

input wire rst;//復位信號(低電平有效)

input wire [6 : 0] freq;//頻率控制信號

input wire [6 : 0] pha;//相移變量信號

input wire key; //使能開關信號(高電平有效)

output wire [7 : 0] data; //ROM查找表數據

功能介紹

1.設計功能模塊介紹:

本次設計總體實現的是一個能產生正弦波形的DDS信號發生器,該

DDS信號發生器的程序代碼模塊主要有以下內容:

(1)ROM地址產生:

當時鐘的上升沿到來時,如果復位信號有效,則把地址變量addr清零;否則當使能開關信號key有效時,則將頻率控制字寫到內部寄存器里,再將頻率控制字和上一時刻的地址變量進行相加,將加的結果作為地址輸出。另外,還可通過頻率控制信號freq控制讀取頻率,通過相移變量信號pha控制初始讀取位置。

(2)ROM查找表:

當時鐘的上升沿到來時,如果復位信號有效,則把輸出置為零;否則根據ROM地址產生模塊產生的地址讀取ROM中存儲的數值。

另外需通過C語言生成ROM正弦波查找表數據,C語言程序代碼如下: #include “stdio.h”

#include “conio.h”

#include “math.h”

main()

{

int i;

float j;

int y;

FILE *fp;

if((fp = fopen(“rom.mif”, “wa”)) == NULL)

exit(1);

for(i = 0; i 《 128; i++)

{

y = 128 * sin(j) + 128;

fprintf(fp, “%d:%d;\n”, i, y);

j += 2 * 3.1416 / 128;

}

fclose(fp);

printf(“Hello, world\n”);

getch();

}

2.系統結構框圖:

設計源代碼

1.設計源代碼:

module DDS(clk,rst,freq,pha,key,data);

input wire clk; //時鐘 input wire rst; //復位信號(低電平有效) input wire [6 : 0] freq; //頻率控制信號 input wire [6 : 0] pha; //相移變量信號 input wire key; //使能開關信號(高電平有效) output wire [7 : 0] data; //ROM查找表數據

reg [6 : 0] addr; reg [6 : 0] phase; reg [6 : 0] frequency;

always @(posedge clk) begin if(key == 1) begin phase 《= pha; //將相移變量值賦給寄存器phase frequency 《= freq; //將頻率控制變量值賦給frequency end end always @(posedge clk or negedge rst) begin if(!rst) begin addr 《= 0; //復位 end else begin if(key == 1) addr 《= phase; //將寄存器phase存儲的相值賦給addr else addr 《= addr + frequency; //ROM地址產生 end end rom1 rom_1( .address(addr), .clock(clk), .q(data) ); //實例化調用rom1波形查找表endmodule

驗證方案和仿真激勵:

`timescale 1 ns/ 100 ps //設置仿真的時間單位和時間精度

module stimulus;

reg clk,rst;

reg[6:0]freq,pha;

reg key;

wire [7:0] data;

initial

begin

freq=7‘d2;

pha=7’d0;

key=1‘b0;

#20 key=1’b1;

#100 key=1‘b0;

end

initial

begin

clk=1’b0;

rst=1‘b1;

#40 rst=1’b0;

#40 rst=1‘b1;

end

always #10 clk=~clk; //時鐘翻轉

DDS

LXC(.clk(clk),.rst(rst),.freq(freq),.pha(pha),.key(key),.data(data));

endmodule

功能仿真

(1)在ModelSim 中對電路設計進行功能仿真

仿真波形如下:

(2)在Quartus II 中對電路設計進行功能和時序仿真 仿真波形如下:

時序仿真波形如下:

仿真分析:通過觀察在ModelSim和Quartus II中的仿真波形,分析其完成的功能與設計預期一致,說明本設計能較好的完成設計所需達到的目標。

綜合布線與電路圖

綜合與布局布線:

1、下圖為綜合完并且成功后小窗口上生成的報告,報告中顯示出了綜合的工程名、引腳及所用的芯片的類型和型號。

綜合完后生成的電路圖如下:

綜合布局布線報告

綜合完后在Quartus生成了一個名為“DDS.map.rpt”的文件,即為綜合布局布線報告。

下載代碼和引腳分布報告

下載代碼

后仿完后在仿真目錄下的\simulation\modelsim路徑下生成了一個“ DDS_v.sdo”其即為下載代碼文件。

引腳分布

綜合完后在工程目錄下生成了一個“top.pin”文件,其即為引腳分布。
編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 濾波器
    +關注

    關注

    160

    文章

    7727

    瀏覽量

    177674
  • 存儲器
    +關注

    關注

    38

    文章

    7452

    瀏覽量

    163604
  • DDS
    DDS
    +關注

    關注

    21

    文章

    631

    瀏覽量

    152541
  • 信號發生器
    +關注

    關注

    28

    文章

    1452

    瀏覽量

    108652
  • 晶體振蕩器
    +關注

    關注

    9

    文章

    616

    瀏覽量

    29058
收藏 人收藏

    評論

    相關推薦

    信號發生器單位怎么換mv

    在電子測量領域,信號發生器是一種非常重要的儀器,它能夠產生各種類型的電信號,如正弦波、方波、三角波等。信號發生器的輸出電壓通常以毫伏(mV)
    的頭像 發表于 06-03 14:19 ?850次閱讀

    數字信號發生器頻率調整方式有幾種

    和穩定性至關重要。本文將詳細介紹數字信號發生器的頻率調整方式,包括直接數字合成(DDS)、相位鎖定環(PLL)、直接頻率合成(DFS)等。 1. 直接數字合成(Direct Digital Synthesis,
    的頭像 發表于 06-03 14:08 ?1297次閱讀

    信號發生器頻率怎么調

    信號發生器是一種電子設備,用于產生具有特定頻率、幅度和波形的電信號。這些信號可以用于測試和校準各種電子設備,如放大器、濾波、振蕩
    的頭像 發表于 06-03 11:06 ?1496次閱讀

    信號發生器的sync什么意思

    信號發生器是一種電子設備,用于產生具有特定頻率、幅度和波形的電信號。這些信號可以用于測試和測量電子設備的性能,或者作為其他電子系統的輸入信號
    的頭像 發表于 06-03 10:59 ?2791次閱讀

    信號發生器的使用方法 信號發生器的幅值是有效值嗎

    信號發生器是一種電子設備,用于生成具有特定特性的電信號,如正弦波、方波、鋸齒波等。信號發生器廣泛應用于測試和測量領域,如電子電路設計、通信系
    的頭像 發表于 06-03 10:56 ?2515次閱讀

    如何使用psoc4系列芯片去設計DDS信號發生器?

    如何使用psoc4系列芯片去設計DDS信號發生器
    發表于 05-23 06:51

    函數發生器、信號發生器和波形發生器的區別

    在電子測試和測量領域,函數發生器信號發生器和波形發生器都是重要的測試儀器,它們各自具有獨特的功能和應用場景。本文將詳細介紹這三種發生器的原
    的頭像 發表于 05-15 14:49 ?1463次閱讀

    基于FPGA 的DDS正弦信號發生器的設計和實現

    電子發燒友網站提供《基于FPGA 的DDS正弦信號發生器的設計和實現.pdf》資料免費下載
    發表于 03-24 09:34 ?8次下載

    proteus信號發生器怎么設置方波

    Proteus信號發生器是一種強大的虛擬儀器,可以生成各種類型的電子信號,包括方波信號。在本文中,我們將詳細介紹如何在Proteus信號
    的頭像 發表于 02-23 16:44 ?9114次閱讀

    函數發生器信號發生器的區別和聯系

    函數發生器信號發生器是電子工程領域常用的兩種設備,它們在實驗室和工業制造領域中扮演著重要的角色。盡管兩者在名稱和功能上有一定的相似性,但它們的原理和應用有所不同。本文將詳細探討函數發生器
    的頭像 發表于 02-23 16:10 ?2082次閱讀

    信號發生器是干什么用的 信號發生器和示波器怎么連接

    信號發生器是一種用于產生各種電信號的設備,它在電子設備測試、電路調試、教學實驗等領域得到廣泛應用。信號發生器可以產生不同頻率、幅度、波形和相
    的頭像 發表于 01-30 10:08 ?2806次閱讀

    信號發生器是干什么用的 信號發生器的使用方法

    信號發生器是一種電子測試儀器,用于產生各種類型的電信號。它可以在實驗室、工廠和其他領域提供標準化的、可重復的信號,用于測試和驗證其他電子設備的性能。
    的頭像 發表于 01-19 14:51 ?2884次閱讀

    信號發生器如何發出雙脈沖?

    信號發生器如何發出雙脈沖? 信號發生器是一種用于產生各種信號波形的儀器。雙脈沖信號是一種特殊的
    的頭像 發表于 12-21 15:03 ?2013次閱讀

    信號發生器怎么輸出調制信號 信號發生器輸出信號衰減如何調整?

    信號發生器怎么輸出調制信號 信號發生器輸出信號衰減如何調整?
    的頭像 發表于 12-21 14:56 ?5700次閱讀

    信號發生器的占空比是什么 信號發生器占空比怎么設置

    信號發生器的占空比是什么 信號發生器占空比怎么設置? 信號發生器的占空比是指方波波形中高電平和低
    的頭像 發表于 12-21 14:02 ?3318次閱讀