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

时间:2019-05-15 10:28:25下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《EDA课程设计——基于DDS的正弦信号发生器设计(模版)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《EDA课程设计——基于DDS的正弦信号发生器设计(模版)》。

第一篇: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

第二篇: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,坚持不懈,不管它有多难。

第三篇:电子设计大赛: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

第四篇:简易正弦信号发生器的设计

实验六 简易正弦信号发生器的设计

一、实验目的1.进一步熟悉Quatus软件的使用方法;

2.掌握逻辑分析仪的使用方法;

3.掌握LPM-ROM的使用方法;

二、实验内容

定制LPM-ROM模块,并利用其设计一个简易的正弦信号发生器,该信号发生器由以下三部分组成:

(1)计数器或地址信号发生器;

(2)正弦信号数据存储器ROM(6位地址线,8位数据线),含有128个8位波形数据(一个正弦波形周期)。

(3)VHDL顶层程序设计

注意:本实验中未给正弦信号波形接D/A转换器,因而采用逻辑分析仪进行观察,具体观察方法见教材208页。

本实验中待测信号为ar和q。时钟选择clk;时能信号为en,高电平触发。

三、实验记录

1.VHDL语言程序

2.仿真波形

3.逻辑分析仪观察结果。

四、问题讨论

1.总结宏功能模块的应用环境,可实现哪些设计?

2.设计一个方波生成器。

第五篇:实验五正弦信号发生器设计

实验五正弦信号发生器设计

一、实验目的1.熟悉利用QuartusII及其LPM_ROM与FPGA硬件资源的使用方法;

2.掌握LPM模块的重要功能;

3.熟悉MegaWizard Plug-In Manager的使用方法。

二、实验设备

计算机,QuartusII 6.0 版软件,JTAG下载线,EDA实验挂箱(EP1C6Q240C8)。

三、实验原理

设计一8位宽、1024点的正弦信号发生器。

正弦信号发生器的结构由四个部分组成:

1.计数器或地址发生器(10位地址线);

2.正弦信号数据ROM(存放正弦波的采样数据,采样频率20MHz:8位数据线、10位地址线);

3.VHDL顶层设计;

4.D/A转换器(8位)。

四、实验步骤和内容

1.在QuartusII上利用MegaWizard Plug-In Manager功能,调用LPM_ROM函数定制8位宽、1024点ROM,并进行初始化。然后对设计实体进行编辑、编译、综合、适配、仿真。

2.利用QuartusII文本编辑器设计10位二进制计数器,做为地址发生器,对设计实体进行编辑、编译、综合、适配、仿真。

3.利用层次化设计方法设计一8位宽、1024点的正弦信号发生器。

4.D/A转换器采用试验箱配备的DAC0832。

5.引脚锁定和硬件下载测试。引脚锁定后进行编译、下载和硬件测试实验。将实验过程和实验结果写进实验报告。

6.使用SignalTap II对设计的正弦信号发生器进行实测。采样时钟使用系统时钟20MHz。

7.使用在系统存储器数据读写编辑器对设计的正弦信号发生器进行实测,观测结果;

8.实验报告。将实验原理、设计过程、编译仿真波形和分析结果、硬件测试实验结果写进实验报告。

五、思考题

如何实现对输出正弦信号的频率和相位可调?

下载EDA课程设计——基于DDS的正弦信号发生器设计(模版)word格式文档
下载EDA课程设计——基于DDS的正弦信号发生器设计(模版).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


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

相关范文推荐

    函数信号发生器课程设计

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

    函数信号发生器课程设计报告.

    漳州师范学院 《模拟电子技术》课程设计 函数信号发生器 姓 名: 学 号: 系 别: 专 业: 年 级: 指导教师: 2012年4月3日 函数信号发生器 摘要 利用集成电路LM324设计并实现所需技术......

    函数信号发生器-课程设计2.

    长 安 大 学 电子技术课程设计 课题名称 函数信号发生器 班 级 __******____ 姓 名 指导教师 *** 日 期 本次电子技术课程设计是指通过所学知识并扩展相关知识面,设计出任务......

    函数信号发生器设计

    函数信号发生器设计设计任务与要求 ⑴ 设计并制作能产生正弦波、矩形波(方波)和三角波(锯齿波)的函数发生器,本信号发生器可以考虑用专用集成芯片(如5G8038等)为核心实现。⑵ 信号......

    信号发生器设计(推荐)

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

    简易信号发生器设计

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

    函数信号发生器课程设计.(含五篇)

    模 拟 电 路 课 程 设 计 报 告 中原工学院 (2012年6月24日) 目录 1、课程设计的任务、要求及步骤 2、设计方案的选择 3、电路设计主要的技术指标 4、函数信号发生器电路原理......

    单片机课程设计——中低频信号发生器设计(范文模版)

    中低频信号发生器设计 一、 方案设计: 使用单片机控制DA芯片产生模拟波形是一种产生所需信号的简单方式,但由于受到普通DA芯片的设置时间以及单片机自身晶振频率的限制,产生的......