电子设计大赛:DDS 信号发生器

时间:2019-05-15 15:21:14下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《电子设计大赛:DDS 信号发生器》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《电子设计大赛:DDS 信号发生器》。

第一篇:电子设计大赛:DDS 信号发生器

DDS 信号发生器(1022)

产品应用: 模拟传感器信号 重现实际环境信号 电路功能测试 信号相位调试 科研与教育 最高输出频率 输出通道数 采样率 任意波长度

CH1 CH2MHz 2 100 MSa/s 2 pts – 4kpts 2pts – 1kpts 1 μHzmVpp ~ 10 Vpp(50 Ω),4 mV ~ 20 Vpp(高阻)mVpp ~ 3 Vpp(50 Ω),4 mV ~ 6 Vpp(高阻)14 bits 10 bits

USB Host & Device 无

台式函数/任意波形发生器 宽×高×深=232mm×108mm×288mm 2.7 kg

频率分辨率 幅度范围 垂直分辨率

CH1 CH2 CH1 CH2

标配接口 选配接口 产品类别 尺寸 重量 产品综述

函数/任意波形发生器采用直接数字频率合成(DDS)技术设计,能够产生精确、稳定、低失真的输出信号。产品特性

1.采用先进的DDS技术,双通道输出,内置频率计,25 MHz最高输出频率

2.LCD单色液晶显示屏

3.5种标准波形及48种预设任意波形输出,可编辑10组4 kpts任意波形

4.丰富的调制功能:AM、FM、PM、FSK,以及输出线性/对数扫描和脉冲串波形5.丰富的接口配置:标配USB Host,USB Device

第二篇:DDS函数信号发生器的设计

DDS函数信号发生器的设计、仿真及下载

一、实验设计

① 利用DDS(Direct DIgital Frequency Synthesis,即直接数字频率合成)技术产生稳定的正弦波,三角波和方波输出,输出频率为10~1000kHz且频率可调,步进为10Hz,1kHz,10kHz,100kHz。

② 用VerilogHDL进行建模和模拟仿真,再利用FPGA进行实现D/A转换。

③ 下载到DE0板上利用VGA端口的一个四位孔进行A/D转换显示在示波器上。

二、实验原理

一个直接数字频率合成器由相位累加器、波形ROM、D/A转换器和低通滤波器构成。DDS的原理框图如下所示:

图 1 直接数字频率合成器原理图

其中K为频率控制字,fc为时钟频率,N为相位累加器的字长,D为ROM数据位及D/A转换器的字长。相位累加器在时钟 fc的控制下以步长K作为累加,输出N位二进制码作为波形ROM的地址,对波形ROM进行寻址,波形ROM输出的幅码S(n)经D/A转换器变成梯形波S(t),再经低通滤波器平滑后就可以得到合成的信号波形了。合成的信号波形形状取决于波形ROM中存放的幅码,因此用DDS可以产生任意波形。【来自百度】

本设计中直接利用DE0开发板通过D/A转换得到输出波形,省略了低通滤波器这一环节。

DDS工作流程示意图:

DDS的具体实现框图:

三、实验内容:

1、相位累加器和数据锁存器的设计

本设计采用模24的二进制累加器和寄存器,其中累加器和寄存器在一个模块中,只取锁存数据的高十位作为查表的地址值。//地址计数器模块;

module counter(clk,fre_word,address);input clk;

//声明系统时钟为clk

input [23:0] fre_word;

//声明24为频率控制字

output reg [9:0] address;

reg [23:0] phaseadder;always @(posedge clk)begin

phaseadder=phaseadder+fre_word;address=phaseadder[23:14];//地址取输出锁存后十位(对应波形为一个周期取1024点)

end endmodule2、波形存储器设计

本设计要求DDS系统能输出方波、三角波及正弦波三种波形。可以调用FPGA的LPM_ROM模块制作三张ROM表,地址计数器可以同时访问这三张表,再使用数据选择器输出指定波形。实际上,方波,三角波的实现算法比较简单,所以只把正弦波的算法用ROM实现。//方波产生模块

module squwave(clk,address,qsquare);

input clk;

//系统时钟;input [9:0] address;

//10位地址输入信号;

output reg [7:0] qsquare;//输出方波幅度信号8位宽送至DAC

always @(posedge clk)

if(address<=10'b01_1111_1111)qsquare[7:0]=8'b1111_1111;else qsquare[7:0]=8'b0000_0000;endmodule

//三角波产生模块

module triawave(clk,address,qtriangle);input clk;

input [9:0] address;output reg [7:0] qtriangle;always @(posedge clk)begin if(address<=10'b01_1111_1111)qtriangle[7:0]=address[8:1];else qtriangle[7:0]=~address[8:1];end endmodule

//正弦波形文件制作(C语言)#include #include void main(){ int s;int i;FILE* fp;fp=fopen(“1024.mif”,“w+”);fprintf(fp,“--MAX+plusII-generated Memory Initialization Filen”);fprintf(fp,“--By 00022809nnnnn”);fprintf(fp,“WIDTH=8;nn”);fprintf(fp,“DEPTH=1024;nn”);fprintf(fp,“ADDRESS_RADIX=HEX;nn”);fprintf(fp,“DATA_RADIX=HEX;nn”);fprintf(fp,“CONTENT BEGINn”);for(i=0;i<1024;i++){

s=128+sin(atan(1.0)*8/1024*i)*127;

fprintf(fp,“%xt:t%x;n”);} fprintf(fp,“END;n”);fclose(fp);} 生成mif格式文件,然后可以调用LPM_ROM模块实现正弦波产生模块。

3、波形的综合输出

DDS系统中产生了三种波形,但是在每种情况下只输出一种波形,因此要设计一个多路选择器完成这种功能。输出何种波形由外部开关控制。//boxing.v module boxing(clk,address,wavemode,wavevalue);

input clk;

input [1:0] wavemode;

//波形模式信号

input [9:0] address;

//十位地址输入信号

output [7:0] wavevalue;

//对应不同的波形输出

reg [7:0] wavevalue;wire [7:0] q,qsquare,qtriangle;sinwave a(address,clk,q);

//调用正弦波产生模块

squwave b(clk,address,qsquare);//调用方波产生模块

triawave c(clk,address,qtriangle);//调用三角波产生模块 always @(posedge clk)case(wavemode)2'b01:wavevalue=q;//01代表正弦波

2'b10:wavevalue=qsquare;

//10代表方波

2'b11:wavevalue=qtriangle;

//11代表三角波

endcase endmodule

4、工作模式控制模块的设计

本设计包括了开关模块和工作状态转换模块。先将开关调好状态,每按一次键程序根据所选状态进行工作。(由于DE0板上时钟为50MHz则变化较快,所以增加一个控制键,工程模式状态由此键控制。)//控制模块

module control(clk1,keyin,wavemode,length,single_state,single_frc);

input [3:0] keyin;

//四位状态信号输入

input clk1;

//按键控制状态的输入

input [1:0]single_state;

//输入的波形模式信号

input [1:0]single_frc;

//频率及步进控制信号

output reg [1:0] wavemode;

//波形模式输出信号

output reg [23:0] length;

//输出波形控制字

reg [3:0] key;

always @(posedge clk1)

begin

key=keyin;case(key)4'b0001: begin wavemode=2'b01;length=24'd3;end

4'b0010: begin case(single_state)

2'b01:wavemode=2'b01;

2'b10:wavemode=2'b10;

2'b11:wavemode=2'b11;

default: begin wavemode=2'b01;end

endcase

end

4'b0100: begin case(single_frc)

1:length=24'd3;

//10~10kHz

2:length=24'd3355;//10kHz~100kHz

3:length=24'd33554;//100kHz~2000kHz

default: begin length=24'd671088;end //大于2000kHz

endcase

end

4'b1000: begin case(single_frc)

0:length=length+24'd33554;

//步进为100kHz

1:length=length+24'd3;

//

10Hz

2:length=length+24'd336;

//

1kHz

3:length=length+24'd3355;//

10kHz

endcase

end

endcase

end

endmodule

5、DDS函数信号发生器顶层设计

顶层文件是将上述几个模块联系在一起就可以得到DDS核心实现模块。//顶层文件

module dds(clk,clk1,keyin,wavevalue,single_state,single_frc);input clk,clk1;

//系统时钟和控制按键

input [3:0] keyin;

//四位状态输入信号

input [1:0]single_frc;

//频率及步进输入模式信号

input [1:0]single_state;

//波形选择开关

output [7:0] wavevalue;

//输出波形信号

wire [9:0] address;

wire [1:0] wavemode;wire [23:0] length;control u1(clk1,keyin,wavemode,length,single_state,single_frc);//调用其他三个模块

counter u2(clk,length,address);boxing u3(clk,address,wavemode,wavevalue);endmodule

五、实验操作

操作软件QuartusII9.1及Modelsim,这两种软件的用法在此不再细谈。下载后示波器显示如下:

六、实验总结:

做完这次实验,我感觉DDS对于我们这些初学者来说一时很难接受,但是我们需要通过自己以及他人的见解来不断消化知识,一点一点去理解。最后做出来波形的时候确实很高兴,这是对我们这几天的学习的肯定,以后还要不断的去学习去理解FPGA以及VerilogHDL,坚持不懈,不管它有多难。

第三篇:电子设计大赛信号发生器心得总结(共)

电子设计大赛信号发生器心得总结

电子设计大赛结束了半个月了,也就是我们的培训过去半个多月了。回头想想还是记忆犹新。这一个多月是那么短暂,却又是那么的充实,空前的充实,比奋战高考是还要紧张。归根结底是我们学到了很多知识,特别是实际的动手能力。这是我们平时学不到的,或者说是能学

到但条件是很有限的。

我先从几方面谈谈我的收获。

(1)和老师之间:

和老师难得有这么亲近的机会,指导我们的几个老师只是平时见过,有的教过我们课,只是授课与听课的关系。而这次大赛是我们师生之间有个更深的一层含义—朋友,合作者。每个老师都是给我们掏心窝子的交流,督促我们学习,真的是想让我们学到点东西。老师一再强调要我们和他们交流,有时甚至是老师主动找我们学生交流的。最后做项目的几个晚上大部分老师是陪我们一起通宵的。实际上即便是我们充实的学了一个月,以我们的能力完成电子设计大赛的题可以说是不可能的。所以老师一再强调要和他们交流。最后完成项目还是靠老师的帮助,关键是我们必须参与进去,过程一定要有。完成项目的过程中会遇到种种问题,和老师一起解决问题的过程,是最有价值的。

(2)和同学之间

我是计算机班的,最后参赛的共有18人,其中15人是医电班的,三人是我班的。参赛的都是相对比较优秀的同学。有的以前甚至没见过。现在在一起上课,讨论问题,吃饭。象一个大家庭。有问题先和别的同学讨论,解决不了再去找老师。大家共同分享解决问题的方法经验。自己相处来的好方法和同学一起分享一下,一来别人会说我聪明,二来别人想出来好方法也会和我分享的,这样就形成了良性循环的过程。这次大赛是和理工大学的本科生一起上课的。我们是大二-大三,他们是大三-大四,水平也相对比我们高,我有问题还是经常请教他们的。还好他们都挺热心的。我和一个叫张书平的挺熟的,他很聪明,学东西上手很快,和他一起学习也刺激的我反应变快了。

(3)和组员之间

电子设计大赛我是和我班的曲世静刘友平一组的。和他们相对熟一点。现在想想感觉挺亲的。三个人合作一个项目首先要团结,其次才是分工。我们三人就是一个团队,一个整体。一个项目需要一个团队来完成。也就是人们常说的teamwork.。这是我们第一次团队合作的经历,以前只是概念层的teamwork,有了这次经历,就可以说是实践层的teamwork了。再次强调一个团队就是一个整体,首先要团结一致,再是合理分工。团结不只是心理上团结更重要的是向一个方向共同努力。合理分工真谛是同一时间每个人并行的工作。有时却不得不串行工作。既是下一步工作是在上一部工作必须完成的基础上才能开始着手的,因为完成一个项目往往有时间限制的。所以每一步都必须抓紧时间来完成,否则会耽误下一步的工作的。通宵也是常理之中的。这是其他组员在适当的情况下先休息,说不定下一个晚上你就要熬夜甚至

通宵了。

这次培训我是数电组的。我们主要学的是可编程逻辑器件FPGA(field programmable gate array)的应用。FPGA是一种集成度很高的PLD(编程逻辑器)。在一块FPGA芯片上可以实现各种数字电FPGA的功能往往不局限与数字电路上,它的强大功能主要用于设计数字电子系统,来优化算法。当然能实现常见的组合辑电路,时序逻辑电路。所有工作是在QUARTUS 软件开发平台上完成的。实现过程可以通过软件编程或者图形输入法完成软件系统,然后进

行编译,仿真正确后下载到FPGA芯片上,该芯片就能实现所要的逻辑功能。

刚接触FPGA是李丕丁博士给我们介绍VHDL(V-hard description language)硬件描述语言开始的。几乎所有的电子系统都可以用VHDL编出来。当天晚上李老师给我们留的作业是编出一个象五分频,占空比2:3的分频计数器出来。因为是刚接触一天做起来还是有难度的。自己先试着编了一下,结果没能实现,就和本科的同学交流讨论了一下,取了点经验,自己也就做出来了。第二天李老师给我们画了四个D触发器,连接起来是一个移位寄存器,让我们用VHDL来实现,一开始真的是一头雾气水,不知道如何下手。其他同学也是这样的反映。见到这种情况,老师们商量了一下,再把基础的给我们讲一下是必要的。所以我们就用VHDL从与,或,非门等基础的开始一一练习,再到编码器,译码器,选择器计数器。一直练习到这些基本的逻辑都能自己独立编出来。这样才对自己有了信心,更进一步了解了VHDL。平时练习的很多还给自己出题目做,例如完成一个并入串出的移位寄存器等等。

因为FPGA的输入输出,以及处理的全是数字量,既是逻辑高低电平0,1。所以单独一块FPGA芯片是不能完成项目的。要完成的项目都会有模拟量的,比如再示波器上看到的某个波形就是一般都是模拟量。这就用到A D,DA转换,必须也要把这个掌握起来,第一周的后三天就和单片机组的一起听莫老师讲的相关的内容。是张老师给我们讲的有关下载的知识,下载的应用让我们见识到了它的功能。下载就是把从软件编好的程序下载到FPGA芯片上,下载线

一端接到电脑的并行IO口上,另一端接到FPGA芯片上。操做软件就能实现下载。

卜老师给我们讲了quartus的图形输入法,这种方法很好用,就是在软件平台上搭建数字电路。Quartus 自带的元件库是相当丰富的,常用的,不常用的,有尽有。从元件库中调出需用的元件,然后连接,这种方法比在面板上方便多了。电路连接好后,编译调试,仿真成功

后下载到FPGA上就能实现所要的功能。

印象最深的的是DDS原理的应用。DDS是直接数字频率合成技术,通过这种技术能得到任意频率的各种波型。基本原理是频率初始字输入到一累加器,累加器做循环累加,累加器的高N位作为读取ROM的地址。ROM的M个存储单元中存放波型的采样点。读取采样值然后输出。通过改变频率初始字的改变,就能实现输出频率的改变。我们练习国05年电子设计大赛的A题-正弦信号发生器,要求产生100Hz-100MHz的正弦信号频率步进为100Hz。这道题就

是DDS的原理。

电子设计大赛我组是单单数,是六组唯一没有模电学生的。拿到题目后针对我组的情况我们选择了信号发生器这道题目,要去产生方波,正弦波,三角波,频率范围为10hz-10mhz,低频段10hz-khz,高频段1khz-10mhz,步进为1khz,波形发生系统正好我们练习过,和05年正弦信号发生器类似,但也有不同,要求产生3种波形,又要分高低频段,这些在软件上实现难度不大,用选择器高低频段,内涵在于用累加器的选择作为地址信号的选择,波形控制是把3种波形的采样点存到3个rom中,用选择信号来选择波形,难点在于控制字的输入,累加器要接收23位数据。方案1采取23根数据位,与单片机的io口连接,但单片机资源有限,所以不能采取此方案。方案2采取分高低中3位接收数据在fpga内部配置3个8位锁存器,每个锁存器的时钟信号通过单片机做为握手信号来提供,3个8为锁存器的输出再接到一个锁存器上,锁存器的24为输出就能得到需要的频率控制字。

在fpg内部握手信号为hold,波形控制信号为s2(1,0),高低频段控制信号为s1,这几个信号分别由单片机提供。在调试过程中遇到了种种困难,其中第一个为数据不能读入,最后找出来是hold信号没有起作用,又来又发现高频段波形能出来,但低频段不能出来,这个问题让人头痛,高频段都出来了,低频段不可能出不来,因为原理是一样的,这种情况最可能的原因还是频率控制字的错误,经反复检验,发现问题出在单片机额po口的分时复用上,po口除了发送数据还要进行键盘扫描,fpga把po对键盘扫描的信号也接收了过来,肯定会出错的。因为fpga反应很快,采取措施是修改汇编程序,延长po口对键盘的扫描到1妙,最后得到正确结果,下一步工作是输出的波形信号接到da上,因为输出最大频率要10mhz,考虑采用高速adv7120,数据输入为r(7…0)b(7…0),g(7…0),这块芯片主要用于视频转换,能满足高速要求,但是控制信号太多,再焊到pcb板上很容易出错,最后放弃使用adv7120,采样我们熟悉的da0832,fpga的8为波形信号作为da的输入wr信号由fpga提供,其他信号由单片机提供。Fpga每输出8为波形信号一次,wr信号就接收延时1ms的低电平,就能完成一次转换,输出一位的模拟信号pcb焊接好后,进行统调,可喜的是方波指标全能达到,三角波正弦波的频率能完全符合要求,但波形明显失真,原因出在pcb上电

路连接不理想,但当时已经没有时间在修改了,有间的话肯定能做好。

现在已经结束了,收获的结果并不重要,收获的整个过程才是有价值的,我们从这个过程锻炼了很多能力,有的极其深远的意义。这个过程使我对我的将来有了一个新的认识一个新的定位,也为我指明了方向。因为我对这方面感兴趣,我有兴趣继续研究,有斗志跻身于电子

这个行业。

最后感谢老师。首先,感谢老师给我的这次机会,我很珍惜。

再感谢各位老师的辛勤栽培,在这里祝愿每个老师有个好身体,每天都有好运气。

第四篇:EDA课程设计——基于DDS的正弦信号发生器设计(模版)

顶层文件 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DDS IS

PORT(K:IN STD_LOGIC_VECTOR(9 DOWNTO 0);

EN:IN STD_LOGIC;

RESET:IN STD_LOGIC;

CLK:IN STD_LOGIC;

Q:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));END ENTITY DDS;ARCHITECTURE BEHAVE OF DDS IS

COMPONENT SUM99 IS

PORT(K:IN STD_LOGIC_VECTOR(9 DOWNTO 0);

EN:IN STD_LOGIC;

RESET:IN STD_LOGIC;

CLK:IN STD_LOGIC;

OUT1:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));

END COMPONENT SUM99;

COMPONENT REG1 IS

PORT(D:IN STD_LOGIC_VECTOR(9 DOWNTO 0);

CLK:IN STD_LOGIC;

Q:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));

END COMPONENT REG1;

COMPONENT ROM IS

PORT(CLK:IN STD_LOGIC;

ADDR:IN STD_LOGIC_VECTOR(9 DOWNTO 0);

OUTP:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));

END COMPONENT ROM;

COMPONENT REG2 IS

PORT(D:IN STD_LOGIC_VECTOR(8 DOWNTO 0);

CLK:IN STD_LOGIC;

Q:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));

END COMPONENT REG2;

SIGNAL S1:STD_LOGIC_VECTOR(9 DOWNTO 0);

SIGNAL S2:STD_LOGIC_VECTOR(9 DOWNTO 0);

SIGNAL S3:STD_LOGIC_VECTOR(8 DOWNTO 0);

BEGIN

U0:SUM99

PORT MAP(K=>K,EN=>EN,RESET=>RESET,CLK=>CLK,OUT1=>S1);

U1:REG1 PORT MAP(D=>S1,CLK=>CLK,Q=>S1);

U2:ROM PORT MAP(ADDR=>S2,CLK=>CLK,OUTP=>S3);

U3:REG2 PORT MAP(D=>S3,CLK=>CLK,Q=>Q);END ARCHITECTURE BEHAVE;

正弦查找表 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ROM IS PORT(ADDR:IN STD_LOGIC_VECTOR(6 DOWNTO 0);CLK:IN STD_LOGIC;OUTP:OUT SIGNED(7 DOWNTO 0));END ENTITY ROM;ARCHITECTURE ART OF ROM IS BEGIN PROCESS(CLK)IS BEGIN IF(CLK'EVENT AND CLK='1')THEN CASE ADDR IS WHEN “0000000”=>OUTP<=“00000000”;WHEN “0000001”=>OUTP<=“00000010”;WHEN “0000010”=>OUTP<=“00000011”;WHEN “0000011”=>OUTP<=“00000101”;WHEN “0000100”=>OUTP<=“00000110”;

WHEN “0000101”=>OUTP<=“00001000”;WHEN “0000110”=>OUTP<=“00001001”;WHEN “0000111”=>OUTP<=“00001011”;WHEN “0001000”=>OUTP<=”00001101“;WHEN ”0001001“=>OUTP<=”00001110“;WHEN ”0001010“=>OUTP<=”00010000“;WHEN ”0001011“=>OUTP<=”00010001“;WHEN ”0001100“=>OUTP<=”00010011“;WHEN ”0001101“=>OUTP<=”00010100“;WHEN ”0001110“=>OUTP<=”00010110“;WHEN ”0001111“=>OUTP<=”00010111“;WHEN ”0010000“=>OUTP<=”00011001“;WHEN ”0010001“=>OUTP<=”00011011“;

WHEN ”0010010“=>OUTP<=”00011100“;WHEN ”0010011“=>OUTP<=”00011110“;WHEN ”0010100“=>OUTP<=”00011111“;WHEN ”0010101“=>OUTP<=”00100001“;WHEN ”0010110“=>OUTP<=”00100010“;WHEN ”0010111“=>OUTP<=”00100100“;WHEN ”0011000“=>OUTP<=”00100101“;WHEN ”0011001“=>OUTP<=”00100111“;

WHEN ”0011010“=>OUTP<=”00101001“;WHEN ”0011011“=>OUTP<=”00101010“;WHEN ”0011100“=>OUTP<=”00101100“;WHEN ”0011101“=>OUTP<=”00101101“;WHEN ”0011110“=>OUTP<=”00101111“;WHEN ”0011111“=>OUTP<=”00110000“;WHEN ”0100000“=>OUTP<=”00110010“;WHEN ”0100001“=>OUTP<=”00110011“;WHEN ”0100010“=>OUTP<=”00110101“;WHEN ”0100011“=>OUTP<=”00110110“;WHEN ”0100100“=>OUTP<=”00111000“;WHEN ”0100101“=>OUTP<=”00111001“;WHEN ”0100110“=>OUTP<=”00111011“;WHEN ”0100111“=>OUTP<=”00111100“;WHEN ”0101000“=>OUTP<=”00111110“;WHEN ”0101001“=>OUTP<=”00111111“;WHEN ”0101010“=>OUTP<=”01000001“;WHEN ”0101011“=>OUTP<=”01000011“;WHEN ”0101100“=>OUTP<=”01000100“;WHEN ”0101101“=>OUTP<=”01000110“;WHEN ”0101110“=>OUTP<=”01000111“;WHEN ”0101111“=>OUTP<=”01001001“;

WHEN ”0110000“=>OUTP<=”01001010“;WHEN ”0110001“=>OUTP<=”01001100“;WHEN ”0110010“=>OUTP<=”01001101“;WHEN ”0110011“=>OUTP<=”01001111“;WHEN ”0110100“=>OUTP<=”01010000“;WHEN ”0110101“=>OUTP<=”01010001“;WHEN ”0110110“=>OUTP<=”01010011“;WHEN ”0110111“=>OUTP<=”01010100“;WHEN ”0111000“=>OUTP<=”01010110“;WHEN ”0111001“=>OUTP<=”01010111“;WHEN ”0111010“=>OUTP<=”01011001“;WHEN ”0111011“=>OUTP<=”01011010“;WHEN ”0111100“=>OUTP<=”01011100“;WHEN ”0111101“=>OUTP<=”01011101“;WHEN ”0111110“=>OUTP<=”01011111“;WHEN ”0111111“=>OUTP<=”01100000“;WHEN ”1000000“=>OUTP<=”01100010“;WHEN ”1000001“=>OUTP<=”01100011“;WHEN ”1000010“=>OUTP<=”01100100“;WHEN ”1000011“=>OUTP<=”01100110“;WHEN ”1000100“=>OUTP<=”01100111“;WHEN ”1000101“=>OUTP<=”01101001“;

WHEN ”1000110“=>OUTP<=”01101010“;WHEN ”1000111“=>OUTP<=”01101100“;WHEN ”1001000“=>OUTP<=”01101101“;WHEN ”1001001“=>OUTP<=”01101110“;WHEN ”1001010“=>OUTP<=”01110000“;WHEN ”1001011“=>OUTP<=”01110001“;WHEN ”1001100“=>OUTP<=”01110011“;WHEN ”1001101“=>OUTP<=”01110100“;WHEN ”1001110“=>OUTP<=”01110101“;WHEN ”1001111“=>OUTP<=”01110111“;WHEN ”1010000“=>OUTP<=”01111000“;WHEN ”1010001“=>OUTP<=”01111010“;WHEN ”1010010“=>OUTP<=”01111011“;WHEN ”1010011“=>OUTP<=”01111100“;WHEN ”1010100“=>OUTP<=”01111110“;WHEN ”1010101“=>OUTP<=”01111111“;WHEN ”1010110“=>OUTP<=”10000000”;WHEN “1010111”=>OUTP<=“10000010”;WHEN “1011000”=>OUTP<=“10000011”;WHEN “1011001”=>OUTP<=“10000100”;WHEN “1011010”=>OUTP<=“10000110”;WHEN “1011011”=>OUTP<=“10000111”;

WHEN “1011100”=>OUTP<=“10001000”;WHEN “1011101”=>OUTP<=“10001010”;WHEN “1011110”=>OUTP<=“10001011”;WHEN “1011111”=>OUTP<=“10001100”;WHEN “1100000”=>OUTP<=“10001110”;WHEN “1100001”=>OUTP<=“10001111”;WHEN “1100010”=>OUTP<=“10010000”;WHEN “1100011”=>OUTP<=“10010010”;WHEN “1100100”=>OUTP<=“10010011”;WHEN “1100101”=>OUTP<=“10010100”;WHEN “00001100110”=>OUTP<=“10010101”;WHEN “1100111”=>OUTP<=“10010111”;WHEN “1101000”=>OUTP<=“10011000”;WHEN “1101001”=>OUTP<=“10011001”;WHEN “1101010”=>OUTP<=“10011010”;WHEN “1101011”=>OUTP<=“10011100”;WHEN “1101100”=>OUTP<=“10011101”;WHEN “1101101”=>OUTP<=“10011110”;WHEN “1101110”=>OUTP<=“10011111”;WHEN “1101111”=>OUTP<=“10100001”;WHEN “1110000”=>OUTP<=“10100010” WHEN “1110001”=>OUTP<=“10100011”;

WHEN “1110010”=>OUTP<=“10100100”;WHEN “1110011”=>OUTP<=“10100101”;WHEN “1110100”=>OUTP<=“10100111”;WHEN “1110101”=>OUTP<=“10101000”;WHEN “1110110”=>OUTP<=“10101001”;WHEN “1110111”=>OUTP<=“10101010”;WHEN “1111000”=>OUTP<=“10101011”;WHEN “1111001”=>OUTP<=“10101100”;WHEN “1111010”=>OUTP<=“10101110”;WHEN “1111011”=>OUTP<=“10101111”;WHEN “1111100”=>OUTP<=“10110000”;WHEN “1111101”=>OUTP<=“10110001”;WHEN “1111110”=>OUTP<=“10110010”;WHEN “1111111”=>OUTP<=“10110011”;WHEN OTHERS=>OUTP<=“ 00000000”;

END CASE;

END IF;END PROCESS;END ARCHITECTURE ART;

DAC 0832的VHDL程序 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DAC0832 IS PORT(CLK:IN STD_LOGIC;

RST:IN STD_LOGIC;

ILE:OUT STD_LOGIC;

CONT:OUT STD_LOGIC;DATA_OUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ENTITY;ARCHITECTURE BEHAVE OF DAC0832 IS SIGNAL Q:INTEGER RANGE 0 TO 63;SIGNAL DATA:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN

PROCESS(CLK)

BEGIN

IF RST='1'THEN Q<=0;ELSIF CLK'EVENT AND CLK='1'THEN

IF DATA=“11111111”THEN DATA<=“00000000”;

ELSE DATA<=DATA+1;

END IF;

ELSE Q<=Q+1;

END IF;

END PROCESS;ILE<='1';CONT<='0';DATA_OUT<=DATA;END ARCHITECTURE BEHAVE;

频率控制字 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY REG0 IS

PORT(CLK:IN STD_LOGIC;

LOCK:IN STD_LOGIC;

Q:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));END ENTITY REG0;ARCHITECTURE ART OF REG0 IS BEGIN

PROCESS(CLK)

BEGIN

IF(CLK'EVENT AND CLK='1')THEN

IF LOCK='1'THEN

Q<=“0000011111”;

END IF;

END IF;

END PROCESS;END ARCHITECTURE ART;

相位寄存器 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG1 IS

PORT(D:IN STD_LOGIC_VECTOR(9 DOWNTO 0);

CLK:IN STD_LOGIC;

Q:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));END ENTITY REG1;ARCHITECTURE BEHAVE OF REG1 IS BEGIN

PROCESS(CLK)IS

BEGIN

IF(CLK'EVENT AND CLK='1')THEN

Q<=D;

END IF;

END PROCESS;END ARCHITECTURE BEHAVE;

输出数据寄存器 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG2 IS PORT(D:IN STD_LOGIC_VECTOR(8 DOWNTO 0);

CLK:IN STD_LOGIC;

Q:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));END ENTITY REG2;ARCHITECTURE BEHAVE OF REG2 IS BEGIN

PROCESS(CLK)IS

BEGIN

IF(CLK'EVENT AND CLK='1')THEN

Q<=D;

END IF;

END PROCESS;END ARCHITECTURE BEHAVE;

相位累加器 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SUM99 IS

PORT(K:IN STD_LOGIC_VECTOR(9 DOWNTO 0);

CLK:IN STD_LOGIC;

EN:IN STD_LOGIC;

RESET:IN STD_LOGIC:

OUT1:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));END ENTITY SUM99;ARCHITECTURE BEHAVE OF SUM99 IS

SIGNAL TEMP:STD_LOGIC_VECTOR(9 DOWNTO 0);BEGIN

PROCESS(CLK,EN,RESET)IS

BEGIN

IF RESET='1'THEN

TEMP<=“0000000000”;

ELSE

IF CLK'EVENT AND CLK='1'THEN

IF EN='1'THEN

TEMP<=TEMP+K;

END IF;

END IF;

END IF;

OUT1<=TEMP;

END PROCESS;END ARCHITECTURE BEHAVE;

图1.顶层电路原理图

图2.dds波形仿真图

图3.rom波形仿真图

图4.相位寄存器reg1仿真波形图

图5.寄存器reg2的波形仿真

图6.相位累加器仿真波形图

图7.优化过程及对比波形(A——H)

图A

图B

图C

图D

图E 23

图F

图G

图H

第五篇:函数信号发生器设计

函数信号发生器设计设计任务与要求

⑴ 设计并制作能产生正弦波、矩形波(方波)和三角波(锯齿波)的函数发生器,本信号发生器可以考虑用专用集成芯片(如5G8038等)为核心实现。⑵ 信号频率范围: 1Hz∽100kHz;

⑶ 频率控制方式:

① 手控通过改变RC参数实现;

② 键控通过改变控制电压实现;

③ 为能方便地实现频率调节,建议将频率分档;

⑷ 输出波形要求

① 方波上升沿和下降沿时间不得超过200nS,占空比在48%∽50%之间;② 非线性误差≤2%;

③ 正弦波谐波失真度≤2%;

⑸ 输出信号幅度范围:0∽20V;

⑹ 信号源输出阻抗:≤1Ω;

⑺ 应具有输出过载保护功能;

⑻ 具有数字显示输出信号频率和电压幅值功能。

下载电子设计大赛:DDS 信号发生器word格式文档
下载电子设计大赛:DDS 信号发生器.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    DSP-任意信号发生器

    任意信号发生器 实验报告 姓 名: 学院(系): 专业: 组员: 指导老师: 学 号: 电子工程与光电技术学院 通信工程 一、实验目的 1.熟悉 DSP 硬件开发平台; 2.熟悉 DSP 集成开发......

    函数信号发生器论文

    函数信号发生器的设计与制作 系别:电子工程系 专业:应用电子技术 届:XX届 姓名:XXX 摘 要 本系统以ICL8038集成块为核心器件,制作一种函数信号发生器,制作成本较低。适合学生学......

    函数信号发生器设计任务书

    目录 一、设计的任务和要求............................................................................ 二、已知条件...................................................

    信号发生器设计(推荐)

    模拟课程设计题 信号发生器设计 设计一个能够输出正弦波、三角波和矩形波的信号源电路,电路形式自行选择。输出信号的频率可通过开关进行设定,具体要求如下: (1)输出信号的频率范......

    简易信号发生器设计

    《单片机原理及应用》课程设计任务书 课程设计题目:简易信号发生器设计 一、设计目的和要求 (一)、设计目的 通过设计简易信号发生器,完成系统设计、编码、调试及维护工作的实践......

    函数信号发生器课程设计

    一 绪论 1.1 函数信号发生器的应用意义 函数发生器一般是指能自动产生正弦波、三角波、方波及锯齿波、阶梯波等电压波形的电路或仪器。根据用途不同,有产生三种或多种波形的......

    低频信号发生器2

    低频信号发生器 目录 产品简介:低频信号发生器采用单片机波形合成发生器产生高精度,低失真的正弦波电压,可用于校验频率继电器,同步继电器等,也可作为低频变频电源使用。以单片机......

    DSP音频信号发生器

    大学课程设计报告 音频信号发生器 设 计 人: 专业: 班级: 学号: 指导教师: 二零一四年 付路 电子信息工程 电子111501 201115020104 宁爱平目录 一. 引言-------------第2页 二.......