verilog实验2:基于FPGA的59秒计时器设计
一、实验任务
利用四个数码管显示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秒计时器设计的更多相关文章
- 基于FPGA的XPT2046触摸控制器设计
基于FPGA的XPT2046触摸控制器设计 小梅哥编写,未经许可,文章内容和所涉及代码不得用于其他商业销售的板卡 本实例所涉及代码均可通过向 xiaomeige_fpga@foxmail.com 发 ...
- 基于FPGA的SPI FLASH控制器设计
1.SPI FLASH的基本特征 本文实现用FPGA来设计SPI FLASH,FLASH型号为W25Q128BV.支持3种通信方式,SPI.Dual SPI和Quad SPI.FLASH的存储单元无法 ...
- 012 基于FPGA的网口通信实例设计【转载】
一.网口通信设计分类 通过上面其他章节的介绍,网口千兆通信,可以使用TCP或者UDP协议,可以外挂PHY片或者不挂PHY片,总结下来就有下面几种方式完成通信: 图8‑17基于FPGA的网口通信实例设计 ...
- FPGA经典:Verilog传奇与基于FPGA的数字图像处理原理及应用
一 简述 最近恶补基础知识,借了<<Verilog传奇>>,<基于FPGA的嵌入式图像处理系统设计>和<<基千FPGA的数字图像处理原理及应用>& ...
- 基于FPGA的1553B通信模块的设计(转)
reference:http://www.21ic.com/app/eda/201808/798483.htm https://www.milstd1553.com/ [导读] 摘 要: 提出一种将F ...
- 基于FPGA的Cordic算法实现
CORDIC(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法,是J.D.Volder1于1959年首次提出,主要用于三角函数.双曲线.指数.对数的 ...
- verilog实验1:基于FPGA蜂鸣器演奏乐曲并数码管显示
一.实验任务 利用FPGA进行代码开发,使蜂鸣器演奏出乐曲<生日快乐>,将音调显示在数码管.原理为蜂鸣器为交流源蜂鸣器,在引脚上加一定频率的方波就可以发声,而且发声的频率由所加方波决定.这 ...
- 自己动手写CPU(基于FPGA与Verilog)
大三上学期开展了数字系统设计的课程,下学期便要求自己写一个单周期CPU和一个多周期CPU,既然要学,就记录一下学习的过程. CPU--中央处理器,顾名思义,是计算机中最重要的一部分,功能就是周而复始地 ...
- 基于FPGA的简易数字时钟
基于FPGA的可显示数字时钟,设计思路为自底向上,包含三个子模块:时钟模块,进制转换模块.led显示模块.所用到的FPGA晶振频率为50Mhz,首先利用它得到1hz的时钟然后然后得到时钟模块.把时钟模 ...
随机推荐
- UVA 11636-Hello World!(水题,猜结论)
UVA11636-Hello World! Time limit: 1.000 seconds When you first made the computer to print the sentenc ...
- 【笔记】移动端H5数字键盘input type=number的处理(IOS和Android)
在Vue中的项目,基于VUX-UI开发,一个常见的需求: 1.金额输入框 2.弹出数字键盘 3.仅支持输入两位小数,限制最大11位数,不允许0开头 后续:与UI沟通后, 思路调整为限制输入,并减少正则 ...
- .NET MongoDB Driver 2.2使用示例
说明:mongoDBService是对各种常用操作的封装 public class MongoDBService { #region 变量 /// <summary> /// 缓存 /// ...
- 2017年 JavaScript 框架回顾 -- React生态系统
前一篇文章中,我们介绍了2017年 JavaScript 框架的整体情况.我们也了解到在众多的前端框架中,目前最为庞大又在快速增长的当属 React 了,本文就来重点介绍 React 的生态系统. 首 ...
- [国嵌攻略][153][I2C裸机驱动设计]
eeprom简介 eeprom电可擦除可编程只读存储器,是一种类似于flash的固态存储器,但是与flash相比又存在一些区别: 1.eeprom可以按位擦写,而flash只能大片擦除. 2.eepr ...
- java中JFrame类中函数addWindowListener(new WindowAdapter)
转自:http://blog.csdn.net/datouniao1/article/details/46984987:侵删. 在java编写的过程中常常遇到样的一段代码: frame.addWind ...
- 久未更 ~ 三之 —— CardView简单记录
> > > > > 久未更 系列一:CardView 点击涟漪效果实现 //在 cardview 中 实现点击涟漪效果 android:clickable="t ...
- java中的分支结构 switch case的使用
switch(A),括号中A的取值只能是整型或者可以转换为整型的数值类型,比如byte.short.int.char.string(jdk1.7后加入)还有枚举:需要强调的是:long是不能用在swi ...
- ajax_表单提交+tp5ajax
======================================================= 判断squery导入的是否正确? $(function(){ alert('1'); } ...
- jQuery的鼠标事件总结
jQuery的鼠标事件总结 1.click()事件. 2.dbclick()鼠标双击事件 3.mousedown()鼠标按下事件 4.mouseup()鼠标松开事件 5.mouseover()从一个元 ...