一、实验任务

利用四个数码管显示59秒计时器。

二、代码实现

将开发板的48M晶振分频出1M,然后计数器累加,将计数器结果显示在数码管上。低位逢十进一,第二位逢五进一,依次构成59秒计时器。

部分代码展示:

module cnt59(clk,rst_n,dataout,en);

input clk,rst_n;
output[:] dataout;
output[:] en;//COM使能输出 reg[:] dataout;//各段数据输出
reg[:] en; reg[:] cnt_scan;//扫描频率计数器
reg[:] dataout_buf; wire clk1m;
wire clk1000;
wire clk1; //产生时钟
defparam Gen_ClkDiv3.divdFACTOR=,Gen_ClkDiv3.divdWIDTH=;//分频时钟
div Gen_ClkDiv3(.reset(rst_n),.clkin(clk1000),.clkout(clk1));//端口名称关联 always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin //低电平复位
cnt_scan<=;
end
else
begin
cnt_scan<=cnt_scan+;
end
end always @(cnt_scan)//段码扫描频率
begin
case(cnt_scan[:])
'b00 :
en = 'b1110;
'b01 :
en = 'b1101;
'b10 :
en = 'b1011;
'b11 :
en = 'b0111;
default :
en = 'b1110;
endcase
end reg [:] cnt1;
reg [:] cnt2;
reg [:] cnt3;
reg [:] cnt4; always@(posedge clk1 or negedge rst_n)
begin
if(!rst_n)
begin
cnt1 <= 'b0000;
cnt2 <= 'b0000;
cnt3 <= 'b0000;
cnt4 <= 'b0000;
end
else
begin
cnt1 <= (cnt1<)? cnt1+'b1:4'd0;
cnt2 <= (cnt2<)? (cnt1==)?cnt2+'b1:cnt2 : (cnt1==9)?4'd0:cnt2;
cnt3 <= (cnt3<)? (cnt2== && cnt1==)?cnt3+'b1:cnt3 : (cnt2==5 && cnt1==9)?4'd0:cnt3;
cnt4 <= (cnt4<)? (cnt3== && cnt2== && cnt1==)?cnt4+'b1:cnt4 : (cnt3==9 && cnt2==5 && cnt1==9)?4'd0:cnt4;
end
end always@(en) //对应COM信号给出各段数据,段码
begin
case(en)
'b1110:
dataout_buf<=cnt1;//输入将要显示的数字
'b1101:
dataout_buf<=cnt2;
'b1011:
dataout_buf<=cnt3;
'b0111:
dataout_buf<=cnt4;
default:
dataout_buf<=;
endcase
end always@(dataout_buf)
begin
case(dataout_buf) //将要显示的数字译成段码
'b0000://0
dataout='b0000_0011;
'b0001://1
dataout='b1001_1111;
'b0010://2
dataout='b0010_0101;
'b0011://3
dataout='b0000_1101;
'b0100://4
dataout='b1001_1001;
'b0101://5
dataout='b0100_1001;
'b0110://6
dataout='b0100_0001;
'b0111://7
dataout='b0001_1111;
'b1000://8
dataout='b0000_0001;
'b1001://9
dataout='b0000_1001;
default://这里仅编译了0-9这几个数字
dataout='b1111_1111;//全灭
endcase
end endmodule

三、感悟

相比于其他小程序来说,这篇是一个很简单的应用,包括程序也很简单。但是在编写之时,会有一些细节没有把握住,致使烧写结果出问题。希望自己以后思考问题可以更加全面。比如59秒在进位时,是要有两个判断条件,一位为5一位为9才能进位,而由于自己的粗心大意,编程时只想着为5就进位,结果9秒为5的时候一直在进位。这也为我以后思考问题提了个醒。如何更为全面细致认真的思考。就比如说如果要实现一个功能,要同时满足几个条件。这也是程序员思维缜密之所在。加油。

verilog实验2:基于FPGA的59秒计时器设计的更多相关文章

  1. 基于FPGA的XPT2046触摸控制器设计

    基于FPGA的XPT2046触摸控制器设计 小梅哥编写,未经许可,文章内容和所涉及代码不得用于其他商业销售的板卡 本实例所涉及代码均可通过向 xiaomeige_fpga@foxmail.com  发 ...

  2. 基于FPGA的SPI FLASH控制器设计

    1.SPI FLASH的基本特征 本文实现用FPGA来设计SPI FLASH,FLASH型号为W25Q128BV.支持3种通信方式,SPI.Dual SPI和Quad SPI.FLASH的存储单元无法 ...

  3. 012 基于FPGA的网口通信实例设计【转载】

    一.网口通信设计分类 通过上面其他章节的介绍,网口千兆通信,可以使用TCP或者UDP协议,可以外挂PHY片或者不挂PHY片,总结下来就有下面几种方式完成通信: 图8‑17基于FPGA的网口通信实例设计 ...

  4. FPGA经典:Verilog传奇与基于FPGA的数字图像处理原理及应用

    一 简述 最近恶补基础知识,借了<<Verilog传奇>>,<基于FPGA的嵌入式图像处理系统设计>和<<基千FPGA的数字图像处理原理及应用>& ...

  5. 基于FPGA的1553B通信模块的设计(转)

    reference:http://www.21ic.com/app/eda/201808/798483.htm https://www.milstd1553.com/ [导读] 摘 要: 提出一种将F ...

  6. 基于FPGA的Cordic算法实现

    CORDIC(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法,是J.D.Volder1于1959年首次提出,主要用于三角函数.双曲线.指数.对数的 ...

  7. verilog实验1:基于FPGA蜂鸣器演奏乐曲并数码管显示

    一.实验任务 利用FPGA进行代码开发,使蜂鸣器演奏出乐曲<生日快乐>,将音调显示在数码管.原理为蜂鸣器为交流源蜂鸣器,在引脚上加一定频率的方波就可以发声,而且发声的频率由所加方波决定.这 ...

  8. 自己动手写CPU(基于FPGA与Verilog)

    大三上学期开展了数字系统设计的课程,下学期便要求自己写一个单周期CPU和一个多周期CPU,既然要学,就记录一下学习的过程. CPU--中央处理器,顾名思义,是计算机中最重要的一部分,功能就是周而复始地 ...

  9. 基于FPGA的简易数字时钟

    基于FPGA的可显示数字时钟,设计思路为自底向上,包含三个子模块:时钟模块,进制转换模块.led显示模块.所用到的FPGA晶振频率为50Mhz,首先利用它得到1hz的时钟然后然后得到时钟模块.把时钟模 ...

随机推荐

  1. 51 Nod 1008 N的阶乘 mod P【Java大数乱搞】

    1008 N的阶乘 mod P 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %)   例如:n ...

  2. HDU--1060

    Leftmost Digit Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  3. 关于jquery ajax跨域请求获取response headers问题

    背景:最近项目jwt用户认证方式,关于jwt本人就不再赘述,大家可自行百度. jwt token基本流程是这样的: 用户使用用户名密码来请求服务器 服务器进行验证用户的信息 服务器通过验证发送给用户一 ...

  4. JSP基础:JSP指令、JSP注释、JSP脚本、JSP声明、JSP表达式

    JSP指令分为:page指令.include指令.taglib指令. page指令:通常位于JSP页面的顶端,同一个页面可以有多个页面指令. 语法:<%@ page language=" ...

  5. DEDECMS万能标签{dede:sql}使用教程详解

    http://www.dede58.com/a/dedebq/2015/0226/1737.html 1.首页在后台单页文档管理里添加一个单页文档,内容编辑框输入你要的内容生成. 2.在需要调用单页文 ...

  6. 织梦dede在首页调用留言本

    织梦dedecms在首页调用留言本 . {dede:loop table=dede_guestbook sort=dtime row=10 titlelen=36 typeid=40 if=ische ...

  7. Struts 2 标签库及使用

    1  Struts 2 基本的标签属性. 1) name:指定表单元素的名称,该属性与Action中定义的属性相对应. 2) value:指定表单元素的值. 3) required:指定表单元素的必填 ...

  8. eclipse代码编辑区字符串自动转义设置

    在做接口测试时,有时接口请求参数非常多,如果用java相关方法去拼接参数,难度较大,并且非常浪费时间,那如何快速将整个请求参数拼接成一个字符串呢?为了解决这个问题,只要简单配置下eclipse设置即可 ...

  9. linux libpcap的性能问题,请大家注意绕行。

    内核代码中,ip_rcv是ip层收包的主入口函数,该函数由软中断调用.存放数据包的sk_buff结构包含有目的地ip和端口信息,此时ip层进行检查,如果目的地ip不是本机,且没有开启转发的话,则将包丢 ...

  10. RocketMQ-quickstart(批量消费问题)

    基本概念: Producer:消息生产者,负责生产消息,一般由业务系统负责生产消息. Consumer:消息消费者,负责消费消息,一般是后台系统负责异步消费. Push Consumer:Consum ...