欢迎来到天天文库
浏览记录
ID:39836759
大小:824.00 KB
页数:8页
时间:2019-07-12
《模可变计数器设计(Verilog语言)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、标准文档模可变计数器设计(一)实验目的1、进一步熟悉实验装置和QuartusⅡ软件的使用;2、进一步熟悉和掌握EDA设计流程;3、学习简单组合、时序电路的EDA设计;4、学习计数器中二进制码到BCD码的转换技巧;5、学习实验装置上数码管的输出方法。(二)设计要求完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现模可变计数器功能,具体要求如下:1、设置一个按键控制改变模值,按键按下时模为10-99之间(具体数值自行确定)的数,没按下时模为100-199之间(具体数值自行确定)的数;2、计数结果用三位数码管十进制显示。(三)主要
2、仪器设备3、微机1台4、QuartusII集成开发软件1套5、EDA实验装置1套(四)实验步骤主要有三个模块1:一个模20和模119的计数器2:数码管的显示3:BCD的调整源程序:modulecount(clk,m,en,rst,a,sel,SG,d);inputclk,m,en,rst;output[7:0]SG;output[2:0]sel;outputa;(*synthesis,keep*)regclk1;(*synthesis,keep*)wire[3:0]gw,sw,bw;/*(*synthesis,keep*)*/reg[3:0
3、]a;reg[11:0]q;reg[11:0]model;实用文案标准文档reg[7:0]cnt,SG;reg[2:0]sel;reg[0:0]d;output[0:0]d;always@(posedgeclk)begincnt=cnt+1;if(cnt==200)beginclk1=1'b1;cnt=0;endelseclk1=1'b0;//200分频,CLK为数码管扫描频率,CLK1为计数频率if(sel<2)sel=sel+1;elsesel=0;end//sel为数码管选择always@(sel)begincase(sel)0:a=
4、bw;//0数码管为百位1:a=sw;//1数码管为十位2:a=gw;//2数码管为个位default:a=0;endcasecase(a)0:SG<=8'b00111111;1:SG<=8'b00000110;2:SG<=8'b01011011;3:SG<=8'b01001111;4:SG<=8'b01100110;5:SG<=8'b01101101;6:SG<=8'b01111101;7:SG<=8'b00000111;8:SG<=8'b01111111;9:SG<=8'b01101111;//8段译码值default:SG=8'b11
5、111111;endcaseendalways@(m)if(m)model=12'b000000100000;//模值20elsemodel=12'b000100011001;//模值119assigngw=q[3:0];assignsw=q[7:4];assignbw=q[11:8];always@(posedgeclk1,negedgerst)beginif(!rst)q=0;elseif(en)beginif(q6、q=q+1;endelseq=0;endend实用文案标准文档always@(q)if(q7、5]PIN_F17SG[6]PIN_E18SG[7]PIN_F18clkPIN_C13enPIN_H8mPIN_J9rstPIN_C5sel[0]PIN_G18sel[1]PIN_G17sel[2]PIN_G16d[0]PIN_G13(三)实验心得本实验主要是三大模块的编写,第一次的实验在老师给的参考代码下进行的,不过错误依然很多,主要有几个重点药掌握,一是首先要编写出能够计数的模块,用m来控制模值的变化m=1时模值为20m=0时模值为119;二是计数模块都是二进制计数的,而要在数码管上显示计数的话就必须进行BCD调整,并且q是一个是十二位8、的寄存器,通过把gw=q[3:0];sw=q[7:4];bw=q[11:8]赋值的方法;一个个的显示在数码管上,由于clk的频率比较快,所以可以看到三位数码管显示的值,我觉得管脚
6、q=q+1;endelseq=0;endend实用文案标准文档always@(q)if(q7、5]PIN_F17SG[6]PIN_E18SG[7]PIN_F18clkPIN_C13enPIN_H8mPIN_J9rstPIN_C5sel[0]PIN_G18sel[1]PIN_G17sel[2]PIN_G16d[0]PIN_G13(三)实验心得本实验主要是三大模块的编写,第一次的实验在老师给的参考代码下进行的,不过错误依然很多,主要有几个重点药掌握,一是首先要编写出能够计数的模块,用m来控制模值的变化m=1时模值为20m=0时模值为119;二是计数模块都是二进制计数的,而要在数码管上显示计数的话就必须进行BCD调整,并且q是一个是十二位8、的寄存器,通过把gw=q[3:0];sw=q[7:4];bw=q[11:8]赋值的方法;一个个的显示在数码管上,由于clk的频率比较快,所以可以看到三位数码管显示的值,我觉得管脚
7、5]PIN_F17SG[6]PIN_E18SG[7]PIN_F18clkPIN_C13enPIN_H8mPIN_J9rstPIN_C5sel[0]PIN_G18sel[1]PIN_G17sel[2]PIN_G16d[0]PIN_G13(三)实验心得本实验主要是三大模块的编写,第一次的实验在老师给的参考代码下进行的,不过错误依然很多,主要有几个重点药掌握,一是首先要编写出能够计数的模块,用m来控制模值的变化m=1时模值为20m=0时模值为119;二是计数模块都是二进制计数的,而要在数码管上显示计数的话就必须进行BCD调整,并且q是一个是十二位
8、的寄存器,通过把gw=q[3:0];sw=q[7:4];bw=q[11:8]赋值的方法;一个个的显示在数码管上,由于clk的频率比较快,所以可以看到三位数码管显示的值,我觉得管脚
此文档下载收益归作者所有