




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
IC课程设计报告IC课程设计报告 题目:直接数字合成器设计专业: XXXXXXXXXXXXX 班级: XXXXXXXXXXXX 组长: 成员: XXXX XXXX 指导老师: IC设计课程设计目录课程设计的要求21.1 课程设计的目的21.2 课程设计的条件21.3 课程设计的要求2课程设计的内容32.1、DDS基本原理32.2、设计思路42.3、DDS基本结构图42.4、程序代码阐述52.4.1、C语言部分52.4.2、Verilog HDL部分52.5、ModelSim验证72.6、硬件调试9课程设计的心得10参考文献10 课程设计的要求 1.1 课程设计的目的1、通过运用Verilog语言编写程序,体会程序的逻辑性,掌握基本的程序开发的注意事。在实践中,学习掌握简单、周全的编程方法;2、掌握工程的基本开发技能;3、培养综合运用Modelsim,Quartus II工具进行硬件开发的能力;4、培养数字系统设计的基本能力;5、理解DDS的定义与功能,掌握DDS的HDL编写方法。1.2 课程设计的条件1、Modelism仿真工具;2、Quartus II仿真工具;3、示波器;4、GW48-SOPC/DSP和其他适配板。1.3 课程设计的要求1、 输入不少于8位频率控制字,不少于8位相位控制字;2、 10位2进制数据输出,直接接GW-ADDA板上的D/A;3、 时钟信号使用GW48PK2上提供的信号,在所提供的开发板上仿真。 课程设计的内容 2.1、DDS基本原理 直接数字式频率合成器(Digital Direct Synthesizer,简称为DDS)是以数字信号处理理论为基础,从信号的幅度相位关系出发进行频率合成的。 与传统的频率合成器相比,DDS具有极高的分辨率、快速的频率转换时间、很宽的相对带宽、任意波形的输出能力和数字调制等优点。在数字化的调制解调模块中, 频率合成技术用于电子系统和设备的频率源设计。相位累加原理和移相原理:相位累加本设计采用初始相位控制字K的方式控制DDS的波形输出频率,原理是不断把K累加,产生所需要的信号,原理公式为accum=accum+k;另外,所谓移相是指两路同频的信号,以其中的一路为参考,另一路相对于该参考作超前或滞后的移动,即称为相位的移动。两路信号的相位不同,便存在相位差,简称相差。若我们将一个信号周期看作是360,则相差的范围就在0360之间。例如在图2.5中,以A信号为参考,B信号相对于A信号作滞后移相,则称A超前B,或称B滞后A。 图1 移相示意图因为本设计是采用FPGA实现DDS的功能,所以使用FPGA作为数据转换的桥梁,将波形数据存储到其内部的RAM中,并由DDS系统产生波形输出。需存储在RAM中的波形数据是由单片机采集外部数据,对ROM中存储的标准波形进行各种相应的运算而得到。波形表存储器ROM通过引用LMP函数来实现。采用N(8)位的寻址ROM相当于把02的正弦信号离散成具有2N个样值的序列,波形ROM有D(10)位数据位,所以设置2N个样值的sin值以D位二进制数值固化在ROM中,这里设置D=10,所以ROM中的数据范围应该从0到512,但是正弦值只从-1到1,所以要对其进行量化,公式如下:存储数据= =(sin(n*/128)+1)*256其中,n为存储地址,范围是从0到512。2.2、设计思路根据取样定理,从连续信号的相位出发,对一个正弦信号取样、量化、编码,形成一个正弦函数表,储存在只读存储器中,合成时通过改变相位累加器的频率控制字,改变相位增量,相位增量的不同导致一周期内的取样点不同,从而使得输出波形频率不同。根据DDS基本原理,具体的可以对照2.3的DDS基本结构图,所以我们将DDS设计成三个模块,分别为相位累加器(accumout=accumout+k)、加法器(sumout=sumin+p)、波形存储器,通过改变行为累加器的频率控制字K来使累加器增量改变,从而改变频率的大小。加法器接收相位控制字P和累加器的输出,用于产生波形存储器的地址信号,控制波形存储器的输出,经过D/A转换器在示波器上显示。2.3、DDS基本结构图时钟信号clock 相位控制字P 波形存储器加法器相位累加器频率控制字K示波器D/A转换器2.4、 程序代码阐述2.4.1、C语言部分C语言部分主要是用来产生ROM模块的波形文件的数据,这里设定256代表Sin函数的零点坐标,0和512分别代表-1和1;数据存储在sinrom.mif文件里,调用lmp函数时写入ROM。ROM宽度为N=8,输出数据的宽度为M=10。- 10 -#include string.h#include stdlib.h#include stdio.h#include math.hmain() double PI=3.1415926535; double i; int x,y; char a,b; char *c; char d10; FILE *fp; fp=fopen(c:sin.mif,wt+); c=WIDTH=10;nDEPTH=512 ; fprintf(fp,c); for(i=0;i=511;i=i+1) fprintf(fp,t); x=i; itoa(x,d,10); fprintf(fp,d); fprintf(fp,t:t); y=(sin(PI*x/128)+1)*256; itoa(y,d,10); fprintf(fp,d); fprintf(fp,;); fprintf(fp,n); fprintf(fp,END;n); fclose(fp); printf(nttcreate sin.mif successfully!nnttpress any key to exit!); getch(); exit(0);2.4.2、 Verilog HDL部分Verilog HDL部分主要分为四个模块一:累加器模块主要用于接收频率控制字K,在时钟信号的控制下累加,产生的累加和送给加法器,重点考虑电路的是否可以综合。module accum(k,accumout,reset,clock); input 7:0k;input reset,clock; output 7:0accumout; reg 7:0accumout; always(posedge clock) begin if(!reset) accumout=0; elseaccumout=k+accumout; endendmodule二:加法器模块主要用于接收相位控制字P,和累加器产生的结果accumout相加得到rom模块的地址,输给rom模块。module sum(clock,reset,p,sumin,sumout); input clock; input reset; output 7:0sumout; input 7:0p; input 7:0sumin; reg 7:0sumout; always(posedge clock) begin if(!reset) sumout=8h00; else sumout=p+sumin; end endmodule三:rom模块本课程设计的rom模块是使用Quartus II里的lmp函数生产的,过程可以参加Quartus II使用教程。用加法器的输出作为波形存储器的取样地址,进行波形的相位幅值转换,即可在给定的时间上确定输出的波形的抽样幅值。以正弦波形存储器sinrom为例,N(8)位的寻址ROM相当于把02的正弦信号离散成具有2N个样值的序列,波形ROM有D(10)位数据位,所以设置2N个样值的sin值以D位二进制数值固化在ROM中,这里设置D=10,所以ROM中的数据范围应该从0到512,但是正弦值只从-1到1,所以要对其进行量化,公式如下:存储数据= =(sin(n*/128)+1)*256 其中,n为存储地址,范围是从0到512。四:顶层模块将accum、sum和rom连接。代码:module ddstop(t_clock,t_reset,t_k,t_p,t_q); input t_clock,t_reset; input 7:0t_k; input 7:0t_p; output 9:0t_q; wire 7:0t_accumsuminout; wire 7:0t_sumout; wire 9:0t_q;accum u_accum(.k(t_k),.accumout(t_accumsuminout),.reset(t_reset),.clock(t_clock);sum u_sum(.clock(t_clock),.reset(t_reset),.p(t_p),.sumin(t_accumsuminout),.sumout(t_sumout);sinrom u_sinrom(.address(t_sumout),.clock(t_clock),.q(t_q) ;endmodule2.5、ModelSim验证分模块验证和截图一:Accum模块includeaccum.v;module test_accum; reg 7:0kt; wire 7:0accumoutt; reg clockt; reg resett; initial fork kt=0; #20 kt=1; #40 kt=0; #60 kt=1; clockt=0; resett=1; #80 resett=0; #90 resett=1; join always #5 clockt=clockt; accum accum_1(.k(kt),.accumout(accumoutt),.reset(resett),.clock(clockt);endmodule二:Sum模块includesum.v;module test_sum; reg 7:0sumint; reg 7:0pt; wire 7:0sumoutt; reg clockt; reg resett; initial fork pt=1; #40 pt=80; sumint=3; clockt=0; resett=1; #70 resett=0; #70 sumint=16; #80 resett=1;Join always #5 clockt=clockt; sum sum_1(.clock(clockt),.reset(resett),.p(pt),.sumin(sumint),.sumout(sumoutt);endmodule三:顶层模块module test_ddstop; reg 7:0t_kt; reg 7:0t_pt; wire 9:0t_qt; reg t_clockt; reg t_resett; initial fork t_kt=1;t_pt=0; t_clockt=0;t_resett=1;#70 t_kt=2; #70 t_pt=80; #70 t_clockt=0; #70 t_resett=0;#90 t_resett=1; Join always #5 t_clockt=t_clockt;ddstop ddstop_1(.t_clock(t_clockt),.t_reset(t_resett),.t_k(t_kt),.t_p(t_pt),.t_q(t_qt);endmodule;2.6、硬件调试在Quartus II中新建工程,导入顶层文件,并选择与试验箱相同的芯片,添加.v文件,并进行综合。当综合成功后则分配管脚,在此选择模式1。键7 为复位键,键1、键2为频率控制字K的输入键,键3、键4为相位控制字P的输入键,使用内部时钟信号。之后选定串口,添加文件,选定芯片开始烧写。 课程设计的心得 通过IC课程设计使我收获良多,并且有几点心得与教训。一、要有良好的编程习惯和逻辑思维。在课程设计良好的编程习惯和逻辑思维是很重要的,好的编程习惯可以是编程更容易学习和理解,同样好的逻辑思维可以是编程简单,每个语句都要有一定的目的。特别是在测试文件中,好的编程不仅会使语句简单,还会使我们写出更易懂、优良的程序。二、注意编程中可能出现的问题。Verilog语言不仅仅是一门编程语言,更是我们构建硬件电路的工具,虽然与C语言有很多相似的方面,但在逻辑性与时序性上与C语言有本质上的区别,硬件电路时完全并行执行的,不仅要考虑逻辑上的正确,更要考虑是否能够综合产生我们所需要的电路。如不能在不同always块中对同一变量进行赋值,又如赋值符号“=”“=”是不同的。三、由于实验板我们平常接触的不是很多,所以在做课程设计的过程中,遇到接引脚,确定开发板芯片类型的过程中,有很多需要学习的地方,并向老师请教,使是我们对开发板的使用更加熟悉。在以后的学习和工作中要多看程序,多理解,多体会,并积极和老师和同学探讨,不断地提高自己的学习和编程水平。四、Models
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国家能源广州市2025秋招面试专业追问及参考财务审计岗位
- 国家能源内江市2025秋招机械工程类面试追问及参考回答
- 中国广电菏泽市2025秋招笔试题库含答案
- 中国移动潜江市2025秋招行业常识50题速记
- 沧州市中石油2025秋招心理测评常考题型与答题技巧
- 四川中考物理试题及答案
- 2025年卫生公共考试试题及答案
- 定西市中石化2025秋招笔试模拟题含答案安全环保与HSE岗
- 江门市中储粮2025秋招安全环保岗高频笔试题库含答案
- 艺术单招江苏试卷及答案
- 济南市章丘区2024-2025七年级第一学期语文期中试题(带答案)
- 2024-2025学年九年级化学上册 第二单元 单元测试卷(人教版)
- 2024版人教版英语初一上单词默写表
- 双下肢乏力护理查房
- 工程结算审核服务方案技术标
- 公司驾驶业务外包管理办法
- 店中店合作协议
- AKAIEWI5000电吹管快速入门(中文说明书)
- 炉外精炼-RH读本
- 部编版语文小学五年级下册第一单元集体备课(教材解读)
- 模具设计与制造授课全张课件
评论
0/150
提交评论