博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
篮球30秒可控计时器
阅读量:5174 次
发布时间:2019-06-13

本文共 2382 字,大约阅读时间需要 7 分钟。

1.设计要求

主要功能:

(1)具有30秒计时、显示功能;

(2)设置外部操作开关,控制计时器的直接清零、装数、启动和暂停/连续功能;

(3)30秒倒计时,其计时间隔为1秒;

(4)计时器递减计时到零显示器不能灭灯,同时发出报警信号;

(5)能解除报警信号。

在Quartus II软件平台上建立计数器电路的顶层电路文件,并完成编译和仿真。

输入信号:时钟CPA,直接清零CR,预置(装数)LD及减计数使能(启动/暂停)S。

输出信号:计时输出信号QH[3...0]、QL[3...0](8421BCD码)和报警信号L。

设计原理:

主要包括10分频器,30秒可控递减计时器及报警电路。30秒可控递减计时器是系统的核心部分,由外部开关键进行清零(CR),直接控制递减计时器的复位和解除报警;开关键预置(LD)低电平有效,当可控计时器预置30秒时,输出变量QH[3..0]和QL[3..0]分别为0011、0000(8421BCD码),即实现置数功能;启动递减计时和暂停/连续由开关键使能(启动/暂停)S,S=1用于递减计时(开通时钟通道),S=0用于保持(暂停)。10分频的功能是为了提高控制精度,减小时间误差。

 源程序:用Verilog编写basketball.v文件,源程序如下:

 

module basketball(CPB, L, QH, QL, CPA, S, LD, CR) ;        input S, LD, CR ;        input CPA ;        output [3:0]QH, QL ;        output CPB, L ;        reg [3:0]QH, QL ;        reg CPB ;        reg L ;        reg [3:0]i ;        reg QC ;                always @(posedge CPA)            begin                if(S==0)                    CPB <= CPB ;                else                    if(i==9)                        begin                            i = 0 ;                            CPB <= 1 ;                        end                    else                        begin                            i = i + 1 ;                            CPB <= 0 ;                        end            end                        always @(posedge CPB or negedge LD or negedge CR)                begin                    if(!CR)                        begin                            QH <= 0 ;                            QL <= 0 ;                            QC <= 0 ;                        end                    else if(!LD)                        begin                            QH <= 3 ;                            QL <= 0 ;                            QC <= 1 ;                            L <= 0 ;                        end                    else if((QH==0)&(QL==0))                        begin                            QH <= 0 ;                            QL <= 0 ;                            L <= QC ;                        end                    else if(QL==0)                        begin                            QL <= 9 ;                            QH <= QH - 1 ;                        end                    else                        begin                            QL <= QL - 1 ;                            QH <= QH ;                        end                endendmodule

 

 

转载于:https://www.cnblogs.com/lcm20/p/3551605.html

你可能感兴趣的文章
nginx 的提升多个小文件访问的性能模块
查看>>
set&map
查看>>
集合类总结
查看>>
4.AE中的缩放,书签
查看>>
1.开发准备
查看>>
centos su命令
查看>>
CLR:基元类型、引用类型和值类型
查看>>
dubbo序列化hibernate.LazyInitializationException could not initialize proxy - no Session懒加载异常的解决...
查看>>
jQuery中的事件绑定的几种方式
查看>>
泥塑课
查看>>
setImageBitmap和setImageResource
查看>>
springMVC4 注解配置实例
查看>>
单片机编程
查看>>
Filter in Servlet
查看>>
Linux--SquashFS
查看>>
Application Pool Identities
查看>>
2017-3-24 开通博客园
查看>>
【MySQL性能优化】MySQL常见SQL错误用法
查看>>
Vue2全家桶之一:vue-cli(vue脚手架)超详细教程
查看>>
Struts 2 常用技术
查看>>