ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:16.62KB ,
资源ID:7011027      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7011027.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(FPGA数字时钟verilog.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

FPGA数字时钟verilog.docx

1、FPGA数字时钟verilog因为本人也是刚学习fpga的菜鸟,所以这个程序漏洞很多,仅供参考。/分频子模块module fenpin (clk,rst_n,en_1s,en_1ms); /产生1s,1ms的分频input clk;input rst_n;output en_1s;output en_1ms;reg31:0 jishu_1s;reg15:0 jishu_1ms;parameter cnt_1s =49999999; parameter cnt_1ms =49999; always(posedge clk or negedge rst_n) begin if(!rst_n) ji

2、shu_1s=32b0; else if(jishu_1scnt_1s) jishu_1s=jishu_1s+1b1; else jishu_1s=32b0; endalways(posedge clk or negedge rst_n) begin if(!rst_n) jishu_1ms=16b0; else if(jishu_1mscnt_1ms) jishu_1ms=jishu_1ms+1b1; else jishu_1ms=16b0; end assign en_1s=(jishu_1s=cnt_1s)? 1b1 : 1b0; /1sassign en_1ms=(jishu_1ms=

3、cnt_1ms)? 1b1 : 1b0; /1msendmodule/按键控制部分module anjian(clk,rst_n,key1,key2,key1_low,key2_low);input clk;input rst_n;input key1; / 分加input key2; / 分减output key1_low; /按键按下消抖后的标志位output key2_low;reg reg0_key; /key1消抖reg reg1_key;reg reg2_key; /key2消抖reg reg3_key;always (posedge clk or negedge rst_n) b

4、egin if(!rst_n) begin reg0_key = 1b1; reg1_key = 1b1; end else begin reg0_key = key1; reg1_key = reg0_key; /根据非阻塞赋值的原理,reg1_key 存储的值是reg0_key 上一个时钟的值 end end /脉冲边沿检测法,当寄存器 key1 由 1 变为 0 时,key1_an 的值变为高,维持一个时钟周期 wire key1_an; assign key1_an = reg1_key & ( reg0_key); always (posedge clk or negedge rst

5、_n) begin if(!rst_n) begin reg2_key = 1b1; reg3_key = 1b1; end else begin reg2_key = key2; reg3_key = reg2_key; end end/脉冲边沿检测法,当寄存器 key2 由 1 变为 0 时,key2_an 的值变为高,维持一个时钟周期 wire key2_an; assign key2_an = reg3_key & ( reg2_key); reg19:0 cnt_key1; /计数寄存器 always (posedge clk or negedge rst_n) begin if (

6、!rst_n) cnt_key1 = 20d0; /异步复位 else if(key1_an) cnt_key1 =20d0; /led1_an=1,按键确认按下,cnt_key1从0开始计数 else cnt_key1 = cnt_key1 + 1b1; end reg19:0 cnt_key2; /计数寄存器always (posedge clk or negedge rst_n) begin if (!rst_n) cnt_key2 = 20d0; else if(key2_an) cnt_key2 =20d0; else cnt_key2 = cnt_key2 + 1b1; end /

7、以下为消抖程序 reg reg_low; reg reg1_low; always (posedge clk or negedge rst_n) begin if (!rst_n) begin reg_low = 1b1; end else if(cnt_key1 = 20hfffff) /时钟50mhz的话大约计时是20ms begin reg_low = key1; /led_an=1,按键确认按下,cnt_key从0开始计数,这时候还有消抖动,计数20ms后抖动滤除了此时再锁存一下key1的值 end /这时key1的值就稳定了 end always (posedge clk or ne

8、gedge rst_n) begin if (!rst_n) reg1_low = 1b1; else reg1_low = reg_low; end assign key1_low = reg1_low & ( reg_low); /当寄存器 reg_low 由 1 变为 0 时,key_low 的值变为高,维持一个时钟周期 reg reg2_low; reg reg3_low; always (posedge clk or negedge rst_n) begin if (!rst_n) begin reg2_low = 1b1; end else if(cnt_key2 = 20hfff

9、ff) begin reg2_low = key2; end end always (posedge clk or negedge rst_n) begin if (!rst_n) reg3_low = 1b1; else reg3_low = reg2_low; end assign key2_low = reg3_low & ( reg2_low); endmodule/时、分、秒module shijian(clk,rst_n,en_1s,key1_low,key2_low,shi,fen,miao);input clk;input rst_n;input en_1s;input key

10、1_low;input key2_low;output5:0 shi;output5:0 fen;output5:0 miao;reg 5:0 shi;reg 5:0 fen;reg 5:0 miao;always(posedge clk or negedge rst_n) begin if(!rst_n) begin shi=6b0; fen=6b0; miao=6b0; end else if(en_1s) begin miao=miao+1b1; if(miao=60) begin miao=0; fen=fen+1b1; if(fen=60) begin fen=0; shi=shi+

11、1b1; if(shi=24) shi=0; end end end else if(key1_low) begin fen=fen+1b1; if(fen=60) begin fen=0; shi=shi+1b1; if(shi=24) shi=0; end end else if(key2_low) begin fen=fen-1b1; if(fen=0) begin shi=shi-1b1; fen=59; end end else begin shi=shi; fen=fen; miao=miao; end endendmodule/显示部分module xianshi(clk,rst

12、_n,en_1ms,shi,fen,miao,led_bit,dataout);input clk;input rst_n;input en_1ms;input5:0 shi;input5:0 fen;input5:0 miao;output7:0 led_bit; /位选output7:0 dataout; /段选/数码管显示 09 对应段选输出parameter num0 = 8b11000000, num1 = 8b11111001, num2 = 8b10100100, num3 = 8b10110000, num4 = 8b10011001, num5 = 8b10010010, n

13、um6 = 8b10000010, num7 = 8b11111000, num8 = 8b10000000, num9 = 8b10010000;reg3:0 shi1,shi2,fen1,fen2,miao1,miao2; reg7:0 led_bit; /位选reg7:0 dataout; /段选reg2:0 state; /状态寄存器always(posedge clk or negedge rst_n) if(!rst_n) begin led_bit=8b1; state=3b0; end else if(en_1ms) begin state=state+1b1; shi1=sh

14、i/10; shi2=shi%10; fen1=fen/10; fen2=fen%10; miao1=miao/10; miao2=miao%10; if(state=3b000) begin led_bit=8b11111110; case(miao2) 0: dataout=num0; 1: dataout=num1; 2: dataout=num2; 3: dataout=num3; 4: dataout=num4; 5: dataout=num5; 6: dataout=num6; 7: dataout=num7; 8: dataout=num8; 9: dataout=num9; d

15、efault :dataout=num0; endcase end else if(state=3b001) begin led_bit=8b11111101; case(miao1) 0: dataout=num0; 1: dataout=num1; 2: dataout=num2; 3: dataout=num3; 4: dataout=num4; 5: dataout=num5; default :dataout=num0; endcase end else if(state=3b010) begin led_bit=8b11110111; case(fen2) 0: dataout=n

16、um0; 1: dataout=num1; 2: dataout=num2; 3: dataout=num3; 4: dataout=num4; 5: dataout=num5; 6: dataout=num6; 7: dataout=num7; 8: dataout=num8; 9: dataout=num9; default :dataout=num0; endcase end else if(state=3b011) begin led_bit=8b11101111; case(fen1) 0: dataout=num0; 1: dataout=num1; 2: dataout=num2

17、; 3: dataout=num3; 4: dataout=num4; 5: dataout=num5; endcase end else if(state=3b100) begin led_bit=8b10111111; case(shi2) 0: dataout=num0; 1: dataout=num1; 2: dataout=num2; 3: dataout=num3; 4: dataout=num4; default :dataout=num0; endcase end else if(state=3b101) begin led_bit=8b01111111; case(shi1)

18、 0: dataout=num0; 1: dataout=num1; 2: dataout=num2; endcase end else if(state=3b110) begin led_bit=8b11011011; dataout=8b10111111; end end else begin dataout=dataout; led_bit=led_bit; endendmodule/顶层模块module Shizhong(clk,rst_n,key1,key2,led_bit,dataout);input clk;input rst_n;input key1;input key2;ou

19、tput7:0 led_bit;output7:0 dataout;wire en_1s;wire en_1ms;wire5:0 shi;wire5:0 fen; wire5:0 miao;wire key1_low,key2_low;fenpin fenpin_int(.clk(clk), .rst_n(rst_n), .en_1s(en_1s), .en_1ms(en_1ms) ); anjian anjian_int(.clk(clk), .rst_n(rst_n), .key1(key1), .key2(key2), .key1_low(key1_low), .key2_low(key2_low) ); shijian shijian_int(.clk(clk), .rst_n(rst_n), .en_1s(en_1s), .key1_low(key1_low), .key2_low(key2_low), .shi(shi), .fen(fen), .miao(miao) );xianshi xianshi_int(.clk(clk), .rst_n(rst_n), .en_1ms(en_1ms), .shi(shi), .fen(fen), .miao(miao), .led_bit(led_bit), .dataout(dataout) ); endmodule

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1