视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
基于VHDL的定时器设计及实现
2025-09-30 19:48:23 责编:小OO
文档

基于VHDL的定时器设计及实现
设计参数

        定时器设计

功能:实现3位数(单位是秒)的倒数

输入信号:置数(为二进制数),开始计数信号

输出信号:计数信号的LED数码管(共阴极)显示码,计数结束信号

设计要求

给出系统整体组成框图

每一个模块的VHDL实现及功能仿真

顶层文件及整体仿真

设计计划

了解EDA的基本知识

学习使用软件Max+PlusII

开始电路设计

学习使用实验箱

继续电路设计

完成电路设计

编程下载、连接电路、调试和验收

参考资料

《数字电子技术基础》.阎石主编.高等教育出版社.

《EDA技术及应用》谭会生等编著,西安电子科技大学出版社 

《电子设计自动化教程》王锁萍等编著,电子科技大学出版社

《VHDL设计电子线路》边计年等编著,清华大学出版社

1设计说明

采用了可编程芯片和VHDL语言进行软硬件设计,使硬件大为简化,稳定性也比较好。由于可编程芯片的频率精度可达到50 MHz,因而计时精度很高。本设计采用逐位设定预置时间,以达到三位倒数功能,使用也较为方便。

2 设计原理

    本定时器的核心器件为EP1C6Q240C8芯片。该芯片有选位、置位、启动、复位、倒计时等功能,显示采用2个3位LED数码管,并采用共阴接法,可以动态扫描显示。

系统原理框图

3 硬件设计

    本系统共有两大模块,分别为控制/定时模块和显示模块。其中控制/定时模块包括按键的功能定义和计时的逻辑定义。显示模块则包括片选模块、位扫描模块和数码管译码模块。

    设计时可将秒信号输入控制/定时模块,此时系统将输出六个四位BCD码,以分别表示时、分、秒位。在定时倒计数时,计数器可以秒的速度递减,从而实现倒计时。系统中的位选择器用于对六位进行循环扫描输出,并将扫描输出送到译码器。译码器模块可对输入的四位进行译码,同时在设置数值时用6个LED灯分别指示其所设置的位。

    Setw(置位键):用于选定定时器所需定时的对应位。发光二极管对应七段数码管设置,当选定对应的位时,相应的发光二极管亮;

  

    Set(置数键):用于设置选定位的具体数值;

  

    Start键:用于设定好时间后启动秒表计时。可通过软件使start按键经过锁存器后进人模块。Start触发后可产生持续的高电平;

    

    ALM(扬声器):可在计时结束时发声报警;

    

     Clr(清零键):用于计时器的清零复位;

七段数码管用于显示定时数字,set模块用控制数码管的扫描频率。

引脚图

4 主要模块软件程序

图3所示是该定时器的软件系统构成。本软件包括控制/定时模块和显示模块两大部分。

4.1  控制/定时模块

AAA控制/定时模块是该定时器的核心部分,该模块的程序流程图如图4所示。

当START为高电平时,该定时器将进入倒计时阶段。当CLK脉冲上升沿到来时,计数以秒的速度减1,直到计时结束,使ALM位为高电平为止。CLR为复位端,可用来清零,通常采用异步复位方式。SETW用于选位,高电平有效。SET用于对选定的位进行置数,也是高电平有效。ALM输出端将在定时结束时产生高电平。Q0~Q5为四位BCD码输出端口,主要用于显示。

4.2 显示模块

通过jishuqi模块可完成BCD码的转化,再经DIS模块译码.然后输出给七段数码管。

(1)jishuqi模块

jishuqi可产生四位BCD码输入,并从sel端输出。

VHDL源代码如下:

library ieee;

use ieee.std_logic_11.all;

entity jishuqi is

port (sel:in std_logic_vector(2 downto 0);

a5,a4,a3,a2,a1,a0:in std_logic_vector(3 downto 0);

q:out std_logic_vector(3 downto 0));

end jishuqi;

architecture one of jishuqi is

begin

process(sel,a0,a1,a2,a3,a4,a5)

begin

case sel is

when“000”=>q<=a0;

when“001”=>q<=a1;

when“010”=>q<=a2;

when“011”=>q<=a3;

when“100”=>q<=a4;

when“101”=>q<=a5;

when others=>q<=”0000”

end case;

end process;

end one;

(2)DIS模块

VHDL源代码如下:

library ieee;

use ieee.std_logic_11.all;

entity dis is

port (a:in std_logic_vector(3 downto 0);

q:out std_logic_vector(6downto 0));

end dis;

architecture dis_one of dis is

begin

process(a)

begin

case a is

when “0000”=>q<=0111111;

when“0001”=>q<=0000110;

when“0010”=>q<=1011011;

when“0011”=>q<=1001111;

when“0100”=>q<=1100110;

when“0101”=>q<=1101101;

when “0110”=>q<=1111101;

when“0111”=>q<=0100111;

when“1000”=>q<=1111111;

when“1001”=>q<=1101111;

when others=>q<=”0000000”

end case;

end process;

end dis_one;

5 系统仿真及结果

由此仿真结果可见,当setw置“1”时,statea位选从0到5循环,分别代表六个数码管的位置。当start置“1”时,q5-q0进行借位减法。q5、q4表示小时,最高可到99小时;q3、q2表示分钟,最高59分钟;q1、q0表示秒,最高为59秒。

6 结束语

本次课程设计我从总体要求出发,采用模块化设计方法,实现了三位数倒数的定时设计。同时采用QuartusⅡ4.0仿真环境进行了仿真。结果证明,本课程设计达到了设计要求,完成了设计任务。

这次EDA课程设计给了我一次关于数字电子的实践机会,通过这次课设,我对计数器的使用有了更进一步的了解,进一步把学到的知识应用于实际。通过这次课程设计,我充分认识到了自己在数字电子技术上的不足,对以前学过的知识有了更加深刻的认识,并且学到了许多书本上所学不到的实践知识。在设计电路的过程中我遇到了不少的麻烦,但通过自己的努力和老师、同学的帮助,最终成功完成了闹钟的设计。最重要的是这次EDA课程设计培养了我严谨的行事态度,使我受益匪浅。

下载本文
显示全文
专题