FPGA基础实验:秒表(计时器)
来源:互联网 发布:淘宝如何网购 编辑:程序博客网 时间:2024/05/19 23:15
FPGA基础实验:秒表(计时器)
本实验是通过时间基准、带使能计数器、两个8段数码管,三个电路模块进行设计。
时间基准点路和带使能的计数器在上一个实验已经介绍过了。这里我们主要介绍按键输入的控制电路设计,以及两个数码管显示。
首先我们看简单的:两个数码管显示
reg[7:0] count; //为计时值 //数码管显示 always@( count ) begin //个位显示 case( count%10 ) 4'h0 : smg1 = 8'hc0 ; 4'h1 : smg1 = 8'hf9 ; 4'h2 : smg1 = 8'ha4 ; 4'h3 : smg1 = 8'hb0 ; 4'h4 : smg1 = 8'h99 ; 4'h5 : smg1 = 8'h92 ; 4'h6 : smg1 = 8'h82 ; 4'h7 : smg1 = 8'hf8 ; 4'h8 : smg1 = 8'h80 ; 4'h9 : smg1 = 8'h90 ; endcase //十位显示 case( count/10) 4'h0 : smg2 = 8'h40 ; 4'h1 : smg2 = 8'h49 ; 4'h2 : smg2 = 8'h24 ; 4'h3 : smg2 = 8'h30 ; 4'h4 : smg2 = 8'h19 ; 4'h5 : smg2 = 8'h12 ; 4'h6 : smg2 = 8'h02 ; 4'h7 : smg2 = 8'h78 ; 4'h8 : smg2 = 8'h00 ; 4'h9 : smg2 = 8'h10 ; endcase end
可以看到,十位和个位的十六进制显示编码不一样,这里我们设计的是0–9.9s计时器,所以考虑到十位上小数点的存在,把所谓的“七段数码管(没有小数点)”变成了八段数码管。
按键输入是本设计的重点,而且这里还涉及到一个必须考虑的问题:按键消抖,我们先看程序一步一步分析:
input key; //定义按键输入 input clk; //系统时钟50MHz //定义分频参数(5M=0.1s) parameter timer = 5000_000; //分频时钟,开始/停止标识 reg div_clk, st_flag ; wire[1:0] key; reg[1:0] keyin; //缓存按键值,消抖时用 reg[22:0] TIM; //计数分频 reg[8:0] count; //计时值 //时钟分频,0.1s always@(posedge clk ) begin if( TIM == timer ) begin TIM <= 0; div_clk <= ~div_clk; end else TIM <= TIM + 1'b1; end //按键消抖,通过TIM的计数,大约20ms always@(posedge TIM[20] ) begin keyin <= key ; end //key[0]开始停止标识, key[1]实现复位功能 always@(negedge keyin[0] ) //都为低电平有效 begin st_flag <= ~st_flag ; //开始暂停标志位 end //按键输入控制计时功能 always@( posedge div_clk ) begin if( !keyin[1] && !st_flag ) count <= 0; else if( !st_flag ) count <= count; else if( count==100 ) count <= 0; count <= count + 1'b1; end
通过按键的控制(key0为开始暂停键、key1为复位键),可以实现零到9.9秒的计时。设计的关键是按键消抖以及按键值对应的标志位设计。
阅读全文
0 0
- FPGA基础实验:秒表(计时器)
- 秒表(计时器)
- Java计时器(秒表)
- 【Java】Java计时器(秒表)
- 秒表计时器
- 秒表计时器
- 秒表计时器
- js 秒表计时器(开始,停止,清零)
- 简单的Java秒表计时器(线程)
- Stopwatch计时器、秒表 C#
- JS秒表倒计时器
- 单片机秒表计时器
- .NET C# 秒表 计时器
- Android 秒表计时器
- java秒表/计时器实现
- Stopwatch计时器、秒表 C#
- TStopwatch 高精度秒表 计时器
- js秒表计时器
- 筛法求素数
- AngularJS排序查询以及添加
- C++ class 总结
- [知了堂学习笔记] JQuery对DOM的操作
- 【ML学习笔记】8:PAC可能近似正确
- FPGA基础实验:秒表(计时器)
- Go编写调度算法FCFS和SJF
- Jquery-的基础知识
- 【知了堂学习笔记】_JavaScript之DOM操作案例(验证码)
- linux解压文件时候not in gzip format
- 学习笔记4
- 从零开始部署CloudSim4.0云计算仿真平台
- heap_sort
- java IO流学习总结