基于DDS的信号发生器课程设计报告
基于DDS技术的交流信号发生器设计报告
基于DDS技术的的信号产生器设计报告目录摘要 (2)第一章、背景 (3)1.1题目要求 (3)1.2选题背景 (3)第二章、基本原理及元件 (4)2.1设计环境 (4)2.2 DDS原理 (4)2.3 AD9851芯片功能原理 (4)2.4 系统结构设计 (5)第三章、系统设计 (7)3.1单片机与AD9851的连接 (7)3.2 信号处理模块电路设计 (9)第四章、实验总结与心得体会 (15)附录:单片机代码 (16)摘要:本设计是根据直接数字频率合成(DDS) 原理,由AD9851为核心的DDS模块和单片机ADUC7026为核心的按键LCD显示控制模块、滤波模块等构成的DDS函数信号发生器,该系统可输出正弦波、方波、三角波和锯齿波,主要思路是由单片机控制芯片AD9851产生固定频率的正弦波,然后通过外部电路进行滤波和整波,分别得到相应频率的方波、三角波和锯齿波。
设计过程主要通过软件Multisim 11.0 设计与仿真。
关键词:信号发生器;直接数字频率合成;AD9851 芯片;ADUC7026 单片机第一章、背景一、题目及要求:1.计并实现一个由AD9850或AD9851为核心的DDS模块和单片机为核心的按键LCD显示控制模块、滤波模块等构成的DDS函数信号发生器。
基本功能: a、产生波形:正弦波、方波、三角波、锯齿波b、频率范围:正弦波为1Hz~10MHz,其它波形为1Hz~1MHzc、频率分辨率0.1Hzd、幅度范围:20mVp-p~10Vp-p;e、可测试外部输入信号的频率。
频率测量范围:1 Hz~100 MHz;输入信号幅度:100mVp-p~10Vp-p扩展功能: a、方波可实现波形占空比可调b、可实现其它更多波形;用户自定义波形的输入与产生c、可实现波形的定频、扫频、2PSK、ASK和FSK等d、提高所设计实现的波形发生器与频率计的量程与精度e、其他功能与性能。
2.用C51语言对设计进行描述,并下载到实验板上调试成功。
基于DDS的信号发生器
1.3直接数字频率合成技术的现状
随着数字信号理论和超大规模集成电路VLSI的发展,在频率合成领域诞生了一种革命性的技术,那就是七十年代出现的直接数字频率合成DDS,它的出现标志着频率合成技术迈进了第三代。1971年3月J.Tiemey和C.M.Tader等人首先提出了DDS的概念;利用数字方式累加相位,再以相位之和作为地址来查询正弦函数表得到正弦波幅度的离散数字序列,最后经D/A变换得到模拟正弦波输出。在系统时钟一定的情况下,输出频率决定于频率寄存器中的频率字。而累加器的字长决定分辨率。基于这样的结构DDS频率合成器具有以下优点:
1任务要求与设计的背景
1.1设计任务要求
本论文的任务是根据DDS信号发生器的特点和应用情况,结合新一代高性能芯片设计一种使用简单、性能优良的信号发生器。整个系统以单片机STC89S52控制,DDS芯片AD9851为核心,配置相应的外设及接口电路,用C语言开发,组成一个多功能的程控信号发生器,另外加一个无线模块,进行远程控制。
图2.1 AD9851的结构框图
2.2DDS的工作特点
DDS的原理使其具备了以下优良的工作特点:
(1)频率分辨率高
如前所述,DDS的分辨率在fc固定时,取决于相位累加器的位数N,只要N取足够大,理论上可以获得相应的频率分辨精度,这在传统的频率合成方法上是难以实现的。
(2)频率变化速度快
在DDS中,一个频率的建立时间通常取决于滤波器的带宽。其影响因素有内部数控振荡器内的工艺结构、数模变换及其它可能的信号处理步骤产生的时延,其中数字信号处理部分的时延与时钟周期相关。由于DDS中无须相位反馈控制,因而频率建立及切Βιβλιοθήκη 快并且与频率分辨率、频谱纯度相互独立。
基于DDS的信号发生器的实验报告
基于DDS的信号发生器
吴小川刘源源孔梅梅
2010年8月
摘要:本系统基于DDS信号源的原理,以单片机89C51为控制核心,采用DDFS (直接频率数字频率合成)技术,利用FPGA芯片EP1C6Q240合成大部分的电路,通过LCD的显示来实现波形、频率、幅度的控制输入,利用双口RAM进行数据的存储,双D/A的方法来实现频率的稳幅输出,再通过低通滤波器实现频率由1Hz~500KHz,幅度由0~5V的稳定输出的信号源。
关键字:DDS,单片机,FPGA,双口RAM,双D/A。
目录
总体框图
幅度控制、双D/A设计
双D/A转换是实现幅度可调和任意波形输出的关键,第一级D/A的输出作为第二级D/A转换的参考电压,以此来控制信号发生器的输出电压。
D/A转换器的电流建立时间将直接影响到输出最高频率。
本系统采用的是DAC800,电流建立时间为100ns,在最高频率点,一个周期输出32点,因此极限频率大概是。
EDA课程设计——基于DDS的正弦信号发生器设计(模版)
EDA课程设计——基于DDS的正弦信号发生器设计(模版)第一篇:EDA课程设计——基于DDS的正弦信号发生器设计(模版)顶层文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DDS ISPORT(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 ISCOMPONENT SUM99 ISPORT(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 ISPORT(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 ISPORT(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 ISPORT(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);BEGINU0:SUM99PORTMAP(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;USEIEEE.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“=>O UTP<=”00001110“;WHEN ”0001010“=>OUTP<=”0001000 0“;WHEN ”0001011“=>OUTP<=”00010001“;WHEN ”000 1100“=>OUTP<=”00010011“;WHEN ”0001101“=>OUTP< =”00010100“;WHEN ”0001110“=>OUTP<=”00010110“; WHEN ”0001111“=>OUTP<=”00010111“;WHEN ”0010000“=>OUTP<=”00011001“;WHEN ”0010001“=>OUTP<=”0 0011011“;WHEN ”0010010“=>OUTP<=”00011100“;WHEN ”001 0011“=>OUTP<=”00011110“;WHEN ”0010100“=>OUTP< =”00011111“;WHEN ”0010101“=>OUTP<=”00100001“; WHEN ”0010110“=>OUTP<=”00100010“;WHEN ”0010111“=>OUTP<=”00100100“;WHEN ”0011000“=>OUTP<=”0 0100101“;WHEN ”0011001“=>OUTP<=”00100111“;WHEN ”0011010“=>OUTP<=”00101001“;WHEN ”001 1011“=>OUTP<=”00101010“;WHEN ”0011100“=>OUTP< =”00101100“;WHEN ”0011101“=>OUTP<=”00101101“; WHEN ”0011110“=>OUTP<=”00101111“;WHEN ”0011111“=>OUTP<=”00110000“;WHEN ”0100000“=>OUTP<=”0 0110010“;WHEN ”0100001“=>OUTP<=”00110011“;WHEN ”0100010“=>OUTP<=”00110101“;WHEN ”0100011“=>O UTP<=”00110110“;WHEN ”0100100“=>OUTP<=”0011100 0“;WHEN ”0100101“=>OUTP<=”00111001“;WHEN ”010 0110“=>OUTP<=”00111011“;WHEN ”0100111“=>OUTP< =”00111100“;WHEN ”0101000“=>OUTP<=”00111110“; WHEN ”0101001“=>OUTP<=”00111111“;WHEN ”0101010“=>OUTP<=”01000001“;WHEN ”0101011“=>OUTP<=”0 1000011“;WHEN ”0101100“=>OUTP<=”01000100“;WHEN ”0101101“=>OUTP<=”01000110“;WHEN ”0101110“=>O UTP<=”01000111“;WHEN ”0101111“=>OUTP<=”01001001“;WHEN ”0110000“=>OUTP<=”01001010“;WHEN ”011 0001“=>OUTP<=”01001100“;WHEN ”0110010“=>OUTP< =”01001101“;WHEN ”0110011“=>OUTP<=”01001111“; WHEN ”0110100“=>OUTP<=”01010000“;WHEN ”0110101“=>OUTP<=”01010001“;WHEN ”0110110“=>OUTP<=”0 1010011“;WHEN ”0110111“=>OUTP<=”01010100“;WHEN ”0111000“=>OUTP<=”01010110“;WHEN ”0111001“=>O UTP<=”01010111“;WHEN ”0111010“=>OUTP<=”0101100 1“;WHEN ”0111011“=>OUTP<=”01011010“;WHEN ”011 1100“=>OUTP<=”01011100“;WHEN ”0111101“=>OUTP< =”01011101“;WHEN ”0111110“=>OUTP<=”01011111“; WHEN ”0111111“=>OUTP<=”01100000“;WHEN ”1000000“=>OUTP<=”01100010“;WHEN ”1000001“=>OUTP<=”0 1100011“;WHEN ”1000010“=>OUTP<=”01100100“;WHEN ”1000011“=>OUTP<=”01100110“;WHEN ”1000100“=>O UTP<=”01100111“;WHEN ”1000101“=>OUTP<=”0110100 1“;WHEN ”1000110“=>OUTP<=”01101010“;WHEN ”100 0111“=>OUTP<=”01101100“;WHEN ”1001000“=>OUTP< =”01101101“;WHEN ”1001001“=>OUTP<=”01101110“; WHEN ”1001010“=>OUTP<=”01110000“;WHEN ”1001011“=>OUTP<=”01110001“;WHEN ”1001100“=>OUTP<=”0 1110011“;WHEN ”1001101“=>OUTP<=”01110100“;WHEN ”1001110“=>OUTP<=”01110101“;WHEN ”1001111“=>O UTP<=”01110111“;WHEN ”1010000“=>OUTP<=”0111100 0“;WHEN ”1010001“=>OUTP<=”01111010“;WHEN ”101 0010“=>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”;WHENOTHERS=>OUTP<=“ 00000000”;END CASE;END IF;END PROCESS;END ARCHITECTURE ART;DAC 0832的VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.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)BEGINIF 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 ISPORT(CLK:IN STD_LOGIC;LOCK:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));END ENTITY REG0;ARCHITECTURE ART OF REG0 IS BEGINPROCESS(CLK)BEGINIF(CLK'EVENT AND CLK='1')THENIF LOCK='1'THENQ<=“0000011111”;END IF;END IF;END PROCESS;END ARCHITECTURE ART;相位寄存器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG1 ISPORT(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 BEGINPROCESS(CLK)ISBEGINIF(CLK'EVENT AND CLK='1')THENQ<=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 BEGINPROCESS(CLK)ISBEGINIF(CLK'EVENT AND CLK='1')THENQ<=D;END IF;END PROCESS;END ARCHITECTURE BEHAVE;相位累加器 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SUM99 ISPORT(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 ISSIGNAL TEMP:STD_LOGIC_VECTOR(9 DOWNTO 0);BEGINPROCESS(CLK,EN,RESET)ISBEGINIF RESET='1'THENTEMP<=“0000000000”;ELSEIF CLK'EVENT AND CLK='1'THENIF EN='1'THENTEMP<=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。
基于DDS的任意信号发生器设计的开题报告
基于DDS的任意信号发生器设计的开题报告1. 研究背景和意义随着现代通信、测量、测试系统的发展,需要对不同频率范围的信号进行产生、放大、调制等操作。
信号发生器作为测试中的一种基础仪器,在通信、测量、测试等领域有着广泛的应用。
传统的信号发生器使用数字控制数据采样(DDS)技术,具有频率高、相位稳定性好、频谱非常纯净等优点。
然而,传统的DDS信号发生器设计复杂、成本昂贵等缺点,更重要的是,其设计往往需要硬件和软件相结合,而且缺乏统一的规范和标准。
基于DDS的任意波形发生器可用于产生任意复杂的波形,其核心部件是DDS芯片。
DDS芯片具有极高的频率稳定性和精度,而且能够产生非常复杂的信号。
基于DDS的任意波形发生器的出现,使得信号发生器的设计难度大为降低,功率装置的体积更小、更精准、更易于操作且功能更强大。
该仪器可用于无线通信、天气雷达分析、磁共振成像、声信号产生等从15MHz到14GHz的频率范围。
2. 设计内容和技术路线基于DDS的任意波形发生器的设计主要包括硬件设计和软件设计两个方面。
硬件设计在硬件设计上,需要选择合适的DDS芯片、功率放大器、输入输出接口等元器件,并将它们在PCB板上布局并完成设计。
其中,DDS芯片是整个系统的核心,需要选择高性能、高速、高精度的DDS芯片。
在功率放大器的设计方面,需要根据DDS芯片所产生的低频信号经过低通滤波后来驱动功率放大器,将低功率信号放大到要求的功率范围内再通过无线射频传输到接收端。
软件设计在软件设计方面,需要编程控制DDS芯片来产生任意复杂的波形,并完成通信接口的设计。
其中,需要使用熟悉的嵌入式开发环境,根据DDS 芯片特定的寄存器集,以及相应的驱动程序来实现DDS芯片的控制和操作。
同时,需要编写计算机控制程序,来与DDS芯片进行通信交互,完成用户所需的波形生成和输出操作。
技术路线整个设计技术路线如下:方案选择根据项目需求和技术储备选择最佳技术方案元器件选型硬件设计方案中选择合适的元器件,如DDS芯片、功率放大器等软件设计中选用熟悉的开发环境来编写相应的程序硬件设计安排选定元器件的布局,完成硬件电路设计软件设计编写通信控制程序,生成任意波形信号组装调试PCB制板、元器件焊接、组装调试,使硬件系统正常工作系统测试对系统功能进行综合测试,完成故障排除和优化调整验收和文档完成系统验收和技术文档的整理3. 预期成果和意义预期成果本设计旨在设计一款基于DDS的任意波形发生器,能够发生任意复杂的波形信号,并提供相应的通信接口。
实验五 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的信号发生器设计
基于DDS的信号发生器设计一、引言信号发生器是电子测量仪表中常见的一种设备,用于产生具有不同特性的信号,以便在各种实验、测试和校准工作中使用。
传统的信号发生器通常通过模拟电路来实现,但由于其受到尺寸、可调性和稳定性等限制,逐渐被数字信号发生器(DDS)所取代。
DDS信号发生器利用数字技术直接生成信号,具有调频范围广、频率稳定度高、精度高等优点。
二、DDS技术原理DDS技术(Direct Digital Synthesis,直接数字合成)是一种通过数字信号直接合成模拟信号的技术,它将数字信号与时钟同步,并通过数模转换得到模拟信号。
DDS技术的实现核心是相位累加器、数控振荡器和数模转换器。
相位累加器用于累加相位值,数控振荡器通过相位值生成相应频率的信号,而数模转换器将生成的数字信号转换为模拟信号。
基于DDS的信号发生器可以通过使用FPGA(Field Programmable Gate Array)和AD(Analog Devices)公司的AD9854芯片来实现。
使用FPGA实现相位累加器和控制逻辑,AD9854负责生成模拟信号。
下面是基于DDS的信号发生器的设计步骤:1.系统架构设计DDS信号发生器可分为控制模块、相位累加模块、频率累加模块和数模转换模块。
控制模块负责接收用户输入的参数,并控制相位、频率等;相位累加模块负责相位的累加和输出;频率累加模块负责频率的累加和输出;数模转换模块负责将数字信号转换为模拟信号。
2.相位累加模块设计相位累加器使用FPGA中的计数器模块实现。
设置计数器的位宽,根据所需的相位分辨率来确定。
通过改变计数器的初始值和计数步长,可以实现相位的变化。
3.频率累加模块设计频率累加器使用FPGA中的加法器模块实现。
根据所需的频率范围和分辨率,对加法器的输入信号进行控制,实现频率的变化。
4.数模转换器设计AD9854芯片负责将数字信号转换为模拟信号。
将FPGA中的数字信号输入AD9854中,经过数模转换后输出模拟信号。
基于DDS技术的数控信号发生器的设计【开题报告】
毕业论文开题报告电子信息工程基于DDS技术的数控信号发生器的设计一.课题研究意义及现状直接数字频率合成DDS(Digital Direct Frequency Synthesis)是一种新的频率合成方法,是频率合成的一次革命。
但是限于当时微电子技术和数字信号处理技术的限制,DDS并没有得到足够的重视, 随着现代超大规模集成电路集成工艺的高速发展,使得数字频率合成技术得到了质的飞跃, 它在相对带宽、频率转换时间、相位连续性、正交输出、高分辨率以及集成化等一系列性能指标方面, 已远远超过了传统频率合成技术所能达到的水平。
但是由于D D S 数字化实现的固有特点, 决定了其输出频谱杂散较大,从20世纪80年代末开始通过深入的研究认识了DDS杂散成因及其分布规律后, 对DDS相位累加器进行了改进,ROM数据进行了压缩,使用了抖动注人技术以及对DDS工艺结构和系统结构进行了改进。
这些改进技术促使了AD、Qualcomm、stanford等公司一系列优良的DDS器件不断出现。
但工艺的完善并没有彻底解决DDS中DAC的瞬态毛刺和非线性这些固有缺陷, 而这些问题还会随着温度变化和电路工艺引人的数字噪声等发生随机变化,他们所带来的输出信号频谱质量劣化很难改善。
目前为止,DDS输出的频谱杂散很少有做到-60dBc以下的产品,一般比较好的产品都在-70dBe左右。
近几年来,随着DDS技术的不断完善和发展,其输出频率、杂散、相位噪声、功耗、集成化等各项性能指标较早期产品已有大大提高, 出现了一系列的优秀产品。
由于其在频率合成以及信号调制等方面出色的性能, 应用范围已扩展到通信、宇航、遥控遥测、仪器仪表等各项电子领域。
二.课题研究的主要内容和预期目标主要内容:设计DDS技术的数控信号发生器。
基本要求:(1)DDS输出频率为1Hz-10MHz的正弦信号。
(2)为了增加频率控制方式的多样性,设计频率控制的3种方式:点频,扫频,跳频,默认时为跳频。
基于DDS的正弦波信号发生器的设计
基于DDS的正弦波信号发生器的设计DDS(Direct Digital Synthesis,直接数字合成)技术是一种通过数字计算得到各种波形信号的合成技术。
正弦波信号发生器是一种用于产生正弦波信号的电子设备,通常用于各种测量、实验和测试中。
本文将介绍基于DDS的正弦波信号发生器的设计。
1.设计目标我们的设计目标是开发一个基于DDS的正弦波信号发生器,具有以下特点:-可以生成多种频率的正弦波信号;-可以通过数字控制方式调整频率;-可以输出稳定的、低失真的正弦波信号。
2.设计思路-选择一个固定的时钟频率作为DDS系统的时钟频率;-使用一个相位累加器来产生一个递增的相位值,该相位值与输出的正弦波信号频率相关;-使用一个查表ROM存储正弦波的采样值,根据相位值从查表ROM中读取相应的采样值;-使用一个数字到模拟转换器(DAC)将采样值转换成模拟信号输出。
3.系统设计基于上述思路,我们可以设计一个基于DDS的正弦波信号发生器,具体步骤如下:-设计一个用于控制频率的数字控制模块。
该模块可以接收一个控制信号,根据控制信号计算应当输出的频率,并将频率值传递给相位累加器。
-设计一个相位累加器模块。
该模块可以接收一个时钟信号和一个频率值,并根据时钟信号和频率值递增相位值,并将相位值传递给查表ROM模块。
-设计一个查表ROM模块。
该模块可以接收一个相位值,并根据相位值从查表ROM中读取相应的采样值。
-设计一个数字到模拟转换器(DAC)模块。
该模块可以接收一个采样值,并将采样值转换成模拟信号输出。
4.系统性能考虑在设计基于DDS的正弦波信号发生器时,需要考虑一些性能指标以确保输出的信号质量,如下所示:-频率范围:选择合适的时钟频率和相位累加器实现合理的频率范围。
-分辨率:根据需要的输出信号精度选择合适的查表ROM大小和DAC分辨率。
-失真度:选择合适的查表ROM分辨率和DAC精度,以及合适的滤波器设计,以保证输出信号的低失真度。
基于DDS信号发生器的设计
基于DDS信号发生器的设计基于DDS(Direct Digital Synthesis)信号发生器的设计是一种使用数字技术生成模拟信号的方法。
DDS信号发生器采用数字频率合成技术,具有频率范围广、频率分辨率高、频率稳定性好等优点,被广泛应用于通信、测量、无线电频率合成等领域。
在本文中,将详细介绍基于DDS信号发生器的设计方案。
一、DDS信号发生器的基本原理DDS信号发生器利用数字技术生成模拟信号,主要由时钟、相位累加器(Phase Accumulator)、相位调制器(Phase Modulator)和数模转换器(Digital-to-Analog Converter)等部分组成。
其基本原理如下:1.时钟:提供稳定的时钟信号,作为DDS信号发生器的时间基准。
2.相位累加器:接收时钟信号,用于累加相位增量,并生成数字相位信息。
3.相位调制器:将数字相位信息转换为模拟的、连续的相位信息。
4.数模转换器:将相位信息转换为模拟信号,并提供给外部使用。
二、基于DDS信号发生器的设计方案1.频率范围:DDS信号发生器的频率范围应满足实际应用需求。
一般DDS芯片的频率范围为几千Hz到几百兆Hz,可以选择适当的芯片。
2.频率分辨率:DDS信号发生器的频率分辨率应足够高,能够满足对精细频率调整的需求。
一般DDS芯片的频率分辨率为1Hz或更高。
3.频率稳定性:DDS信号发生器的频率稳定性应较高,能够保证频率输出的准确性和稳定性。
可以通过选择高质量的时钟源来提高频率稳定性。
4.输出波形:DDS信号发生器可以生成多种波形,如正弦波、方波、三角波、锯齿波等。
设计时应根据应用需求选择适合的波形。
5.控制接口:DDS信号发生器通常需提供控制接口,如USB、串口、以太网等,方便用户对信号发生器进行控制和调整。
设计方案可以按以下步骤进行:1.选择DDS芯片:根据需求选择合适的DDS芯片,如AD9850、AD9833等。
2.系统架构设计:根据芯片和性能要求设计系统架构,包括时钟源、数模转换器、滤波电路等。
基于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 输出的正弦信号。
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技术的信号发生器设计与实现1、引言信号发生器是电子测试与测量领域中的重要仪器之一,用于产生各种形式的信号,以供电子设备的测试、校准和研发使用。
传统的信号发生器通常采用模拟电路设计,存在精度不高、调节麻烦等问题。
而基于Direct Digital Synthesis (DDS) 技术的信号发生器,能够以数字方式生成精确的任意波形信号,具备灵活性、精度高、调节方便等特点。
本文将重点探讨基于DDS技术的信号发生器的设计与实现。
2、DDS技术原理DDS技术是一种通过数字方式生成任意波形信号的技术,其核心是一个快速数字频率合成器 (NCO)。
NCO通过参考频率和累加器的相位变化,生成具有不同频率、相位和幅度的数字信号,然后通过数字模拟转换器 (DAC) 将数字信号转换为模拟信号输出。
DDS技术的关键在于通过调整参考频率和相位累加器的步进值,可以在很短的时间内生成高精度和高稳定度的任意波形信号。
3、基于DDS技术的信号发生器设计在设计基于DDS技术的信号发生器时,需要考虑以下几个关键要素:3.1 参考频率参考频率是DDS信号发生器中的基准频率,它决定了信号发生器能够产生的最高频率。
通常选择一个稳定、精确的参考时钟作为参考频率源,这可以是一个稳定的晶振或者其他同步源。
参考频率的选择应当考虑设备的应用场景,以及对生成信号频率范围和分辨率的需求。
3.2 相位累加器相位累加器是DDS技术中的核心组成部分,它记录了信号的相位信息,并根据参考频率的步进值来更新相位。
相位累加器的位宽决定了相位分辨率,位宽越高,相位分辨率越高,生成的信号表现越精细。
相位累加器的更新速度也决定了信号发生器的输出速率,更新速度越快,信号发生器的输出频率范围越大。
3.3 数字模拟转换器DDS技术生成的是数字信号,因此需要通过数字模拟转换器将数字信号转换为模拟信号输出。
DAC的精度和速度决定了信号发生器的输出质量和速率。
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芯片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),最后通过低通滤波器滤波后就得到 合成的信号波形。
基于DDS的任意信号发生器设计【开题报告】
毕业论文开题报告电子信息工程基于DDS的任意信号发生器设计一、课题研究意义及现状频率合成器是现代电子系统的重要组成部分,是决定电子系统性能的关键设备之一。
随着现代通信技术的发展,系统对频率合成器提出了越来越高的要求。
低相位噪声、高频谱纯度、高捷变速率和高频率分辨率的频率合成器已经成为频率合成技术发展的主要趋势。
直接数字频率合成(DDS)是继直接频率合成(DS)和锁相环频率合成(PLL)之后出现的新的频率合成方法,它是近二十年新兴的一张频率合成技术,它具有分辨率高、切换速度快、相位连续等一系列优点,现已被广泛地应用于通信、雷达、电子对抗和仪器仪表等领域。
由于DDS的自身特点决定了它存在着以下两个比较明显的缺点:一是输出信号的杂散比较大,二是输出信号的带宽受到限制。
DDS输出杂散比较大这是由于信号合成过程中的相位截断误差、D/A转换器的截断误差和D/A转换器的非线性造成的。
当然随着技术的发展这些问题正在逐步的到解决。
如通过增长波形ROM的长度减小相位截断误差。
通过增加波形ROM的字长和D/A转换器的精度减小D/A量化误差。
在比较新的DDS芯片中普遍都采用了12bit的D/A转换器。
当然一味靠增加波形ROM 的深度和字长的方法来减小杂散对性能的提高总是有限的。
国内外学者在对DDS输出的频谱做了大量的分析以后,总结出了误差的频域分布规律建立了误差模型,在分析DDS频谱特性的基础上又提出了一些降低杂散功率的方法:可以通过采样的方法降低带内误差功率,可以用随机抖动法提高无杂散动态范围(在D/A转换器的低位上加扰打破DDS输出的周期性,从而把周期性的杂散分量打散使之均匀化)。
此外随着集成电路制造工艺的逐步提高,通过采用先进的工艺和低功耗的设计,数字集成电路的工作速度已经有了很大的提高。
现在最新的DDS芯片工作频率已经可以达到1GHz。
这样就可以产生频带比较宽的输出信号了。
为了进一步提高DDS的输出频率,产生了很多DDS与其他技术结合的频率合成方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子系统CAD课程设计
报告
电子系统CAD课程设计任务书
电子系统CAD要求最多以两个人为一组的形式,完成以下选题中的一项。
选题一:基于GSM的远程测温系统
通过利用移动通信GSM网络实现无线远程温度报警系统,基于GSM的远程监控系统可以随时随地接收来自远端现场情况的最新资料和报警信息,即当远程现场的温度超过报警阈值时,会自动通过GSM网络(GSM/GPRS模块)以短信的方式发送报警信息给需要通知的手机用户。
远端现场是基于PIC单片机的测温系统,并以RS232的方式与GSM模块通信。
具体功能:
1、测温现场以LCD方式显示当前温度,每隔10S进行温度采集
2、通过键盘可以手动设置报警温度阈值,以及报警手机号码
3、通过键盘可以查询报警手机号码
4、当温度超过报警阈值时,蜂鸣器报警的同时,并以短信的方式通知报警
手机
扩展功能:
5、可用远程短信设置阈值以及报警号码;
6、当温度回落安全值时,单片机控制GSM发送安全短信告知报警解除。
选题二:基于DDS的信号发生器
(1)基于AD9851实现函数信号发生器,即通过PIC等微控制器控制DDS芯片AD9851
输出频率可设置的正弦波或方波。
具体要求如下:
1、输出频率范围:1HZ~10MHZ
2、可通过键盘设置输出信号的频率,且频率步进可调,LCD做相应的显示
3、频率稳定度越高越好。
扩展功能:
4、输出正弦波的幅度可调节
(2)基于FPGA实现函数信号发生器
输出频率可设置的正弦波或方波。
具体要求如下:
1、输出频率范围:1HZ~10MHZ
2、可通过拨码开关设置输出信号的频率,且频率步进可调,LED做相应的显示
3、频率稳定度越高越好。
选题三:基于步进电机的位移控制系统
PIC微控制器通过控制步进电机28BY-48的运转实现位移运动,具体要求:
1、给定电机的转速,并应用红外测速的方式测量电机转速
2、通过键盘给定转速、位移方向、位移距离,同时LCD显示设置要求,到达目
的地时,蜂鸣器鸣叫通知,位移精度越高越好;
扩展功能:
3、在PC机上开发控制步进电机运动的人机界面,PC通过RS232与PIC通信,
相互传输数据信息。
用户通过PC机上的人机界面给出转速、位移方向和距离,同时PIC也向PC机返回位移运动结果。
基于DDS的信号发生器课程设计
一、DDS技术的基本原理
DDS电路的工作原理如图1所示:
图1
其工作过程为:
①将存于数表中的数字波形,经数模转换器D/A,形成模拟量波形。
②两种方法可以改变输出信号的频率:
1) 改变查表寻址的时钟CLOCK的频率,可以改变输出波形的频率。
2) 改变寻址的步长来改变输出信号的频率,DDS即采用此法。
步长即为对数字波形查表的相位增量,由累加器对相位增量进行累加,累加器的值
作为查表地址。
③D/A输出的阶梯形波形,经低通(或带通)滤波,成为质量符合需要的模拟波形。
该DDS系统的核心是相位累加器,它由一个加法器和一个N位相位寄存器组成,每来
图2 相位累加器工作示意图
一个时钟,相位寄存器以步长M 增加,相位寄存器的输出与相位控制字相加,然后输入到正弦查询表地址上。
正弦查询表包含一个周期正弦波的数字幅度信息,每个地址对应正弦波中 0~360o 范围的一个相位点。
查询表把输入的地址相位信息映射成正弦波幅度的数字量信号,驱动DAC ,输出模拟量。
相位寄存器每经过M N
2个c f 时钟后回到初始状态,相应
的正弦查询表经过一个循环回到初始位置,整个DDS 系统输出一个正弦波。
输出正弦波频率为:
频率控制字与输出信号频率和参考时钟频率之间的关系为:
其中N 是相位累加器的字长。
频率控制字与输出信号频率成正比,可见控制M 就能得到任意频率的信号。
在图中,相位累加器输出位并不全部加到查询表,而要截断。
相位截断减小了查询表长度,但并不影响频率分辨率,对最终输出仅增加一个很小的相位噪声。
通常用频率增量来表示频率合成器的分辨率,DDS 的最小分辨率为:
这个增量也就是最低的合成频率。
由取样定理,所产生的信号频率不能超过时钟频率的一半,因此最高的合成频率为: 在实际运用中,为了保证信号的输出质量,输出频率不要高于时钟频率的1/4,以避免混叠或谐波落入有用输出频带内。
正弦ROM 查询表完成输出信号相位到幅度的转换,它的输入是相位寄存器和相位控制字之和,其实也就是ROM 的地址值(宽度为P 位);ROM 查找输出的数据(也为P 位)送往D/A 转换成模拟信号。
在实际应用中,P 不能太大,如果P 太大,会导致ROM 容量的成倍上升,而输出受D/A 精度的限制未有很大改善。
图2为相位累加器工作示意图,从图中可以看出,虽然相位累加器的位数为N 位,但是只取高P 位进行ROM 查表。
二、设计思路及
基本内容 1、构造信号发
生器,产生频率可控的正弦波或
方波 16位加法器由
LPM_ADD_SUB
宏模块构成,设置了1阶流水线结构,使其在时钟控制下有更高的运算速度。
16位寄存器由LPM_FF 宏模块担任。
加法器与寄存器构成了一个16位的相位累加器,其中高7位A[14..8],A[15..9]均可作为波形数据ROM 的地址。
正弦波形数据ROM 模块的地址线为7位,数据线位宽为9位。
这就是说,其中一个周
期的正弦波数据有128个,每个数据有9位。
其输出可以接一个8位(截去最低位)的高速DAC 。
ROM 中的mif 文件由mif 波形发生器产生。
频率控制字输入为B[15..0]与由DAC[9..0]驱动的DAC 的正弦信号的频率关系可以表示为:
16
[15..0]2out clk B f f , 式中out f 为DAC 输出的正弦波信号频率;clk f 是CLK 的时钟频率,实验箱上的直接输入是262KHZ 。
原理图如下:
其中,choose 模块用于选择所要输出的波形是方波还是正弦波,当ENB=1时,输出的波形是方波,当ENB=0时输出的波形为正弦波。
(1)由输入的时钟脉冲为262KHZ ,相位累加器位宽为16位,得到步进频率为4HZ ,当频率控制字为4时,得到的正弦波的频率为16HZ 左右,波形如下:
(2)当频率控制字比较大时,为了体现出频率控制字的倍乘,所取波形如下:
(3)由于ROM 存储空间有限,在生成mif 波形文件的时候,取的点数为128,当频率控制字控制得到的波形频率为15KHZ 左右时,波形已经开始产生失真;当频率为138KHZ 左右时,则严重失真。
因此如果希望得到比较完美的波形,可适当增加mif 波形文件的采样点数以及数据位宽,这样在较高的采样频率下,仍能得到比较满意的波形。
(4)当ENB 即波形选择使能端为高电平时,输出波形为方波。
当频率达到26KHZ 左右时,波形开始失真,示波器显示如下:
2、在产生正弦波或方波的基础上,增加频率计及显示模块
(1)计数器模块,即通过比较器和锁存器得到输入信号脉冲的个数,这里采用一个双十进制计数器74390和其他一些辅助元件来完成。
(2)时序控制电路设计
欲使频率计能自动测频,还需增加一个测频时序控制电路,要求产生3个控制信号:CNT_EN 、LOCK 和CLR ,以便使频率计能够自动完成计数、锁存和清0三个重要的功能步骤。
该电路由3部分组成:4位二进制计数器7493、4-16译码器74154和两个由双与非门构成的RS 触发器。
(3)频率计主结构电路设计
在下图所示电路中,74374是8位锁存器;74248是7段BCD 译码器,其7位输出可以直接与7段共阴数码管相接(上方的74284显示各位频率计数值,下方的显示十位频率计数值),加入之前已经生成的计数器模块和时序控制电路模块,原理图如下:
3、基于DDS的信号发生器
将上述频率计模块加入到信号发生器中,并进行软件仿真
仿真结果如下:
三、存在的问题及解决方案
1、首先对于波形失真,可以增加采样点数或者是降低采样频率。
在只输出正弦波的设计中,可以得到1024个采样点,数据位宽为8位的mif文件,示波器显示结果很好。
2、由于ROM的存储空间有限,所以波形选择模块有待改进。
比较满意的结果是,所有的波形数据均存储在同一个ROM宏模块中,通过处理采样得到的数据,输出相应波形
3、在结合频率计,测出输出波形频率的电路设计中,思路是通过时序控制电路得到输出波形过程中,对包含的时钟脉冲个数进行计数,得到相应的频率。
软件仿真结果很好,但是在实验箱上的显示结果不太满意,可能与寄存器的存储脉冲频率以及计数形式有关。
四、总结
本次课程设计过程中,对之前学过的FPGA知识进行了巩固,对于一些以前没有接触过的模块进行了大胆尝试。
此外,我觉得最重要的,或许不是最后做出的信号发生器输出的是什么结果,而是在这个过程中,锻炼了自己不断发现问题并解决问题的能力。
一开始实现的信号发生器功能的确很少,在老师的指导下,进行了改进,优化了电路设计,并添加了新的功能,感觉收获颇多。