




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子测量技术课程设计本文从DDS基本原理出发,利用FPGA来产生正弦波,可以实现频率和相位的控制和调节。相对于现在的DDS芯片,FPGA更加的灵活和方便。同时,也是未来得发展方向。一、设计要求 1基本要求(1)制作完成一路正弦波信号输出,频率范围20Hz20kHz;(2)具有频率设置和频率步进功能,频率步进10Hz;(3)输出信号频率稳定度优于10-5,用示波器观察时无明显失真;(4)输出电压幅度:在10k负载电阻上的电压峰-峰值Vopp20V;(5)数字显示正弦波的电压有效值、频率等,电压有效值精度5%,频率精度0.1%。2发挥部分(1)将正弦波输出信号扩展到三相输出,波形无明显失真,频率可调范围扩展到1Hz30kHz,频率步进1Hz;(2)在上述信号频率范围内,任两相间的相位差在0359范围内可任意预置,相位差步进1;(3)在1Hz30kHz频率范围内,增加矩形波输出信号,频率可任意预置,频率步进2Hz,频率精度0.05%;矩形波信号的占空比可以预置,占空比步进,当占空比为时,误差;(4)信号发生器能输出载波频率约为10kHz的调频信号输出,要求调制信号频率在100Hz1kHz频率范围内可变,用示波器观察载波信号无明显失真; 二、设计方案方案一:用专用的DDS芯片ADI公司的AD9959,AD9959可以实现最多16电平的频率、相位和幅度调制,还可以工作在线性调频、调相或调幅模式。AD9959的应用范围包括相控阵列雷达卢纳系统、仪表、同步时钟和RF信号源,并且有4路带10位DAC的DDS通道,最高取样频率为500 MSPS,完全可以满足题目要求。方案二:FPGA实现DDS技术,把DDS中的ROM改用SRAM,SRAM作为一个波形抽样数据的公共存储器,只要改变存储波形信息的数据,就可以灵活地实现任意波形发生器。方案比较:方案一中使用到专用的DDS芯片,利用专门DDS芯片开发的信号源比较多,它们输出频率高、波形好、功能也较多,但它们的ROM里一般都只存有一种波形(正弦波),加上一些外围电路也能产生少数几种波形,但速度受到很大的限制,因此使用不是很灵活。用FPGA设计DDS电路比采用专用DDS芯片更为灵活。因为只要改变SRAM中的数据,就可以产生任意波形,因而具有相当大的灵活性。FPGA芯片还支持在线升级,将DDS设计嵌入到FPGA芯片所构成的系统中,并采用流水线技术,其系统成本并不会增加多少,而购买专用芯片的价格则是前者的很多倍。因此,采用FPGA来设计DDS系统具有很高的性能价格比。因此我们选择方案一。三、单元模块设计本系统由FPGA、单片机控制模块、键盘、LCD液晶显示屏、DAC输出电路和稳压电源电路构成。用FPGA实现直接数字频率合成技术(DDS),产生正弦波、方波、三角波,合成FSK、ASK、PSK、AM、FM 等信号。采用单片机ATMAGE128控制直接数字频率合成器(DDS)的工作、按键及显示。整个系统结构紧凑,电路简单,功能强大,可扩展性强1. 系统框图2、FPGA DDS模块(参考附录)3、单片机最小系统级显示电路4、DA转换器模块5、3路OPA452,后级运算放大电路四、系统软件设计1、单片机显示控制程序流程图(如附录A)五、系统功能、指标参数1、系统功能:实现三相三相正弦信号输出设定输出误差506Hz505.8Hz0.2Hz1000Hz999.7Hz0.3Hz20548Hz20547.5Hz0.5Hz50000Hz49999.9Hz0.1Hz从以上数据可以得出,系统完全符合指标。测试仪器Tektronix TDS 2024B 示波器 Luyang YB1731B 3A DC POWER SUPPLY;数英 TFG3150L DDS函数信号发生器六、设计总结 本设计提出了一种使用经济有效的低频信号发生器的设计方法,系统可以实现各种频率各种相位的输出,可以实现ASK、FSK调制信号的输出,其他的调制信号也可在以后系统升级中需要的时候设置,也可在载波位10K模拟调频信号的输出,调制信号在100HZ到1KHZ范围内可调。系统功能强大,更可以升级扩长,系统DDS部分用的是 Verilog HDL和VHDL混合编程实现,可以很方便的下载到FPGA芯片中测试,可以得到广泛的应用。 参考文献 1信号与系统,ALAN V.OPPENHEIM著,西安:西安交通大学出版社,1997年; 2VHDL高等教程,刘明业著,北京:清华大学出版社,2004年; 3Verilog 数字系统设计,夏宇闻著,北京:北京航空航天大学出版社,2008年; 4基于FPGA的DDS调频信号得研究与实现,石伟,宋跃,李琳著,湖南:湖南科技大学,2000年;附录A 附录B 附录C DDS得VHDL程序:library ieee;use ieee.std_logic_1164.all;use IEEE.STD_LOGIC_arith.all;use IEEE.STD_LOGIC_unsigned.all;use work.sine_lut_pkg.all;package dds_synthesizer_pkg is component dds_synthesizer generic( ftw_width : integer ); port( clk_i : in std_logic; rst_i : in std_logic; ftw_i : in std_logic_vector(ftw_width-1 downto 0); phase_i : in std_logic_vector(PHASE_WIDTH-1 downto 0); phase_o : out std_logic_vector(PHASE_WIDTH-1 downto 0); ampl_o : out std_logic_vector(AMPL_WIDTH-1 downto 0) ); end component;end dds_synthesizer_pkg;package body dds_synthesizer_pkg isend dds_synthesizer_pkg;- Entity Definitionlibrary ieee;use ieee.std_logic_1164.all;use IEEE.STD_LOGIC_arith.all;use IEEE.STD_LOGIC_unsigned.all;use work.sine_lut_pkg.all;entity dds_synthesizer is generic( ftw_width : integer := 32 ); port( clk_i : in std_logic; rst_i : in std_logic; ftw_i : in std_logic_vector(ftw_width-1 downto 0); phase_i : in std_logic_vector(PHASE_WIDTH-1 downto 0); phase_o : out std_logic_vector(PHASE_WIDTH-1 downto 0); ampl_o : out std_logic_vector(AMPL_WIDTH-1 downto 0) );end dds_synthesizer;architecture dds_synthesizer_arch of dds_synthesizer is signal ftw_accu : std_logic_vector(ftw_width-1 downto 0); signal phase : std_logic_vector(PHASE_WIDTH-1 downto 0); signal lut_in : std_logic_vector(PHASE_WIDTH-3 downto 0); signal lut_out : std_logic_vector(AMPL_WIDTH-1 downto 0); signal lut_out_delay : std_logic_vector(AMPL_WIDTH-1 downto 0); signal lut_out_inv_delay : std_logic_vector(AMPL_WIDTH-1 downto 0); signal quadrant_2_or_4 : std_logic; signal quadrant_3_or_4 : std_logic; signal quadrant_3_or_4_delay : std_logic; signal quadrant_3_or_4_2delay : std_logic;begin phase_o = phase; quadrant_2_or_4 = phase(PHASE_WIDTH-2); quadrant_3_or_4 = phase(PHASE_WIDTH-1); lut_in = phase(PHASE_WIDTH-3 downto 0) when quadrant_2_or_4 = 0 else conv_std_logic_vector(2*(PHASE_WIDTH-2)-conv_integer(phase(PHASE_WIDTH-3 downto 0), PHASE_WIDTH-2); ampl_o = lut_out_delay when quadrant_3_or_4_2delay = 0 else lut_out_inv_delay; process (clk_i, rst_i) begin if rst_i = 1 then ftw_accu 0); phase 0); elsif clk_ievent and clk_i = 1 then ftw_accu = conv_std_logic_vector(conv_integer(ftw_accu) + conv_integer(ftw_i), ftw_width); phase = conv_std_logic_vector(conv_integer(ftw_accu(ftw_width-1 downto ftw_width-PHASE_WIDTH) + conv_integer(phase_i), PHASE_WIDTH); if quadrant_2_or_4 = 1 and phase(PHASE_WIDTH - 3 downto 0) = conv_std_logic_vector (0, PHASE_WIDTH - 2) then lut_out = conv_std_logic_vector(2*(AMPL_WIDTH - 1) - 1, AMPL_WIDTH); else lut_out = sine_lut(conv_integer(lut_in); end if; q
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 雅安抽水储能项目可行性研究报告
- 救生潜水钟项目可行性研究报告
- 安全保障工程实施方案(3篇)
- 教育科技行业数字化转型研究
- 委托制作合同模板
- 绿色产业项目方案招标
- 征收货币安置合同书5篇
- 少数民族文创产品创新设计研究-洞察及研究
- 辽宁省普通高中联考2025-2026学年高二上学期9月月考物理试卷
- 阜外医院石丽的课件
- 2025年全国新高考I卷真题1卷语文+数学+英语试卷(含答案)
- 中国山西省危险废物处理市场调查报告
- 成人床旁心电监护护理规程
- 2025年高考全国一卷语文试题真题文档版(含答案)
- 公司财务u盾管理制度
- 拍摄肖像授权协议书
- 叶轮逆向设计方法与流程
- 《畜禽环境卫生》第一章-环境与畜禽的关系
- 《医疗的人文关怀》课件
- 非盗抢汽车合同协议
- 爱国卫生运动主题班会课件
评论
0/150
提交评论