基于DDS的信号发生器课程设计报告
- 格式:doc
- 大小:40.00 KB
- 文档页数:6
基于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的信号发生器
吴小川刘源源孔梅梅
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的正弦信号发生器设计(模版)顶层文件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的任意信号发生器设计的开题报告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信号发生器的设计(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技术(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(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(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(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.系统架构设计:根据芯片和性能要求设计系统架构,包括时钟源、数模转换器、滤波电路等。
电子系统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知识进行了巩固,对于一些以前没有接触过的模块进行了大胆尝试。
此外,我觉得最重要的,或许不是最后做出的信号发生器输出的是什么结果,而是在这个过程中,锻炼了自己不断发现问题并解决问题的能力。
一开始实现的信号发生器功能的确很少,在老师的指导下,进行了改进,优化了电路设计,并添加了新的功能,感觉收获颇多。