ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:178.33KB ,
资源ID:6625294      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6625294.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于DDS的基本信号发生器资料.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于DDS的基本信号发生器资料.docx

1、基于DDS的基本信号发生器资料一、设计目标:1、 利用FPGA完成DDS波形产生的核心电路;2、 输出信号波形:正弦、方波、三角波波;3、 输出波形的频率48828.15Hz4882815Hz;4、 完成波形的仿真测试;二、设计思路采用直接数字合成器(DDS),可用硬件或软件实现。即用累加器按频率要求对相应的相位增量进行累加,再以累加相位值作为地址码,取存放于ROM中的波形数据,经D/A转换,滤波即得到所需波形。以EDA技术为基础,用FPGA实现DDS模型的设计。电路的规模大小和总线宽度可以由设计者根据自己的需要而设定可将波形数据存入FPGA的ROM中。同时外部控制逻辑单元也可在FPGA中实现

2、。方法简单,易于程控,便于集成。用该方法设计产生的信号频率范围广,频率稳定度高,精度高,频率转换速度快。在本设计中,用FPGA完成DDS核心电路模块设计,以quartus II软件为开发环境,使用Verilog HDL硬件描述语言完成硬件电路的设计,采用分块设计的思想,整个DDS模块框图如下:图 1 系统框图系统RTL电路图如下:图 2 DDS模块RTL视图各模块功能及设计思路:1、控制模块控制模块是从外部接收,实现DDS系统的控制功能,接收外部时钟信号、复位信号、10位频率控制字信号、10相位控制字信号,两位的波形选择字信号。控制模块通过这些信号控制下层模块各种功能的实现。顶层模块中以一个1

3、0位的累加器产生地址,实现对对底层模块正弦、方波、三角ROM模块的的访问。2、正弦信号模块功能该模块式调用FPGA内部的M4K存储器,以宏模块定制一个ROM存储块,存储正弦信号数据。其中,通过MATLAB软件编程产生,产生的数据生成以个后缀为.Hex的文件,用来初始化ROM模块。正弦信号模块接收来自控制模块的地址信号,访问内部的ROM模块,并将正弦信号波形数据输出到波形选择模块。3、方波信号模块该模块式调用FPGA内部的M4K存储器,以宏模块定制一个ROM存储块,存储方波信号数据。其中,通过MATLAB软件编程产生,产生的数据生成以个后缀为.Hex的文件,用来初始化ROM模块。方波信号模块接收

4、来自控制模块的地址信号,访问内部的ROM模块,并将方波信号波形数据输出到波形选择模块。4、三角波信号模块该模块式调用FPGA内部的M4K存储器,以宏模块定制一个ROM存储块,存储三角信号数据。其中,通过MATLAB软件编程产生,产生的数据生成以个后缀为.Hex的文件,用来初始化ROM模块。三角信号模块接收来自控制模块的地址信号,访问内部的ROM模块,并将三角信号波形数据输出到波形选择模块。5、波形选择模块波形选择模块主要多路选择器构成,在接收到来自控制模块的复位信号,波形控制字和正弦、方波、三角模块传来的数据时,通过多路选择器的控制,输出我们想要的波形。6、顶层模块顶层模块将个顶层模块封装好,

5、做成DDS的基本函数信号发生 器。三、源代码清单:顶层模块/*顶层模块*模块功能:按设计要求输入10位频率控制字,10位的相位控制字,2位的波形控制字输出10位并行的波形幅度*/module DDS(rst,clk,con_f,con_p,sec_w,out_addr,wave_data);input rst, /复位信号 clk, /时钟信号 con_f, /频率控制字输入端口 con_p, /相位控制字输入端口 sec_w; /波形选择输入端口 output wave_data; / 波形数据输出output out_addr; /测试管脚,观测地址变化wire 9:0 con_f;wir

6、e 9:0 con_p;wire 1:0 sec_w;wire 9:0 out_addr;wire 9:0 link_addr; wire 9:0 link_sin;wire 9:0 link_tri;wire 9:0 link_squ;wire 9:0 wave_data;assign out_addr=link_addr;control U1 ( .clk(clk), .rst(rst), .con_f(con_f), .con_p(con_p), .addr(link_addr) );sin U2( .clk(clk), .addr(link_addr),.sin_data(link_s

7、in) );triangular U3( .clk(clk), .addr(link_addr), .tri_data(link_tri) );square U4 ( .clk(clk), .addr(link_addr), .squ_data(link_squ) );sec_wave U5 ( .clk(clk), .sec_w(sec_w), .wsin(link_sin), .wtri(link_tri), .wsqu(link_squ), .wave_data(wave_data) );Endmodule控制模块/*control.vstart*按设计要求,输入10位的频率控制字,10

8、位的相位控制字,并输出10位二进制的信号幅值数据以累加器产生产生ROM访问地址,频率控制字、相位控制字和累加器输出数据之和形成最终10位地址数据,用来访问ROM*/module control(clk,rst,con_f,con_p,addr);input clk;input rst; /复位信号input con_f; /频率控制字输入端口input con_p; /相位控制字输入端口output addr; /ROM访问地址输出端口wire 9:0 con_f;wire 9:0 con_p;reg 9:0 addr;reg 9:0 frebuf; /频率控制字数据缓存reg 9:0 phe

9、buf; /相位控制字数据缓存reg 9:0 count; /累加器数据存储always(posedge clk) /将频率控制字,相位控制字存进缓存器中 begin if(rst) begin frebuf=0; phebuf=0; end else begin frebuf=con_f; phebuf=con_p; end end/-通过累加器产生ROM访问地址,并实现频率,相位的控制-always(posedge clk) begin if(rst) begin count=0; addr=0; end else begin count=count+frebuf; addr=count+

10、phebuf; end endendmodule正弦波形数据模块:module sin( clk, addr, sin_data);input wire clk;input wire 9:0 addr;output wire 9:0 sin_data;sin_data b2v_inst( .clock(clk), .address(addr), .q(sin_data);endmodule方波波形数据模块:module square( clk, addr, squ_data);input wire clk;input wire 9:0 addr;output wire 9:0 squ_data

11、;squ_data b2v_inst( .clock(clk), .address(addr), .q(squ_data);Endmodule三角波波形数据模块:module triangular( clk, addr, tri_data);input wire clk;input wire 9:0 addr;output wire 9:0 tri_data;tri_data b2v_inst( .clock(clk), .address(addr), .q(tri_data);endmodule波形选择模块:/*波形选择模块*按照波形控制字,对波形输出进行选择,输出正弦波,方波和三角*/mo

12、dule sec_wave(clk,rst,sec_w,wsin,wtri,wsqu,wave_data);input clk, /时钟信号 rst, /复位信号sec_w, /波形选择输入端口 wsin, /正弦波幅度数据 wtri, /三角波幅度数据wsqu; /方波波幅度数据output wave_data; /波形幅值数据输出端口wire 1:0 sec_w;wire 9:0 wsin;wire 9:0 wtri;wire 9:0 wsqu;wire 9:0 wave_data;reg 9:0 secbuf; /波形数据缓存assign wave_data=secbuf; /将波形数据送到输出端口/-通过三选一多选择路器实现波形的选择-always(posedge clk) begin if(rst) begin /wave_data=0; secbuf=0; end else begin case(sec_w) 2b00 : secbuf=wsin; 2b01 : secbuf=wtri; 2b10 : secbuf=wsqu; default :secbuf=0; endcase end endendmodule 四、仿真波形图 3 正弦波仿真图图 4 三角波仿真图图 5 方波仿真图

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1