DDS信号源的设计1课件.docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DDS信号源的设计1课件

EDA技术与实践教程 课题:DDS信号源的设计 姓名: 班级:通信15303 DDS信号源的设计 DDS的概述 DDS是一种以全数字技术从相位概念出发直接合成所需波形的一种频率合成技术。目前使用最广泛的方式是利用高速存储器查找表,然后通过高速DAC输出已经用数字形式存入的正弦波。DDS技术一般都是以数字控制振荡器NCO(Numerically?Controlled?Oscillator)为核心,来产生频率可调的sin正弦波的波形的数字量表示的幅值。这些数字量表示的波形幅值再通过一个DAC(Digital-Analog?Converter),得到正弦波的模拟量波形。它是在时域中进行频率合成,从而能够对输出频率进行快速而且精确的控制,并且这种控制全部都是数字控制,因此可以提供非常高的频率精度。 DDS工作原理 DDS的基本原理是利用采样定理,通过查表法产生波形。DDS的结构有很多种,其基本的电路原理可用下图1?来表示: 相位累加器由N位加法器与N位累加寄存器级联构成。每来一个时钟脉冲FS,加法器将频率控制字K与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加寄存器的数据输入端。累加寄存器将加法器在上一个时钟脉冲作用后所产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。由此可以看出,相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率就是DDS输出的信号频率。?用相位累加器输出的数据作为波形存储器(ROM)的相位取样地址,这样就可把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出,完成相位到幅值转换。波形存储器的输出送到D/A转换器,D/A转换器将数字量形式的波形幅值转换成所要求合成频率的模拟量形式信号。低通滤波器用于滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。?DDS在相对带宽、频率转换时间、高分辨力、相位连续性、正交输出以及集成化等一系列性能指标方面远远超过了传统频率合成技术所能达到的水平,为系统提供了优于模拟信号源的性能。 实验过程 实验目的 学习掌握DDS信号源的设计方法。 学习较复杂的数字系统设计方法。 实验内容 总体设计框图如下图所示: 总体框图中包含dds_sin,dds_rom,dds_fen三个模块。dds_fen根据需要生成的信号频率值,产生对应的时钟信号;dds_sin实现正弦波地址数据输出;dds_rom用来保存正弦波形数据。 端口说明 Clk:系统时钟 Clr:清零信号 Datain[19..0]:设定频率值 Dataout[7..0]:频率输出 (2)dds_?fen模块 根据需要生成的信号频率值,产生对应的时钟信号,是DDS设计的核心部分。Clk为系统时钟,clr为清零信号,?datain为所需频率值。产生对应的后续模块的时钟模块。在后续正弦波产生模块中需要提供的时钟信号为所需频率值的64倍,通过相位累加即可的得所需频率。 dds_fen模块的VHDL源代码如下: LIBRARY??IEEE;? USE?IEEE.STD_LOGIC_1164.ALL;? USE?IEEE.STD_LOGIC_UNSIGNED.ALL;? USE?IEEE.STD_LOGIC_ARITH.ALL;?? ENTITY?dds_fen?IS? GENERIC(WIDTH:INTEGER:=20;? clk_k:INTEGER:;? PORT(clk,clr:IN?STD_LOGIC;? datain:IN?STD_LOGIC_VECTOR(WIDTH-1?DOWNTO?0);? clk_out:OUT?STD_LOGIC);? END; ARCHITECTURE?one?OF?dds_fen?IS?SIGNAL?INTEGER?RANGE?0?TO?clk_k;? SIGNAL??data_c:STD_LOGIC_VECTOR((WIDTH-1+6)?DOWNTO?0);? SIGNAL?clk_out_c:STD_LOGIC;? BEGIN? data_c=datain”000000”;? PROCESS(clk,clr,datain)? BEGIN? IF?clr=’1’THEN?q=0;? ELSIF?clk’EVENT?AND?clk=’1’THEN? IF?qclk_k-CONV_INTEGER(data_c)THEN?q=q+CONV_INTEGER(data_c);?clk_out_c=’0’;?ELSE?q=0;? clk_out_c=’1’;? END?IF;?END?IF;? END?PROC

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档