verilog实验-计数器实验报告.docx

verilog实验-计数器实验报告.docx

ID:60775431

大小:19.50 MB

页数:22页

时间:2020-12-17

verilog实验-计数器实验报告.docx_第1页
verilog实验-计数器实验报告.docx_第2页
verilog实验-计数器实验报告.docx_第3页
verilog实验-计数器实验报告.docx_第4页
verilog实验-计数器实验报告.docx_第5页
资源描述:

《verilog实验-计数器实验报告.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、计数器1、实现目标及介绍实验实现了一个简易的计数器,计数范围可达899(0~899),通过key4按键计数,每按下一次,计数加一,百位数显示在led上,个位与十位显示在数码管上。为十进制计数,数码管1计数到九后置零。数码管2获得进位加一,数码管2到9后当再次获得个位进位时再次向百位进一,点亮led1,每百位点亮一个led。此外key4为清零键,可随时按键清零。2、效果展示计数99清零计数100视频展示(双击观看)3、代码实现与模块分析1.顶层模块modulejishuqi(inputwireclk,rst,//时钟和复位输入inputw

2、irekey1,//拨码计outputwire[7:0]led,outputwire[8:0]segment_led_1,segment_led_2//数码管输出);wirekey_pulse;reg[7:0]cnt;//计时计数器reg[7:0]hud;//百位计数initialhud[7:0]<=8'b;always@(posedgeclkornegedgerst)begin//数码管显示要按照十进制的方式显示if(!rst)begincnt<=8'h00;hud[7:0]<=8'b;endelseif(key_pulse)begi

3、nif(cnt[3:0]==4'd9)//个位进位判断begincnt[3:0]<=4'd0;if(cnt[7:4]==4'd9)//十位进位判断begincnt[7:4]<=4'd0;hud[7:0]<=hud[7:0]-1'b1;endelsecnt[7:4]<=cnt[7:4]+1'b1;endelsecnt[3:0]<=cnt[3:0]+1'b1;endelsecnt<=cnt;endassignled=hud;//例化调用数码管显示模块segmentu2(.seg_data_1(cnt[7:4]),//g_datainput.

4、seg_data_2(cnt[3:0]),//g_datainput.seg_led_1(segment_led_1),//MSB~LSB=SEG,DP,G,F,E,D,C,B,A.seg_led_2(segment_led_2)//MSB~LSB=SEG,DP,G,F,E,D,C,B,A);//例化调用消抖模块debounceu1(.clk(clk),.rst(rst),.key(key1),.key_pulse(key_pulse));endmodule2.数码管显示模块modulesegment(seg_data_1,seg_da

5、ta_2,seg_led_1,seg_led_2);input[3:0]seg_data_1;//数码管需要显示0~9十个数字,所以最少需要4位输入做译码input[3:0]seg_data_2;//小脚丫上第二个数码管output[8:0]seg_led_1;//在小脚丫上控制一个数码管需要9个信号MSB~LSB=DIG、DP、G、F、E、D、C、B、Aoutput[8:0]seg_led_2;//在小脚丫上第二个数码管的控制信号MSB~LSB=DIG、DP、G、F、E、D、C、B、Areg[8:0]seg[9:0];//定义了一个r

6、eg型的数组变量,相当于一个10*9的存储器,存储器一共有10个数,每个数有9位宽initial//在过程块中只能给reg型变量赋值,Verilog中有两种过程块always和initial//initial和always不同,其中语句只执行一次beginseg[0]=9'h3f;//对存储器中第一个数赋值9'b00_0011_1111,相当于共阴极接地,DP点变低不亮,7段显示数字0seg[1]=9'h06;//7段显示数字1seg[2]=9'h5b;//7段显示数字2seg[3]=9'h4f;//7段显示数字3seg[4]=9'h6

7、6;//7段显示数字4seg[5]=9'h6d;//7段显示数字5seg[6]=9'h7d;//7段显示数字6seg[7]=9'h07;//7段显示数字7seg[8]=9'h7f;//7段显示数字8seg[9]=9'h6f;//7段显示数字9endassignseg_led_1=seg[seg_data_1];//连续赋值,这样输入不同四位数,就能输出对于译码的9位输出assignseg_led_2=seg[seg_data_2];endmodule3.按键消抖模块//按键消抖moduledebounce(clk,rst,key,key

8、_pulse);parameterN=2;//要消除的按键的数量inputclk;inputrst;input[N-1:0]key;//输入的按键output[N-1:0]key_pulse;//按键动作产

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。