0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于DDS原理設(shè)計(jì)信號(hào)發(fā)生器的方案

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

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

DDS建立在采樣定理基礎(chǔ)上,首先對(duì)需要產(chǎn)生的波形進(jìn)行采樣,將采樣值數(shù)字化后存入存儲(chǔ)器作為查找表,然后通過(guò)查表讀取數(shù)據(jù),再經(jīng)D/A轉(zhuǎn)換器轉(zhuǎn)換為模擬量,將保存的波形重新合成出來(lái)。DDS基本原理框圖如圖1所示。

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

設(shè)計(jì)功能及端口

1.設(shè)計(jì)實(shí)現(xiàn)的功能

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

2.輸入輸出端口

input wire clk; //時(shí)鐘

input wire rst;//復(fù)位信號(hào)(低電平有效)

input wire [6 : 0] freq;//頻率控制信號(hào)

input wire [6 : 0] pha;//相移變量信號(hào)

input wire key; //使能開(kāi)關(guān)信號(hào)(高電平有效)

output wire [7 : 0] data; //ROM查找表數(shù)據(jù)

功能介紹

1.設(shè)計(jì)功能模塊介紹:

本次設(shè)計(jì)總體實(shí)現(xiàn)的是一個(gè)能產(chǎn)生正弦波形的DDS信號(hào)發(fā)生器,該

DDS信號(hào)發(fā)生器的程序代碼模塊主要有以下內(nèi)容:

(1)ROM地址產(chǎn)生:

當(dāng)時(shí)鐘的上升沿到來(lái)時(shí),如果復(fù)位信號(hào)有效,則把地址變量addr清零;否則當(dāng)使能開(kāi)關(guān)信號(hào)key有效時(shí),則將頻率控制字寫(xiě)到內(nèi)部寄存器里,再將頻率控制字和上一時(shí)刻的地址變量進(jìn)行相加,將加的結(jié)果作為地址輸出。另外,還可通過(guò)頻率控制信號(hào)freq控制讀取頻率,通過(guò)相移變量信號(hào)pha控制初始讀取位置。

(2)ROM查找表:

當(dāng)時(shí)鐘的上升沿到來(lái)時(shí),如果復(fù)位信號(hào)有效,則把輸出置為零;否則根據(jù)ROM地址產(chǎn)生模塊產(chǎn)生的地址讀取ROM中存儲(chǔ)的數(shù)值。

另外需通過(guò)C語(yǔ)言生成ROM正弦波查找表數(shù)據(jù),C語(yǔ)言程序代碼如下: #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.系統(tǒng)結(jié)構(gòu)框圖:

設(shè)計(jì)源代碼

1.設(shè)計(jì)源代碼:

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

input wire clk; //時(shí)鐘 input wire rst; //復(fù)位信號(hào)(低電平有效) input wire [6 : 0] freq; //頻率控制信號(hào) input wire [6 : 0] pha; //相移變量信號(hào) input wire key; //使能開(kāi)關(guān)信號(hào)(高電平有效) output wire [7 : 0] data; //ROM查找表數(shù)據(jù)

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; //復(fù)位 end else begin if(key == 1) addr 《= phase; //將寄存器phase存儲(chǔ)的相值賦給addr else addr 《= addr + frequency; //ROM地址產(chǎn)生 end end rom1 rom_1( .address(addr), .clock(clk), .q(data) ); //實(shí)例化調(diào)用rom1波形查找表endmodule

驗(yàn)證方案和仿真激勵(lì):

`timescale 1 ns/ 100 ps //設(shè)置仿真的時(shí)間單位和時(shí)間精度

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; //時(shí)鐘翻轉(zhuǎn)

DDS

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

endmodule

功能仿真

(1)在ModelSim 中對(duì)電路設(shè)計(jì)進(jìn)行功能仿真

仿真波形如下:

(2)在Quartus II 中對(duì)電路設(shè)計(jì)進(jìn)行功能和時(shí)序仿真 仿真波形如下:

時(shí)序仿真波形如下:

仿真分析:通過(guò)觀察在ModelSim和Quartus II中的仿真波形,分析其完成的功能與設(shè)計(jì)預(yù)期一致,說(shuō)明本設(shè)計(jì)能較好的完成設(shè)計(jì)所需達(dá)到的目標(biāo)。

綜合布線與電路圖

綜合與布局布線:

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

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

綜合布局布線報(bào)告

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

下載代碼和引腳分布報(bào)告

下載代碼

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

引腳分布

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 濾波器
    +關(guān)注

    關(guān)注

    161

    文章

    7817

    瀏覽量

    178148
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7492

    瀏覽量

    163850
  • DDS
    DDS
    +關(guān)注

    關(guān)注

    21

    文章

    634

    瀏覽量

    152668
  • 信號(hào)發(fā)生器

    關(guān)注

    28

    文章

    1474

    瀏覽量

    108765
  • 晶體振蕩器
    +關(guān)注

    關(guān)注

    9

    文章

    621

    瀏覽量

    29124
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    DDS信號(hào)發(fā)生器支持單通道50個(gè)正弦載波!#信號(hào)發(fā)生器 #AWG #DDS

    信號(hào)發(fā)生器
    虹科衛(wèi)星與無(wú)線電通信
    發(fā)布于 :2024年12月23日 18:03:30

    FlexDDS-NG直接數(shù)字信號(hào)合成器(DDS)/波形發(fā)生器

    盛鉑科技FlexDDS-NG是一種單臺(tái)機(jī)箱最多可達(dá)12個(gè)通道相位連續(xù)直接數(shù)字信號(hào)合成器 (DDS)。其輸出頻率可達(dá)400MHz,該產(chǎn)品專(zhuān)為量子光學(xué)研究而設(shè)計(jì), 是直接滿足實(shí)驗(yàn)物理學(xué)家需求的下一代波形發(fā)生器
    的頭像 發(fā)表于 11-28 15:00 ?172次閱讀

    信號(hào)發(fā)生器單位怎么換mv

    在電子測(cè)量領(lǐng)域,信號(hào)發(fā)生器是一種非常重要的儀器,它能夠產(chǎn)生各種類(lèi)型的電信號(hào),如正弦波、方波、三角波等。信號(hào)發(fā)生器的輸出電壓通常以毫伏(mV)
    的頭像 發(fā)表于 06-03 14:19 ?1101次閱讀

    數(shù)字信號(hào)發(fā)生器頻率調(diào)整方式有幾種

    和穩(wěn)定性至關(guān)重要。本文將詳細(xì)介紹數(shù)字信號(hào)發(fā)生器的頻率調(diào)整方式,包括直接數(shù)字合成(DDS)、相位鎖定環(huán)(PLL)、直接頻率合成(DFS)等。 1. 直接數(shù)字合成(Direct Digital Synthesis,
    的頭像 發(fā)表于 06-03 14:08 ?1608次閱讀

    信號(hào)發(fā)生器頻率怎么調(diào)

    信號(hào)發(fā)生器是一種電子設(shè)備,用于產(chǎn)生具有特定頻率、幅度和波形的電信號(hào)。這些信號(hào)可以用于測(cè)試和校準(zhǔn)各種電子設(shè)備,如放大器、濾波、振蕩
    的頭像 發(fā)表于 06-03 11:06 ?1843次閱讀

    信號(hào)發(fā)生器的sync什么意思

    信號(hào)發(fā)生器是一種電子設(shè)備,用于產(chǎn)生具有特定頻率、幅度和波形的電信號(hào)。這些信號(hào)可以用于測(cè)試和測(cè)量電子設(shè)備的性能,或者作為其他電子系統(tǒng)的輸入信號(hào)
    的頭像 發(fā)表于 06-03 10:59 ?3249次閱讀

    信號(hào)發(fā)生器的使用方法 信號(hào)發(fā)生器的幅值是有效值嗎

    信號(hào)發(fā)生器是一種電子設(shè)備,用于生成具有特定特性的電信號(hào),如正弦波、方波、鋸齒波等。信號(hào)發(fā)生器廣泛應(yīng)用于測(cè)試和測(cè)量領(lǐng)域,如電子電路設(shè)計(jì)、通信系
    的頭像 發(fā)表于 06-03 10:56 ?3023次閱讀

    如何使用psoc4系列芯片去設(shè)計(jì)DDS信號(hào)發(fā)生器

    如何使用psoc4系列芯片去設(shè)計(jì)DDS信號(hào)發(fā)生器
    發(fā)表于 05-23 06:51

    函數(shù)發(fā)生器、信號(hào)發(fā)生器和波形發(fā)生器的區(qū)別

    在電子測(cè)試和測(cè)量領(lǐng)域,函數(shù)發(fā)生器、信號(hào)發(fā)生器和波形發(fā)生器都是重要的測(cè)試儀器,它們各自具有獨(dú)特的功能和應(yīng)用場(chǎng)景。本文將詳細(xì)介紹這三種發(fā)生器的原
    的頭像 發(fā)表于 05-15 14:49 ?1592次閱讀

    基于FPGA 的DDS正弦信號(hào)發(fā)生器的設(shè)計(jì)和實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《基于FPGA 的DDS正弦信號(hào)發(fā)生器的設(shè)計(jì)和實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 03-24 09:34 ?8次下載

    proteus信號(hào)發(fā)生器怎么設(shè)置方波

    Proteus信號(hào)發(fā)生器是一種強(qiáng)大的虛擬儀器,可以生成各種類(lèi)型的電子信號(hào),包括方波信號(hào)。在本文中,我們將詳細(xì)介紹如何在Proteus信號(hào)
    的頭像 發(fā)表于 02-23 16:44 ?1w次閱讀

    函數(shù)發(fā)生器信號(hào)發(fā)生器的區(qū)別和聯(lián)系

    函數(shù)發(fā)生器信號(hào)發(fā)生器是電子工程領(lǐng)域常用的兩種設(shè)備,它們?cè)趯?shí)驗(yàn)室和工業(yè)制造領(lǐng)域中扮演著重要的角色。盡管兩者在名稱(chēng)和功能上有一定的相似性,但它們的原理和應(yīng)用有所不同。本文將詳細(xì)探討函數(shù)發(fā)生器
    的頭像 發(fā)表于 02-23 16:10 ?2292次閱讀

    信號(hào)發(fā)生器是干什么用的 信號(hào)發(fā)生器和示波器怎么連接

    信號(hào)發(fā)生器是一種用于產(chǎn)生各種電信號(hào)的設(shè)備,它在電子設(shè)備測(cè)試、電路調(diào)試、教學(xué)實(shí)驗(yàn)等領(lǐng)域得到廣泛應(yīng)用。信號(hào)發(fā)生器可以產(chǎn)生不同頻率、幅度、波形和相
    的頭像 發(fā)表于 01-30 10:08 ?2956次閱讀

    信號(hào)發(fā)生器是干什么用的 信號(hào)發(fā)生器的使用方法

    信號(hào)發(fā)生器是一種電子測(cè)試儀器,用于產(chǎn)生各種類(lèi)型的電信號(hào)。它可以在實(shí)驗(yàn)室、工廠和其他領(lǐng)域提供標(biāo)準(zhǔn)化的、可重復(fù)的信號(hào),用于測(cè)試和驗(yàn)證其他電子設(shè)備的性能。
    的頭像 發(fā)表于 01-19 14:51 ?3149次閱讀