一、实验任务

利用四个数码管显示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. COGS 862. 二进制数01串【dp+经典二分+字符串】

    862. 二进制数01串 ★   输入文件:kimbits.in   输出文件:kimbits.out   简单对比 时间限制:1 s   内存限制:128 MB USACO/kimbits(译 by ...

  2. [bzoj1273] [BeiJingWc2008]序列

    一开始想拆位..但显然没法应对进位啊什么的. 所以维护每一个长度的后缀. 查询有多少个a&2^i>0,也就是长度为(i+1)的后缀里,值为2^i...2^(i+1)-1的数有多少个. 前 ...

  3. c# tolist() 浅析

    在介绍tolist()的时候我先个大家介绍一下linq的延迟加载: var products = new List<Product> { , Category = "Electr ...

  4. BLE空中升级 谈(一)

    BLE 空中升级谈 -- CC2541 的产品开发中OAD注意事项 现在的智能设备(可穿戴,智能家居,智能玩具等)是越来越多了,大公司的产品颜值高,功能强大而完备的应该说是比比皆是,这里不谈论它是满足 ...

  5. sql server2008数据库复制实现数据同步常见问题

    sql server2008数据库复制实现数据同步常见问题 在原作者基础上追加 sql server2008数据库复制实现数据同步常见问题 23.发布 'xx' 的并发快照不可用,因为该快照尚未完全生 ...

  6. 宝塔服务器管理助手Linux面版-使用教程

    在顺利安装宝塔服务器linux面板之后,我们打开这个面板,UI界面设计的很简介,所有命令一看就知道是干什么用的,和我们以前用过的虚拟主机管理后台是很像的. 方法/步骤 1 使用方法如下: 面板地址:h ...

  7. postgresql+mybatis返回值是数据库字段名

    mybatis 返回map的时候是下划线 role_id, user_id 两种解决方法 1.重命名 postgresql不支持驼峰 加上双引号重命名  SELECT role_id "ro ...

  8. Mysql Nested-Loop Join Algorithms

    MySQL在多表之间执行join时,利用一种nested-loop algorithm 或者其变种:(嵌套循环)  Nested-Loop Join Algorithm      一个简单的嵌套循环连 ...

  9. 【JMedia】诺贝尔奖得主:东亚教育浪费了太多生命

    10月3日,2016年诺贝尔奖开奖第一天,日本科学家大隅良典获得诺贝尔生理学或医学奖.进入21世纪,日本科学家获奖人数快速增长.包括物理奖8位.化学奖6位.生理学或医学奖3位,共计17位,平均下来差不 ...

  10. scss 初学笔记 三 继承

    //继承 .btn{ padding: 4px 10px; font-size: 14px; } .primary{ background:red; @extend .btn; } //%placeh ...