电子系统CAD课程设计基于FPGA的简易函数信号发生器设计.doc

上传人:土8路 文档编号:11069678 上传时间:2021-06-26 格式:DOC 页数:18 大小:327.50KB
返回 下载 相关 举报
电子系统CAD课程设计基于FPGA的简易函数信号发生器设计.doc_第1页
第1页 / 共18页
电子系统CAD课程设计基于FPGA的简易函数信号发生器设计.doc_第2页
第2页 / 共18页
电子系统CAD课程设计基于FPGA的简易函数信号发生器设计.doc_第3页
第3页 / 共18页
电子系统CAD课程设计基于FPGA的简易函数信号发生器设计.doc_第4页
第4页 / 共18页
电子系统CAD课程设计基于FPGA的简易函数信号发生器设计.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《电子系统CAD课程设计基于FPGA的简易函数信号发生器设计.doc》由会员分享,可在线阅读,更多相关《电子系统CAD课程设计基于FPGA的简易函数信号发生器设计.doc(18页珍藏版)》请在三一文库上搜索。

1、 电子系统CAD课程设计学院: 信息电子学院 班级: 08电子信息工程3班 学号: E08610308 姓名: 陈建能 指导老师: 张国萍 日期: 20111210 目录1、课程设计目的32、课程设计工具及题目32.1、课程设计工具.3 2.2、课程设计题目.33、课程设计内容及步骤43.1、课程设计内容.43.2、课程设计步骤.44、课程设计程序(源代码)5 4.1利用DSP Builder设计DDS 54.2方波模块.64.3三角波模块.74.4锯齿波模块.94.5幅度控制字模块.104.6频率控制字模块.114.7相位控制字模块.124.8波形使能与选择模块.145、课程设计成果.175

2、.5硬件实物图.17 5.2正弦波显示.17 5.3方波显示.185.4三角波显示.19 5.5锯齿波显示.216、课程设计心得.227、参考文献.22课程设计目的:设计一个直接数字频率合成(DDS,Direct Digital Synthesis),DDS是一种新型的频率合成技术。DDS 技术是一种把一系列数字形式的信号通过DAC 转换成模拟信号的合成技术。DDS 技术具有频率切换时间短,频率分辨率高,频率稳定度高,输出信号的频率和相位可以快速切换,输出相位可连续,并且在改变时能够保持相位的连续,很容易实现频率、相位和幅度的数字控制。它在相对带宽、频率转换时间、相位连续性、高分辨率以及集成化

3、等一系列性能指标方面远远超过了传统频率合成技术。因此在现代电子系统及设备的频率源设计中,尤其在通信领域,直接数字频率合成器的应用越来越广泛。课程设计工具及题目: 1、课程设计工具:PC机、KX_DVP3D开发实验板, QuartusII,示波器2、课程设计题目:基于FPGA的简易函数信号发生器设计课程设计内容、步骤及电路原理图系统图如下:1、利用DSP Builder设计DDSDSP Builder是Altera公司的一款将MathWorksMatlab和Simulink系统级设计工具的算法开发、仿真和验证功能与VHDL综合、仿真和Altera开发工具整合在一起的设计软件,DSP Builde

4、r是Matlab的一个Simulink工具箱,用于图形化建模仿真,功能非常强大。根据DDS原理建立图2的DDS模型,电路模块全部采用无符号数,频率字为10 b,相位字为10 b,分别控制输出正弦波的频率和相位变化。由AltBus、Parallel Adder Subtractor、Delay构成相位累加器,正弦查找表模块LUT计算式为:511*sin(0:2*pi(210):2*pi)+512。在Simulink中仿真,仿真结果见图3,可见,DDS在频率字和相位字的控制下,可以得到标准正弦波输出。2、方波模块module square(clk, en, out, fre1, am1);inpu

5、t clk, en;input9:0 fre1;input5:0 am1;output9:0 out;reg9:0 res;reg 31:0 n;reg flag;assign out = res;always (posedge clk)beginif(en = 1)beginn = n + 1;if(n = (1024 - fre1)+ 20)beginn = 0;flag = flag;if(flag)res = 0;else res = 17 * am1;endendendendmodule3、三角波模块module triagle(clk, en, out, fre1, am1);in

6、put clk, en;input9:0 fre1;input5:0 am1;output9:0 out;reg9:0 res;reg 31:0 n;reg flag, a = 0;assign out = res;always (posedge clk)beginif(en = 1)beginn = n + 1;if(n = 1024 - fre1 + 20)beginn = 0;if(a = 0)res = res + 1;else if(a = 1)res = res - 1;if(res = 16 * am1 + 60)a = 1;else if(res = 0)a = 0;enden

7、dendendmodule4、锯齿波模块module sawtooth(clk, en, out, fre1, am1);input clk, en;input9:0 fre1;input5:0 am1;output9:0 out;reg9:0 res;reg 31:0 n;reg flag;assign out = res;always (posedge clk)beginif(en = 1)beginn = n + 1;if(n = 1024 - fre1 + 20)beginn = 0;res = res + 1;if(res = 16 * am1 + 60)res = 0;endend

8、endendmodule5、幅度控制字模块module am(clk, add, sub, out);input clk, add, sub;output 5:0 out;reg 5:0 res = 10;reg 31:0 n, m;reg flag = 0;assign out = res;always (posedge clk)beginn = n + 1;if(n = 1000000)beginflag = 1;n = 0;endif(add = 0)beginif(add = 0 & flag)beginflag = 0;if(res = 15)res = res - 1;endend

9、endendmodule6、频率控制字模块module test(clk, add, sub, out, adclk);input clk, add, sub;output 9:0 out;output adclk;reg 9:0 res = 5;reg 31:0 n, m;reg flag = 0, aclk;assign out = res;assign adclk = aclk;always (posedge clk)beginn = n + 1;m = m + 1;if(m = 1000)beginaclk = aclk;m = 0;endif(n = 1000000)beginfla

10、g = 1;n = 0;endif(add = 0)beginif(add = 0 & flag)beginflag = 0;if(res = 5)res = res - 1;endendendendmodule7、相位控制字模块module test(clk, add, sub, out, adclk);input clk, add, sub;output 9:0 out;output adclk;reg 9:0 res = 5;reg 31:0 n, m;reg flag = 0, aclk;assign out = res;assign adclk = aclk;always (pose

11、dge clk)beginn = n + 1;m = m + 1;if(m = 1000)beginaclk = aclk;m = 0;endif(n = 1000000)beginflag = 1;n = 0;endif(add = 0)beginif(add = 0 & flag)beginflag = 0;if(res = 5)res = res - 1;endendendendmodule8、波形使能与选择模块module four_one(clk, select, a1, a2, a3, a4);input clk, select;output a1, a2, a3, a4;reg

12、1:0 res = 0;reg 31:0 n;reg flag = 0, a11, a21, a31, a41;assign a1 = a11;assign a2 = a21;assign a3 = a31;assign a4 = a41;assign out = res;always (posedge clk)beginn = n + 1;if(n = 15000000)beginflag = 1;n = 0;endif(select = 0)beginif(select = 0 & flag)beginflag = 0;res = res + 1;if(res = 0)begina11 =

13、 1;a21 = 0;a31 = 0;a41 = 0;endelse if(res = 1)begina11 = 0;a21 = 1;a31 = 0;a41 = 0;endelse if(res = 2)begina11 = 0;a21 = 0;a31 = 1;a41 = 0;endelsebegina11 = 0;a21 = 0;a31 = 0;a41 = 1;endendendendendmodulemodule waves(clk, ina, inb, inc, ind, in1, in2, in3, in4, out_wave);input clk, ina, inb, inc, in

14、d;input9:0 in1, in2, in3, in4;output 9:0 out_wave;reg 9:0 res;assign out_wave = res;always (posedge clk)beginif(ina = 1)res = in1;else if(inb = 1)res = in2;if(inc = 1)res = in3;else if(ind = 1)res = in4;endendmodule课程设计心得通过此次实验,进一步了掌握FPGA的基本概念、原理和方法,掌握verilog语言,并能够正确地进行基本的计算机设计,编写相关的软件,在完成本课程学习后,能够进

15、行FPGA应用方面的工作,并为其它课程奠定基础。一开始碰到了很多的问题,调用子模块的很多功能不是很熟,后来慢慢地熟悉起来了。对于各种操作可以用子程序来完成。这样程序就显得很有结构。可以分步来调试他的正确性和实用性。当框架基本上理好以后就简单多了,然后分步一个程序一个程序地解决掉。最后就是完善各个程序,组装在一起。然后合成了最终的程序。不过还是有点小问题。本课程设计用到的只是颇多,首先就是dds了,由于用了dsp builder,所以显得十分地简单,根本不用写程序和理解算法,只要打出仿真图,然后可以直接生成vhdl的代码,可以生成一个子模块,然后编写好其他的子模块,连接图形就可以完成基本的功能了。 此次课程设计虽然基本完成了,但是还有很多不足之处。比如说频率的变换范围有些问题,相位控制不知道怎么测,出来的波形有些失真。虽然用了超高速的DA5651。相信经过修正可以更加的完善。总之,这次课程设计让我对于FPGA有了更加深入的理解。参考文献1王振红 。全国大学生电子设计竞赛赛前训练题M 2010.61田耘 。Xilinx FPGA 开发实用教程M 2008.11

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1