DDS信号发生器实验报告含原理图PCB和代码
DDS移相信号发生器
DDS移相信号发生器设计一、实验目的1.会用VHDL语言编写加法器、寄存器、以及本实验的主程序;2.能够用Quartus II软件生成PLL20和SIN_ROM元件;3.熟练掌握本次实验的波形仿真、引脚锁定、编程下载;4.透彻的理解本次实验的VHDL的含义以及其需要实现的功能,做好硬件测试工作;5.熟练地掌握实验室里示波器的使用。
二、实验原理FWORD是8位频率控制字,控制输出信号的频率;PWORD是8位相移控制字,控制输出信号的相移量;ADDER32B和ADDER10B分别为32位和10位加法器;SIN_ROM是存放正弦波数据的ROM,10位数据线,10位地址线,其中的数据文件是LUT10X10.mif,REG32B和REG10B分别是32位和10位寄存器;POUT和FOUT分别为10位输出,可以分别与两个高速D/A相接,它们分别输出参考信号和可移相正弦信号。
三、实验内容1.完成10位输出数据宽度的移相信号发生器设计,要求使用锁相环,设计正弦波形数据MIF文件,给出仿真波形,最后进行硬件测试。
2.修改设计,增加幅度控制电路。
3.将此信号发生器改成具有扫频功能的波形发生器,扫速可数控,点频扫频可控。
四、实验步骤1.创建本次实验所在的文件夹在桌面创建一个文件夹,取名为DDS。
2.创建工程File->New Project Wizard(具体的参数设置如下图所示)3. 使用VHDL 语言编写代码先创建编写VHDL 语言的文本,编写好代码之后保存,保存的名称即实体名。
File->New编写好的代码如下: 主代码(DDS ): library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity DDS isport(CLK2: IN STD_LOGIC;CLK_DA: OUT STD_LOGIC;FWORD: IN STD_LOGIC_VECTOR(7 DOWNTO 0);PWORD: IN STD_LOGIC_VECTOR(7 DOWNTO 0);FOUT : OUT STD_LOGIC_VECTOR(9 DOWNTO 0);POUT :OUT STD_LOGIC_VECTOR(9 DOWNTO 0)); END;ARCHITECTURE one OF DDS ISCOMPONENT PLL20PORT(inclk0 : in STD_LOGIC :='0';c0 : OUT STD_LOGIC);END COMPONENT;COMPONENT REG32BPORT(LOAD : IN STD_LOGIC;DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END COMPONENT;COMPONENT REG10BPORT(LOAD : IN STD_LOGIC;DIN : IN STD_LOGIC_VECTOR(9 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR(9 DOWNTO 0)); END COMPONENT;COMPONENT ADDER32BPORT(A : IN STD_LOGIC_VECTOR(31 DOWNTO 0);B : IN STD_LOGIC_VECTOR(31 DOWNTO 0);S : OUT STD_LOGIC_VECTOR(31 DOWNTO 0));END COMPONENT;COMPONENT ADDER10BPORT(A : IN STD_LOGIC_VECTOR(9 DOWNTO 0);B : IN STD_LOGIC_VECTOR(9 DOWNTO 0);S : OUT STD_LOGIC_VECTOR(9 DOWNTO 0));END COMPONENT;COMPONENT SIN_ROMPORT(address : IN STD_LOGIC_VECTOR(9 DOWNTO 0);clock : IN STD_LOGIC;q : OUT STD_LOGIC_VECTOR(9 DOWNTO 0));END COMPONENT;SIGNAL CLK : STD_LOGIC;SIGNAL F32B : STD_LOGIC_VECTOR(31 DOWNTO 0);SIGNAL D32B : STD_LOGIC_VECTOR(31 DOWNTO 0);SIGNAL DIN32B : STD_LOGIC_VECTOR(31 DOWNTO 0);SIGNAL P10B : STD_LOGIC_VECTOR(9 DOWNTO 0);SIGNAL LIN10B : STD_LOGIC_VECTOR(9 DOWNTO 0);SIGNAL SIN10B : STD_LOGIC_VECTOR(9 DOWNTO 0);SIGNAL DOUT : STD_LOGIC_VECTOR(9 DOWNTO 0);SIGNAL DIN : STD_LOGIC_VECTOR(31 DOWNTO 0);BEGINF32B(27 DOWNTO 20)<=FWORD;F32B(31 DOWNTO 28)<="0000";F32B(19 DOWNTO 0)<="00000000000000000000";P10B(9 DOWNTO 2)<=PWORD;P10B(1 DOWNTO 0)<="00";CLK_DA <= CLK;u1:ADDER32B PORT MAP(A=>F32B,B=>D32B,S=>DIN32B);u2:REG32B PORT MAP (DOUT=>D32B,DIN=>DIN32B,LOAD=>CLK);u3:SIN_ROM PORT MAP(address=>SIN10B,q=>FOUT,clock=>CLK);u4:ADDER10B PORT MAP(A=>P10B,B=>D32B(31 DOWNTO 22),S=>LIN10B);u5:REG10B PORT MAP(DOUT=>SIN10B,DIN=>LIN10B,LOAD=>CLK);u6:SIN_ROM PORT MAP(address=>D32B(31 DOWNTO 22),q=>POUT,clock=>CLK); u7:PLL20 PORT MAP(inclk0=>CLK2,c0=>CLK);END;其中的例化语句中调用的各类器件代码如下:ADDER32B:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER32B ISPORT(A : IN STD_LOGIC_VECTOR(31 DOWNTO 0);B : IN STD_LOGIC_VECTOR(31 DOWNTO 0);S : OUT STD_LOGIC_VECTOR(31 DOWNTO 0));END;ARCHITECTURE bhv OF ADDER32B ISBEGINS <= A + B;END;ADDER10B:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER10B ISPORT(A : IN STD_LOGIC_VECTOR(9 DOWNTO 0);B : IN STD_LOGIC_VECTOR(9 DOWNTO 0);S : OUT STD_LOGIC_VECTOR(9 DOWNTO 0));END;ARCHITECTURE bhv OF ADDER10B ISBEGINS <= A + B;END;REG32B:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B ISPORT(LOAD : IN STD_LOGIC;DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0));END;ARCHITECTURE bhv OF REG32B ISSIGNAL Q1 : STD_LOGIC_VECTOR(31 DOWNTO 0);BEGINPROCESS(LOAD,Q1)BEGINIF LOAD'EVENT AND LOAD ='1'THEN Q1 <= DIN;END IF;END PROCESS;DOUT <= Q1;END;REG10B:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG10B ISPORT(LOAD : IN STD_LOGIC;DIN : IN STD_LOGIC_VECTOR(9 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR(9 DOWNTO 0));END;ARCHITECTURE bhv OF REG10B ISSIGNAL Q1 : STD_LOGIC_VECTOR(9 DOWNTO 0);BEGINPROCESS(LOAD,Q1)BEGINIF LOAD'EVENT AND LOAD ='1'THEN Q1 <= DIN;END IF;END PROCESS;DOUT <= Q1;END;其中的SIN_ROM和PLL20则是通过Quartus II软件定制得来的,其定制方法如下:SIN_ROM 的定制:PLL20的定制:4.创建波形文件并仿真1)创建波形文件:File->New2)添加节点:3)选择节点,设置各节点的输入信号,设置好后的图形如下:4)仿真,仿真后的结果如下:5.引脚锁定,仿真成功后进行引脚锁定:Assignments->Pin planner,设置好引脚后如下图:然后在次全编译主程序:Processing->Start Compilation(快捷键:Ctrl+L) 6.进行硬件下载:Tools->Programmer,按照下图的参数进行设置,然后下载即可五、实验总结1.实验结果:通过观察示波器上的波形,可以得到我们预期的试验结果。
实验五 DDS信号发生器设计
实验五DDS信号发生器的设计(1) 实验目的:学习利用EDA技术和FPGA实现直接数字频率综合器DDS的设计。
(2) 实验原理:直接数字频率综合技术,即DDS技术,是一种新型的频率合成技术和信号产生方法。
其电路系统具有较高的频率分辨率,可以实现快速的频率切换,并且在改变时能够保持相位的连续,很容易实现频率、相位和幅度的数控调制。
f SIN = M(f clk/2n)DDS基本结构相位累加器位宽和采样点关系【例11-12】LIBRARY ieee; --波形数据ROMUSE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.altera_mf_components.all;ENTITY data_rom ISPORT( address : IN STD_LOGIC_VECTOR (9 DOWNTO 0);inclock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );END data_rom;. . .init_file => "./data/ rom_data.mif ", --波形数据初始化文件路径lpm_hint => "ENABLE_RUNTIME_MOD=YES, INSTANCE_NAME=rom2",. . .END;【例11-13】LIBRARY IEEE; --32位加法器模块USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER32B ISPORT ( A : IN STD_LOGIC_VECTOR(31 DOWNTO 0);B : IN STD_LOGIC_VECTOR(31 DOWNTO 0);S : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) );END ADDER32B;ARCHITECTURE behav OF ADDER32B ISBEGINS <= A + B;END behav;【例11-14】--32位寄存器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B ISPORT ( Load : IN STD_LOGIC;DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) );END REG32B;ARCHITECTURE behav OF REG32B ISBEGINPROCESS(Load, DIN)BEGINIF Load'EVENT AND Load = '1' THEN -- 时钟到来时,锁存输入数据DOUT <= DIN;END IF;END PROCESS;END behav;【例11-15】rom_data.mif 10位正弦波数据文件,读者可用MATLAB/DSP Builder 生成 WIDTH=10;DEPTH=1024;ADDRESS_RADIX=DEC;DATA_RADIX=DEC;CONTENT BEGIN0 : 513; 1 : 515; 2 : 518; 3 : 521; 4 : 524; 5 : 527; 6 : 530; 7 : 533; 8 : 537; 9 : 540; 10 : 543; 11 : 546; 13 : 549; 13 : 552; 14 : 555;. . . . . .(略去部分数据)1018 : 493; 1019 : 496; 1020 : 499; 1021 : 502; 1022 : 505; 1023 : 508; END;(3) 实验内容1:详细述叙DDS 的工作原理,依据例11-12至例11-15完成仿真,并由仿真结果进一步说明DDS 的原理。
DDS信号发生器 实验报告
H a r b i n I n s t i t u t e o f T e c h n o l o g yEDA技术高级应用实验报告姓名:禾小鬼同组人:学号:16S班级:信息2班指导教师:xxx院系:电信学院实验一函数信号发生器一、实验内容实验内容包括下面两个方面1.熟悉quartus ii开发环境第一次接触quartus ii开发环境,首先可以通过新建一个工程熟悉quartus ii的各种基本操作。
需要学习的包括以下几个方面:选器件,采用原理图方法画一个电路图实现某种功能,并对这个功能进行行为仿真以验证功能上的正确性。
2.设计一个函数信号发生器在开始之前,首先要明确设计目的,我们的想要用电路图方法实现设计一个“函数信号发生器”。
然后,可以先根据自己的思路想好一个电路图的设计方案,再开始实验。
二实验结果1.第一步:建立一个新的工程新建工程的过程中,最重要的是设置器件,不同的器件的设计之间并不兼容。
会有一个综合的信息框,注明了我所做的设置,看看没问题就可以了。
然后新建一个原理图文件schematic,作为顶层文件,将顶层文件命名为DDS在上面进行画图。
2.第二步:画电路图本次实验采用软件自带的器件库MegaWizard Plug-in Manager中的器件。
自定义3个ROM,并将ROM表中存储事先准备好的三种波形的数据文件,波形数据文件由matlab产生,ROM中存储8bit-32words的数据,包括一个时钟输入,一个5位地址输入和一个7位输出;还需要一个5位计数器,用以输出读取ROM 的地址;一个时钟控制整个电路工作;我画的电路图,如图1所示。
其原理为:三个ROM表存储三种波形数据,整个电路通过时钟控制,时钟每翻转一次,计数器加一,产生一个地址,输入到ROM,读取ROM表中的数据,直到将ROM表中的数据读取完,计数器清零,继续从头读取ROM表中的数据,这样输出的结果就是一个周期的波形信号。
三个波形的产生原理相同,唯一不同就是ROM中存储的数据,根据波形的不同而不同。
实验六 DDS信号发生器设计
实验五DDS信号发生器设计一.实验目的:学习利用EDA技术和FPGA实现直接数字频率综合器DDS的设计。
二.实验设备:1.电脑,quartus ii 集成开发环境2.GX_SOPC_EP3C10_EDK系统三.实验实训要求1.使用quartus ii 集成开发环境完成直接数字频率综合器DDS的设计2.利用GX_SOPC_EP3C10_EDK系统和电脑完成实验并观察波形四.实验原理:参考6.12节。
图6-72是根据图6-71的基本DDS原理框图作出的电路原理图的顶层设计,其中相位累加器的位宽是32。
图中共有六组元件模块和一些接口,说明如下:图6-72 DDS信号发生器顶层原理图(1) 32位加法器ADDER32。
由LPM_ADD_SUB宏模块构成。
设置了2级流水线结构,使其在时钟控制下有更高的运算速度和输入数据稳定性。
(2) 32位寄存器DFF32。
由LPM_FF宏模块担任。
ADDER32与DFF32构成一个32位相位累加器,其高8位A[31..24]作为波形数据ROM的地址。
(3) 正弦波形数据ROM。
正弦波形数据ROM模块sin_8X8的地址线和数据线位宽都是8位。
这就是说,其中的一个周期的正弦波数据有256个,每个数据有8位。
其输出可以接一个8位的高速DAC。
ROM中的MIF数据文件可用专用软件工具获得,这里不再深入探讨。
(4) 频率控制字输入B[20..17]由计数器CNT4B产生。
本来的频率控制字是32位的,但为了方便实验验证,把高于20和低于17的输入位预先设置成0或1。
频率控制字B[31..0]与由DAC[7..0]驱动的DAC 的正弦信号频率的关系,可以由公式CLK out f B f 322]0..31[ 算出。
其中f out 为DAC 输出的正弦波信号频率,f clk 是CLK 的时钟频率,直接输入是50MHz ,接入锁相环后可达到更高频率。
频率上限要看DAC 的速度。
如果接高速DAC ,如10位的5651,输出速度可达180MHz 。
DDS信号发生器设计
实验12-9. DDS信号发生器设计程序设计与硬件实验
AD_DA板与FPGA EP1C6/12接口原理图详细说明可参考《SOPC_EDA实验讲义》
AD_DA板与FPGA EP1C3接口原理图详细说明可参考《SOPC_EDA实验讲义》
位频率控制字,
、键1给出
相位控制字,已在程序中预设
32Pin RAM/ROM与FPGA接口原理图
详细说明可参考《SOPC_EDA实验讲义》
模式1的电路结构
选择模式1
时钟选择Clock5=20MHz 打开+/-12V电源
32Pin RAM/ROM与FPGA接口原理图
详细说明可参考《SOPC_EDA实验讲义》
接示波器Y2端
接示波器Y1端
短路帽向下接:
时钟选择Clock5=20MHz
K X 康芯科技FWORD 是8位频率控制字,由模式1的键2、键1给出
数码管2/1显示键2/1给出的频率字11H
K X康芯科技
示波器波形
位频率控制字,
的键2、键1给出
K X SignalTapII设置。
DDS信号发生器实验报告含原理图PCB和代码
电子信息技术综合实训报告格式竞赛题名称:《DDS信号发生器的设计》队员名称:评阅人签名:2012年9月15日1、设计思路描述:本设计是一个以AT89C51单片机为核心基于DAC0832芯片的DDS信号发生器。
信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出正弦波和三角波,波形的转换可通过软件控制。
本设计通过按键选择波形,经过AT89C51单片机将数据输出到DAC0832,由数字信号转变为模拟信号,再通过运放器稳定地输出到示波器上。
原理框图如下:2、硬件电路图:DAC0832是采样频率为八位的D/A转换器件,芯片内有两级输入寄存器,使DAC0832具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。
D/A转换结果采用电流形式输出。
要是需要相应的模拟信号,可通过一个高输入阻抗的线性运算放大器实现这个供功能。
运放的反馈电阻可通过RFB端引用片内固有电阻,还可以外接。
该片逻辑输入满足TTL电压电平范围,可直接与TTL电路或微机电路相接。
下面是DAC0832引脚图和内部结构电路图DAC0832引脚功能说明:DI0~DI7:数据输入线,TLL电平。
ILE:数据锁存允许控制信号输入线,高电平有效。
CS:片选信号输入线,低电平有效。
WR1:为输入寄存器的写选通信号。
XFER:数据传送控制信号输入线,低电平有效。
WR2:为DAC寄存器写选通输入线。
Iout1:电流输出线。
当输入全为1时Iout1最大。
Iout2: 电流输出线。
其值与Iout1之和为一常数。
Rfb:反馈信号输入线,芯片内部有反馈电阻。
Vcc:电源输入线 (+5v~+15v)Vref:基准电压输入线 (-10v~+10v)AGND:模拟地,摸拟信号和基准电源的参考地。
DGND:数字地,两种地线在基准电源处共地比较好。
主控电路及数模转换电路分别如下:主控电路数模转换电路3软件流程图:4测试方法描述:运用proteus软件设计好电路图,将程序代码编译好以后载入proteus中的AT89C51芯片进行仿真。
DDS信号发生器报告
目录第1节引言 (2)1.1 信号发生器概述 (2)1.2 本设计任务和主要内容 (2)第2节系统主要硬件电路设计 (3)2.1 总体设计方案与比较 (3)2.2 单片机控制系统原理 (4)2.3 单片机主机系统电路 (5)2.3.1电源模块 (5)2.3.2按键模块 .................................................................. 错误!未定义书签。
2.3.3 D/A转换模块 (7)2.4 LCD液晶显示电路 (8)2.4.1 ST7920 LCD组成原理 (9)2.4.2 ST7920的应用 (10)2.5 DDS信号发生电路 (12)2.5.1 DDS的性能特点 (12)2.5.2 DDS的应用 (13)2.6 模拟乘法器MC1595 (16)第3节系统的软件设计 (19)3.1 软件设计概况 (19)3.2 主程序流程图 (19)3.2 事务处理任务流程图 (20)3.3 数据处理原理 (20)3.4 系统主程序设计 (21)3.4.1 LCD发送及接收部分 .............................................. 错误!未定义书签。
3.4.2 AD9850发送部分 .................................................... 错误!未定义书签。
3.4.3 D/A5615发送部分 .................................................. 错误!未定义书签。
第4节结束语 .. (26)参考文献 (27)基于DDS技术的信号发生器第1节引言信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。
本设计分五个模块:单片机控制及显示模块、数模(D/A)转换模块、波形产生模块、输出显示模块、电源模块。
实验报告
同步技术仿真作业基于DDS 原理的频率信号产生一、实验原理1、DDS 简介DDS 技术是以奈奎斯特采样定律为基础,采用全数字化结构,通过控制相位的变化速度来直接产生各种不同频率信号的一种频率合成方法。
DDS 的字长决定了正弦/余弦基准信号样点的个数和所产生频率信号的量化精度。
最小频率间隔决定了DDS 所能产生信号的最小频率。
DDS 所产生信号的频率为最小频率间隔的整数倍。
用DDS 产生频率信号有以下优点: (1) 输出频率相对带宽较宽; (2) 频率转换时间短; (3) 频率分辨率极高; (4) 相位变化连续; (5) 输出波形的灵活性; (6) 其他优点,如易于集成,功耗低,体积小,重量轻,可靠性高等。
2、信号产生过程正弦信号发生器的输出如下:sin 2sin S A ft A πθ== (1)其中f 是输出信号的频率,θ 是相位。
对上式进行离散化处理,用基准时钟进行抽样。
则在一个时钟周期c T 内相位变化量为:22c cffT f πθπ∆==(2) 其中c f 是时钟频率。
为了进行数字量化,我们把2π分成2N 份,则最小等分量为:22N πδ= (3)每次相位增量取δ得M 倍可得到输出信号的频率:022c N c M Mf f T δπ==(4) 则输出信号为: 00sin 2S A f t π=(5)二、程序说明为了完成实验所要求内容,在本实验中通过写一个函数来实现。
函数形式如下: [](),,,,0,,S Sroot dds N fs df ph f Nsig =(6)其中出口参数意义: S :输出信号;Sroot :基准频率信号。
入口参数意义:N :dds字长fs采样频率df:dds输出信号最小频率间隔;ph:输出信号初相;f:输出信号频率;Nsig:输出信号点数。
调整函数参数可以输出不同的频率信号。
同时调用函数后可以画出基准频率信号和输出信号的时域及频域波形。
信号产生过程可分为基准频率信号的产生,计算输出信号地址,产生输出信号三大步骤。
DDS信号发生器实验报告
DDS信号发生器一、实验目的:学习利用EDA技术和FPGA实现直接数字频率综合器DDS的设计。
二、实验原理实验原理参考教材6.4节和6.11节相关内容。
三、实验内容1、实验原理参考教材6.4节相关内容。
根据6.4.2节和例6-10,在Quartus II上完成简易正弦信号发生器设计,进行编辑、编译、综合、适配、仿真;2、使用SignalTap II测试;3、硬件测试:进行引脚锁定及硬件测试。
信号输出的D/A使用DAC0832,注意其转换速率是1μs。
下载到实验系统上,接上D/A模块,用示波器测试输出波形;4、按照教材图6-72完成DDS信号发生器设计,进行编辑、编译、综合、适配、仿真,引脚锁定及硬件测试。
5、建立.mif格式文件。
四、实验步骤1、建立.mif文件:(1)设定全局参数:(2)设定波形:(3)文件保存:2、新建工程:3、LPM—ROM定制:(1)(2)(4)(5)(7)sinrom源程序:module SIN_CNT(RST,CLK,EN,Q,AR); output [7:0] Q;input [6:0] AR;input EN,CLK,RST;wire [6:0] TMP;reg[6:0] Q1;reg[7:0] F;reg C;always @(posedge CLK)if(F<AR) F<=F+1;elsebeginF=8'b00;C=~C;endalways @(posedge CLK or negedge RST)if(!RST) Q1<=7'b0000000;else if(EN) Q1<=Q1+1;else Q1<=Q1;assign TMP=Q1;sinrom IC1(.address(TMP),.clock(CLK),.q(Q)); endmodule4、锁相环:5、顶层文件:6、SignalTap II的使用7、锁定引脚8、下载。
Verilog代码编写DDS信号发生器(幅频相可调正弦波、方波、三角波、锯齿波)纯VIVA。。。
Verilog代码编写DDS信号发⽣器(幅频相可调正弦波、⽅波、三⾓波、锯齿波)纯VIVA。
DDS(Direct Digital Synthesizer)即数字合成器,是⼀种新型的频率合成技术,具有相对带宽⼤,频率转换时间短、分辨率⾼和相位连续性好等优点。
较容易实现频率、相位以及幅度的数控调制,⼴泛应⽤于通信领域。
DDS的基本结构框图如下所⽰:由图可以看出,DDS 主要由相位累加器、相位调制器、波形数据表以及D/A 转换器构成。
本次实验仅在VIVADO平台上完成DDS的仿真,故设计流程不需要D/A转换器,在PC端完成仿真设计即可。
若需要结合FPGA开发板使⽤,则需要再外接⼀个D/A转换模块,将产⽣的数字信号转换为模拟信号即可。
其中相位累加器由 N 位加法器与 N 位寄存器构成。
每个时钟周期的时钟上升沿,加法器就将频率控制字与累加寄存器输出的相位数据相加,相加的结果⼜反馈⾄累加寄存器的数据输⼊端,以使加法器在下⼀个时钟脉冲的作⽤下继续与频率控制字相加。
这样,相位累加器在时钟作⽤下,不断对频率控制字进⾏线性相位累加。
即在每⼀个时钟脉冲输⼊时,相位累加器便把频率控制字累加⼀次。
相位累加器输出的数据就是合成信号的相位。
相位累加器输出的数据,作为波形存储器的相位采样地址,这样就可以把存储在波形存储器⾥的波形采样值经查表找出,完成相位到幅度的转换。
波形存储器的输出数据送到 D/A 转换器,由 D/A 转换器将数字信号转换成模拟信号输出。
DDS 信号流程⽰意图如下:这⾥相位累加器位数为 N 位(N 的取值范围实际应⽤中⼀般为 24~32),相当于把正弦信号在相位上的精度定义为 N 位,所以其分辨率为1⁄2^N。
若 DDS 的时钟频率为Fclk,频率控制字 fword 为 1,则输出频率为Fout = Fclk/2^N ,这个频率相当于“基频”。
若fword 为 B,则输出频率为Fout = B × Fclk /2^N 。
DDS信号发生器报告-推荐下载
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电通,力1根保过据护管生高线0产中不工资仅艺料可高试以中卷解资配决料置吊试技顶卷术层要是配求指置,机不对组规电在范气进高设行中备继资进电料行保试空护卷载高问与中题带资22负料,荷试而下卷且高总可中体保资配障料置各试时类卷,管调需路控要习试在题验最到;大位对限。设度在备内管进来路行确敷调保设整机过使组程其高1在中正资,常料要工试加况卷强下安看2与全22过,22度并22工且22作尽2下可护1都能关进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编工.写况保复进护杂行层设自防备动腐与处跨装理接置,地高尤线中其弯资要曲料避半试免径卷错标调误高试高等方中,案资要,料求编5试技写、卷术重电保交要气护底设设装。备备4置管高调、动线中试电作敷资高气,设料中课并3技试资件且、术卷料拒管中试试调绝路包验卷试动敷含方技作设线案术,技槽以来术、及避管系免架统不等启必多动要项方高方案中式;资,对料为整试解套卷决启突高动然中过停语程机文中。电高因气中此课资,件料电中试力管卷高壁电中薄气资、设料接备试口进卷不行保严调护等试装问工置题作调,并试合且技理进术利行,用过要管关求线运电敷行力设高保技中护术资装。料置线试做缆卷到敷技准设术确原指灵则导活:。。在对对分于于线调差盒试动处过保,程护当中装不高置同中高电资中压料资回试料路卷试交技卷叉术调时问试,题技应,术采作是用为指金调发属试电隔人机板员一进,变行需压隔要器开在组处事在理前发;掌生同握内一图部线纸故槽资障内料时,、,强设需电备要回制进路造行须厂外同家部时出电切具源断高高习中中题资资电料料源试试,卷卷线试切缆验除敷报从设告而完与采毕相用,关高要技中进术资行资料检料试查,卷和并主检且要测了保处解护理现装。场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
DDS信号发生器(有图和完整代码)
本人做的一DDS信号发生器(有图和完整代码)本人做的一DDS信号发生器(有图和完整代码)这个DDS信号发生器是本人在学了一段时间的VHDL语言,在理解了DDS信号发生器原理的基础上做出来的一个小程序。
频率控制字是用的32位的,相位控制字是10位的,这些都是从外部输入,严格地说这并不是一个完整的DDS信号发生器,这只能说是一个核心的部份,各种参数和性能几乎全都由外围电路决定(如晶振和DA器件的性能)。
不过通过这个也能说明本人对VHDL语言和QuartusII的使用有了一定程度上的了解了。
-这是顶层文件:library ieee;use ieee.std_logic_1164.all;entity dds isport(Frequency_contol: in std_logic_vector(31 downto 0);Xia_Contorl : in std_logic_vector(9 downto 0);clk:in std_logic;sin_out:out std_logic_vector(7 downto 0));end dds;architecture behav of dds is --32位的加法器用来产生地址component adder32bport(in_data_a,in_data_b:in std_logic_vector(31 downto 0);sum:out std_logic_vector(31 downto 0));end component ;component adder10b --相位加法器也叫相们市制器port(in_data_a,in_data_b:in std_logic_vector(9 downto 0);sum:out std_logic_vector(9 downto 0));end component ;component reg32b --32位的寄存器用来输入频控制字也可以用来做设频用port(load: in std_logic;in_data:in std_logic_vector(31 downto 0);out_data: out std_logic_vector(31 downto 0));end component ;component out_32REG --一个32位寄存有一个口用来反馈一个用来输出port(data_in : in std_logic_vector(31 downto 0);load: in std_logic;data_feedbake: out std_logic_vector(31 downto 0);data_out: out std_logic_vector(9 downto 0));end component ;component sin_son --正弦查找表PORT(address : IN STD_LOGIC_VECTOR (9 DOWNTO 0);clock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));end component;component REG10b --10位寄存器模块用来存相位控制字port(load: in std_logic;in_data:in std_logic_vector(9 downto 0);out_data: out std_logic_vector(9 downto 0));end component ;signal Frequency_Con :std_logic_vector(31 downto 0);signal Fre_feedback :std_logic_vector(31 downto 0);--这是那个反馈回去的信号signal sum_data :std_logic_vector(31 downto 0);--这是丛32位加法器里出来的和信号signal Xian_Con :std_logic_vector(9 downto 0);--用来传递相位控制字--signal data_high_10B :std_logic_vector(9 downto 0); --用来传递累加器出的高10位signal adderss_10b :std_logic_vector(9 downto 0);beginu1: reg32b port map(load=>clk,in_data=>Frequency_contol,out_data=>Frequency_Con);u2: adder32b port map(in_data_a=>Frequency_Con,in_data_b=>Fre_feedback,sum=>sum_data);--u3: out_32REG port map(load=>clk,data_in=>sum_data,data_feedbake=>Fre_feedback,data_out=>data_high_10B);u3: reg32b port map(load=>clk,in_data=>sum_data,out_data=>Fre_feedback);u4: reg10b port map(load=>clk,in_data=>Xia_Contorl,out_data=>Xian_Con);u5: adder10b port map(in_data_a=>Fre_feedback(31 downto 22),in_data_b=>Xian_Con,sum=>adderss_10b);u6: sin_son port map(clock=>clk,address=>adderss_10b,q=>sin_out);end;--////////////////////////////////////////////////////////////////////////////////////////////////////////////--/////////////////////////////////////////////////////////////////////////////////////////////////////////////--这个是10位的加法器也可以说是相位调制器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity adder10b is --32位的加法器port(in_data_a,in_data_b:in std_logic_vector(9 downto 0);sum:out std_logic_vector(9 downto 0));end adder10b;architecture behav of adder10b isbeginsum<=in_data_a+in_data_b;end behav;--////////////////////////////////////////////////////////////////////////////////////////////////////////////--/////////////////////////////////////////////////////////////////////////////////////////////////////////////--这里是个32位的加法器用来把输出和32的频率控制字累加library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity adder32b is --32位的加法器port(in_data_a,in_data_b:in std_logic_vector(31 downto 0);sum:out std_logic_vector(31 downto 0));end adder32b;architecture behav of adder32b isbeginsum<=in_data_a+in_data_b;end behav;--////////////////////////////////////////////////////////////////////////////////////////////////////////////--/////////////////////////////////////////////////////////////////////////////////////////////////////////////--32位的寄存器library ieee;use ieee.std_logic_1164.all;entity out_32REG is --这是那个用来寄存反馈和输入相位调制的模块port(data_in : in std_logic_vector(31 downto 0);load: in std_logic;data_feedbake: out std_logic_vector(31 downto 0);data_out: out std_logic_vector(9 downto 0));end out_32REG;architecture behav of out_32REG isbeginprocess(load)beginif load'event and load='1' then data_feedbake<=data_in ; data_out<=data_in(31 downto 22); end if;end process;end behav;--////////////////////////////////////////////////////////////////////////////////////////////////////////////--/////////////////////////////////////////////////////////////////////////////////////////////////////////////--10位寄存器模块用来存相位控制字library ieee;use ieee.std_logic_1164.all;entity REG10b is --10位寄存器模块用来存相位控制字port(load: in std_logic;in_data:in std_logic_vector(9 downto 0);out_data: out std_logic_vector(9 downto 0));end reg10b;architecture behav of reg10b isbeginprocess(load)beginif load'event and load='1' then out_data <= in_data;end if;end process;end behav;--////////////////////////////////////////////////////////////////////////////////////////////////////////////--/////////////////////////////////////////////////////////////////////////////////////////////////////////////--最后再就是一个利用MegaWixard plug-in Manager定制的一个1024位的正弦ROM这里就不贴出来了。
基于DDS的移相正弦信号发生器设计
基于DDS 的移相正弦信号发生器设计一. 设计原理1.1 利用DDS 产生正弦波信号的工作原理由DDS 产生频率、相位可控制的正弦波。
频率累加器对输入信号进行累加运算, 产生频率控制数据M( 或相位步进量)。
读出的数据送入D/A 转换器和低通滤波器以恢复实际波形。
频率控制字M 和相位控制字分别控制DDS 输出正(余)弦的频率和相位。
DDS 系统的核心是相位累加器, 它由一个累加器和一个N 位相位寄存器组成。
每来一个时钟脉冲, 相位寄存器以步长M 增加。
相位寄存器的输出与相位控制字相加, 其结果作为正(余)弦查找表的地址。
ROM 查找表中储存着一个完整周期的正弦波数字幅度信息, , 每个查找表的地址对应正弦波中O 一360度范围中的一个相位点。
ROM 查找表把输入的地址信息映射成正(余)弦幅度信号, 同时输出数模转换器(DAC)的输入端, DAC 输出的模拟信号经过低通滤波器(LPF), 可得到一个频谱纯净的正(余)弦波。
从而实现正弦波信号的产生。
直接数字合成DDS 的可移相数字信号发生器原理图:1.2 DDS 的数字移相原理DDS 技术的核心是相位累加器, 它类似一个计数器.每来一个时钟信号, 相位累加器的输出就增加一个步长的相位增量, 相位增量的大小由频率控制字确定.经DDS 输出的信号可描述为)2sin()sin(t f A wt A S out out π== (1)其中, Sout 为经DDS 输出的信号, fout 为对应的输出频率, 时间t 是连续的。
为便于数字逻辑描述该表达式, 需进行离散化处理, 用基准时钟信号clk 进行抽样, 设正弦信号的相位φ= 2πfout t , 而在一个时钟周期Tclk 相位φ变化量为clkout clk out f f T f ππφ22==∆ (2) 式(2)中, fclk 是clk 的频率, 对于2π可以看成是满相位的1为了对输出的相位进行控制, 通过一个常数P 来实现, 而每个clk 周期的相位增量Δθ用P 来表示, 即Δθ= P ·Δφ式1 与式(2) 联立可得clkout f f P πθ2⋅=∆ (3) 显然, 信号发生器的输出可描述为)sin().sin(θφφφ∆+=∆+=A p A S out上式中, φ代表正弦信号发生器原始相位值, 可看出, 对相位值进行简单的累加运算, 就可以得到正弦信号当前相位值, 也就得到了DDS 输出的正弦信号。
实验1 DDS信号源实验报告
实验1 DDS信号源实验报告学号:222012315220065 姓名:唐小彬一、实验目的1.了解DDS信号源的组成及工作原理;2.掌握DDS信号源使用方法;3.掌握DDS信号源各种输出信号的测试;4.配合示波器完成系统测试。
二、实验仪器1.DDS信号源2. 100M双踪示波器1台三、实验原理1.DDS信号产生原理直接数字频率合成(DDS—Digital Direct Frequency Synthesis),是一种全数字化的频率合成器,由相位累加器、波形ROM、D/A转换器和低通滤波器构成。
时钟频率给定后,输出信号的频率取决于频率控制字,频率分辨率取决于累加器位数,相位分辨率取决于ROM 的地址线位数,幅度量化噪声取决于ROM的数据位字长和D/A转换器位数。
图2-1 DDS信号产生原理DDS信号源模块硬件上由cortex-m3内核的ARM芯片(STM32)和外围电路构成。
在该模块中,我们用到STM32芯片的一路AD采集(对应插孔调制输入)和两路DAC输出(分别对应插孔P03.P04)。
抽样脉冲形成电路(P09)信号由STM32时钟配置PWM模式输出,调幅、调频信号通过向STM32写入相应的采样点数组,由时钟触发两路DAC同步循环分别输出其已调信号与载波信号。
对于外加信号的AM调制,由STM32的AD对外加音频信号进行采样,在时钟触发下当前采样值与载波信号数组的相应值进行相应算法处理,并将该值保存输出到DAC,然后循环进行这个过程,就实现了对外部音频信号的AM调制。
实验箱的DDS信号源能够输出抽样脉冲(PWM)、正弦波、三角波、方波、扫频信号、调幅波(AM)、双边带(DSB)、调频波(FM)及对外部输入信号进行AM调制输出。
2.DDS信号源使用及信号生成表DDS信号源主要包含以下几个部分:LCD:显示输出信号的频率。
调制输入:外部调制信号输入铆孔(注意铆孔下面标注的箭头方向。
若箭头背离铆孔,说明此铆孔点为信号输出孔;若箭头指向铆孔,说明此铆孔点为信号输入孔)。
EDA(FPGA)DDS信号发生器课程设计实验报告
《电子系统实验报告》课程设计总结报告题目:DDS信号发生器设计人员:学号:同组人员:班级:指导老师:日期:2010.06.12DDS信号发生器一主要功能要求:本课程系统DDS信号发生器设计我们组利用FPGA生成DDS函数信号发生器内核和利用89S52单片机最小系统实现频率字输出和波形选择。
DDS模块与单片机的通信采用SPI串口协议。
系统的16位频率字输出采用单片机的SPI串口协议输出,在DDS模块内部采用16位移位寄存器和16位锁存器进行串行数据到并行数据的转换。
从而实现单片机到DDS模块的通信。
DDS模块由频率累加器、相位累加器、波形查找表、D/A模块组成。
且系统时钟频率工作于75MHZ。
频率和相位累加器采用32位累加器。
波形查找表由三个ROM表组成,分别存储正弦波、方波、三角波的量化数据。
再用一个三选一选择器作为波形输出的控制器件,控制信号由单片机输出。
二进制振幅键控的数字基带信号由VHDL语言生成M序列的二进制信号。
正弦波信号由正弦波表输出。
二者再进过一个乘法器,再到D/A模块。
由此完成2ASK模块的设计。
二进制振幅键控的数字基带信号由VHDL语言生成M序列的二进制信号。
进过二选一模块选择移位全零或者全一,查ROM表,选择移位180度或者0度,再到D/A。
由此完成2PSK模块设计。
(注:正弦波进行1024次量化采用公式512+511*sin(6.18/1024*k)------k值为1到1024对方波进行1024次量化采用前512位量化数值全为1023 后512位量化数值全为0三角波进行1024次量化采用1.3.5.7…..1023.1021.1019………7.5.3.1的方式进行量化)二整体设计框图及整机概述三系统实现的功能(1)可显示信号发生器输出波形与频率。
(2)正弦波、方波、三角波输出频率范围为35HZ ~ 1.17MHZ。
(3)具有频率设置功能。
(4)输出信号频率稳定度优于0.1。
DDS函数信号发生器的设计
DDS函数信号发生器的设计第一篇: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;//声明系统时钟为clkinput [23:0] fre_word;//声明24为频率控制字output reg [9:0] address;reg [23:0] phaseadder;always @(posedge clk)beginphaseadder=phaseadder+fre_word;address=phaseadder[23 :14];//地址取输出锁存后十位(对应波形为一个周期取1024点)end endmodule2、波形存储器设计本设计要求DDS系统能输出方波、三角波及正弦波三种波形。
DDS正弦信号发生器设计报告
基于DDS的正弦信号发生器设计报告院系:电子工程系专业:电子信息工程班级:姓名:1. DDS信号发生器原理对于正弦信号发生器,它的输出可以用下式来描述:其中,S out是指该信号发生器的输出信号波形,f out只输出信号对应的频率。
上式的表述对于时间t是连续的,为了用数字逻辑实现该表达式,必须进行离散化处理,用基准时钟clk进行抽样,令正弦信号的的相位θ为在一个clk周期Tclk,相位θ的变化量为其中f clk指clk的频率对于2π可以理解为“满”相位,为了对Δθ进行数字量化,把2π切割成2N,用词每个clk周期的相位增量Δθ用量化值BΔθ来描述:BΔθ=(Δθ·2N)/2π,且BΔθ为整数与上式联立可得:显然,信号发生器可以描述其中θk-1指前一个clk周期的相位值,同样得出由以上推倒可以得出,只要对相位的量化值进行简单的累加运算,就可以得到正弦信号的当前相位值,而用于累加的香味增量量化值BΔθ决定了信号的输出频率f out并呈现简单的线性关系。
直接数字合成器DDS就是根据以上原理而设计的数控频率合成器,下图为其基本DDS 结构,主要有相位累加器、相位调制器、正弦ROM查找表构成图中的相位累加器、相位调制器、正弦ROM查找表是DDS结构中的数字部分,图 12. 基于DDS的正弦信号发生器设计实现根据设计原理框图分别设计出加法器、寄存器、正弦波ROM。
2.1.1. 32位加法器ADDER32设计在原理图文件文件下在空白处双击,单击“MegaWizard Plug-In Manager”选择第一项图 2选择器件为cyclone,语言方式为VerilogHDL。
在算数项Arithmetic中选择计数器LPM_ADD_SUB.存于所建工程文件夹下命名为ADDER32.单击NEXT,进入以后对话框后选择32位加法器工作模式选择有一位加法进位输出,选择有符号加法方式,选择2级流水线工作模式 ,此时该加法器变为有时序电路的模块,最后至finish按钮,编辑完成。
DDS 实验报告
电子线路硬件课程设计实验报告课题:DDS信号发生器设计班级:电信0802作者:丁高强学号:U200812809指导老师:罗杰课设评价:课设成绩:一.实验目的1.通过本课程的训练,较系统地完成电子系统设计过程的方案论证、电路设计、电路实现、装配调试、系统测试等各个环节,加深对模拟电路、数字电路、微机原理等相关课程的理论知识的分析理解和综合应用,从而掌握工程设计的基本方法和一般规律。
2.充分发挥学生的自我能动性和创造力,引导学生由原理分析向工程设计过渡;3.进一步熟悉用集成器件实现电路与系统的方法。
4.培养撰写综合实验报告的能力。
二.实验原理DDS的基本原理是利用采样定理,通过查表法产生波形。
DDS 的结构有很多种,其基本的电路原理可用下图来表示。
相位累加器由N位加法器与N位累加寄存器级联构成。
每来一个时钟脉冲fc,加法器将频率控制字与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加寄存器的数据输入端。
累加寄存器将加法器在上一个时钟脉冲作用后所产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。
这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。
由此可以看出,相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率就是DDS输出的信号频率。
用相位累加器输出的数据作为波形存储器(ROM)的相位取样地址,这样就可把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出,完成相位到幅值转换。
波形存储器的输出送到D/A转换器,D/A转换器将数字量形式的波形幅值转换成所要求合成频率的模拟量形式信号。
低通滤波器用于滤除不需要的取样分量,以便输出频谱纯净的信号波形。
DDS在相对带宽、频率转换时间、高分辨力、相位连续性、正交输出以及集成化等一系列性能指标方面远远超过了传统频率合成技术所能达到的水平,为系统提供了优于模拟信号源的性能。
基于DDS的信号发生器
DDS芯片AD9850内部结构
图2 AD9850内部结构
频率控制字的计算
DDS输出合成信号频率fo与其输入的参考时钟频率fc成正比,设波形存储器ROM的地址为N位, 频率控制字为K,则:
输出信号的频率分辨率为:
由奈奎斯特采样定理可知,DDS输出的最大频率为: 频率控制字可由以上公式推出:
相位控制字的计算
总体方案设计
系统结构框架
图设计是基于直接数字频 率合成技术,采用52系列单片机 控制DDS芯片AD9850,通过键盘 模块作为输入设备改变AD9850的频率控制字以产生频率 可调的信 号;同时利用LCD液晶模块作为输出设备显示输入信号的频率从而 验证输出结果 的正确性。
基于DDS的信号发生器
01 DDS简介
目录
CONTENTS
02 总体方案设计
03 硬件部分
04 软件部分
05 实验结果与分析
1 S E C T I O N
DDS简介
常见的信号发生器方法
采用传统的频率合成的方法直接产生所需要的波形,利用混频、滤波、分频及倍频等 技术老实现。但是采用这些中间技术使得直接频率合成器需要使用很多石英晶体, 电路环路多,使得结构复杂,容易产生杂散信号,合成信号频谱纯度不高。
体积小,功耗低,可靠性高
DDS基本原理
图1 DDS基本原理图
其中相位累加器的字长为N,波形存储器ROM数据位及D/A转换器的字长为D。相位累加器在fc的控制下以步 长K作累加,输出的 N 位二进制码与相位控制字P、波形控制字W相加后作为波形ROM的地址,从相应的 ROM单元中输出D位的幅度码S(n)经D/A转 换器变成阶梯波S(t),最后通过低通滤波器滤波后就得到 合成的信号波形。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子信息技术综合实训报告格式
竞赛题名称:《DDS信号发生器的设计》队员名称:
评阅人签名:
2012年9月15日
1、设计思路描述:
本设计是一个以AT89C51单片机为核心基于DAC0832芯片的DDS信号发生器。
信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出正弦波和三角波,波形的转换可通过软件控制。
本设计通过按键选择波形,经过AT89C51单片机将数据输出到DAC0832,由数字信号转变为模拟信号,再通过运放器稳定地输出到示波器上。
原理框图如下:
2、硬件电路图:
DAC0832是采样频率为八位的D/A转换器件,芯片内有两级输入寄存器,使DAC0832具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。
D/A转换结果采用电流形式输出。
要是需要相应的模拟信号,可通过一个高输入阻抗的线性运算放大器实现这个供功能。
运放的反馈电阻可通过RFB端引用片内固有电阻,还可以外接。
该片逻辑输入满足TTL电压电平范围,可直接与TTL电路或微机电路相接。
下面是DAC0832引脚图和内部结构电路图
DAC0832引脚功能说明:
DI0~DI7:数据输入线,TLL电平。
ILE:数据锁存允许控制信号输入线,高电平有效。
CS:片选信号输入线,低电平有效。
WR1:为输入寄存器的写选通信号。
XFER:数据传送控制信号输入线,低电平有效。
WR2:为DAC寄存器写选通输入线。
Iout1:电流输出线。
当输入全为1时Iout1最大。
Iout2: 电流输出线。
其值与Iout1之和为一常数。
Rfb:反馈信号输入线,芯片内部有反馈电阻。
Vcc:电源输入线(+5v~+15v)
Vref:基准电压输入线(-10v~+10v)
AGND:模拟地,摸拟信号和基准电源的参考地。
DGND:数字地,两种地线在基准电源处共地比较好。
主控电路及数模转换电路分别如下:
主控电路
数模转换电路3软件流程图:
4测试方法描述:
运用proteus软件设计好电路图,将程序代码编译好以后载入proteus中的AT89C51芯片进行仿真。
5测试数据:
仿真结果如下图所示:
三角波
正弦波
6数据分析与结论:
经过proteus软件的仿真,在示波器中完整地显示出了三角波和正弦波,整个电路设计基本成功。
附件1:
整体电路图:
附件2:PCB图:
附件3:
程序设计:
#include "reg51.h"
unsigned char flag;
bit time;
unsigned char sin(unsigned char x)
{
unsigned char code
sin_tab[]={125,128,131,134,138,141,144,147,150,153,156,159,
162,165,168,171,174,177,180,182,185,188,191,193,196,198,201,203, 206,208,211,213,215,217,219,221,223,225,227,229,231,232,234,235, 237,238,239,241,242,243,244,245,246,246,247,248,248,249,249,250, 250,250,250,250,250,250,250,249,249,248,248,247,246,246,245,244, 243,242,241,239,238,237,235,234,232,231,229,227,225,223,221,219, 217,215,213,211,208,206,203,201,198,196,193,191,188,185,182,180, 177,174,171,168,165,162,159,156,153,150,147,144,141,138,134,131, 128,125,122,119,116,112,109,106,103,100,97,94,91,88,85,82,79,76,73, 70,68,65,62,59,57,54,52,49,47,44,42,39,37,35,33,31,29,27,25,27,29,27, 25,23,21,
19,18,16,15,13,12,11,9,8,7,6,5,4,4,3,2,2,1,1,0,0,0,0,0,0,0,0,1,1,2, 2,3,4,4,5,6,7,8,9,11,12,13,15,16,18,19,21,23,25,27,29,31,33,35,37, 39,42,44,47,49,52,54,57,59,62,65,68,70,73,76,79,82,85,88,97,94,97, 100,103,106,109,112,116,119,122}; return sin_tab[x]; }
void DAC0832(unsigned char x)
{
P2=x;
}
void main()
{
unsigned char i;
i=0;
TMOD=0X02; //低半字节用来定义定时器0,用于控制输出波的频率
TH0=256-40; //定时时间
ET0=1; //定时中断允许控制位,允许
IT0=1; //外中断0触发方式控制位,低电平有效 IT1=1;
EX0=1; //外中断0允许控制位,允许
EX1=1;
EA=1; //中断允许总控制位,允许
TR0=1; //启动定时器工作
flag=0; //开始时无输出
while(1)
{
if(time==1)
{
time=0;
if(i>249)
i=0;
else
i++;
switch(flag)
{
case 0:DAC0832(0);
break;
case 1: //三角波
if(i>125)
DAC0832(250-i);
else
DAC0832(i);
break;
case 2: //正弦波
DAC0832(sin(i));
break;
default: break;
}
}
}
}
void time0()interrupt 1 {time=1;}
void int0() interrupt 0 {flag=1;}
void int1() interrupt 2 {flag=2;}。