verilog硬件描述语言课程设计Word文件下载.docx
《verilog硬件描述语言课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《verilog硬件描述语言课程设计Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
初步了解Verilog的编程及DE2板的应用,加强对其的实际应用操作能力。
(2)实验要求:
运用DE2上的DAC实现方波、阶梯信号发生器功能。
方波频率、占空比可设置。
阶梯波信号频率、幅度可调。
在完成基本要求的基础上,可进一步增加功能、提高性能。
2.功能
实验内容:
5.利用简易函数发生器
基本要求:
3设计方案
(1)设计流程图
(2)波形产生的基本原理
1.先利用时钟信号f_clk产生一个工作频率,输入的频率字保存在频率寄存器中,经N位相位累加器,累加一次,相位步进增加,经过内部ROM波形表得到相应的幅度值,经过D/A转换和低通滤波器得到合成的波形。
2.利用存储器,先把定点值存入存储器中,再通过choose选择所需要的那段地址的值,在通过data读出值。
3.最后利用波形仿真,通过转换把数字量转换为波形图。
(3)产生波形频率可调的方法
采用设置频率控制字的方法,设置一个输入端口【5:
0】q,并且下载时将其绑定在6个控制开关上,可以实现频率的调整,采用2进制,q的值就是频率的缩小(扩大)倍数。
(4)源程序
modulesq(f_clk,p,choose,data);
//端口设定
input[5:
0]p;
//频率控制字
inputchoose;
//波形选择
inputf_clk;
//内置晶振
output[7:
0]data;
wire[7:
0]data;
reg[5:
0]addr,address;
0]i;
regf_out;
initial
begin
i<
=0;
addr<
f_out<
end
always@(posedgef_clk)//利用计数器实现任意分频
begin
if(i==p)//设定频率控制字p
i=0;
f_out=~f_out;
else
i=i+1;
end
function[7:
0]romout;
//ROM的设定
input[5:
0]address;
case(address)//各波形初值的预装入
0:
romout=255;
//阶梯波初值
1:
2:
3:
4:
romout=128;
5:
6:
7:
8:
romout=64;
9:
10:
11:
12:
romout=0;
13:
14:
15:
16:
//方波初值
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
default:
romout=10'
hxx;
endcase
endfunction
always@(posedgef_out)
if(addr==16)//波形数据切换
addr=0;
addr=addr+1;
case(choose)//波形选择开关设定
0:
address=addr;
1:
address=addr+16;
endcase
assigndata=romout(address);
//将ROM中对应数据传递输出端口data输出
endmodule
4程序编译及仿真结果
(1)引脚的绑定图
(2)仿真编译图
阶梯波仿真结果
方波仿真结果
(3)波形产生效果图
阶梯波效果图
方波效果图
5.结束语
经过两周的课程设计,我觉得自己更进一步认识了Verilog语言的使用,并且对整个设计制作和仿真流程有了更深入的了解,从实验的迷惑到后来的熟练操作,再到实验报告撰写的结束,其中的每一步都是我受益匪浅。
坚持靠自己的独立思考并通过一步步的调试,最终成功地摸索程序并且进行了进一步优化最终完成实验,不但锻炼了逻辑思维能力,并且锻炼了自己的独立探索能力。
虽然自己的程序不是那么完美,但是每一步都有自己的劳动,都有自己的思想在其中,可以说,实验的结果自己还是比较满意的。
但是很明显有许多有待加强的地方。
实验综合性较强也比较复杂,在实验中涉及了本学期多个知识点,其中让我印象最深的是initial语句和function说明语句,因为这两个语句之前用得比较少。
我觉得这样的实验比较贴近学习和工作,通过自己动手更加能够充分掌握所学知识点,将书本和实际结合起来,希望以后可以开展更多这样的实验。
实验中也遇到了许多问题,比如,实验效果图出不来之类。
但通过两位老师的指导,最终把问题一一解决。
这对我来说是一次飞速的成长。
谢谢老师的指导!
6.附录
DE2简介
1.核心的FPGA芯片-CycloneII2C35F672C6,从名称可以看出,它包含有35千个LE,在Altera的芯片系列中,不算最多,但也绝对够用。
Altera下载控制芯片-EPCS16以及USB-Blaste对Jtag的支持。
2.存储用的芯片有:
512-KBSRAM,8-MbyteSDRAM,4-MbyteFlashmemory
3.经典IO配置:
拥有4个按钮,18个拨动开关,18个红色发光二极管,9个绿色发光二极管,8个七段数码管,16*2字符液晶显示屏
4.超强多媒体:
24位CD音质音频芯片WM8731(Mic输入+LineIn+标准音频输出),视频解码芯片(支持NTSC/PAL制式),带有高速DAC视屏输出VGA模块。
5.更多标准接口:
通用串行总线USB控制模块以及A、B型接口,SDCard接口,IrDA红外模块,10/100M自适应以太网络适配器,RS-232标准串口,PS/2键盘接口
6.其他:
50M,27M晶振各一个,支持外部时钟,80针带保护电路的外接IO
7.此外还有:
配套的光盘资料,QutuarsII6软件,NiosII6.0IDE,例程与说明文档。