- 1、本文档共30页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VHDL设计应用举例
* VHDL设计应用举例 数字秒表的设计 数字秒表的设计 一、设计要求 1、设计用于体育比赛用的数字秒表,要求 (1)计时精度应大于1/100S,计时器能显示1/100S的时间,提供给计时器内部定时的时钟脉冲频率应大于100Hz,这里选用1kHz。 (2)计时器的最长计时时间为1小时,为此需要一个6位的显示器,显示的最长时间为59分59.99秒。 2、设置有复位和起/停开关 (1)复位开关用来使计时器清零,并作好计时准备. ⑵起/停开关的使用方法与传统的机械式计时器相同,即按一下起/停开关,启动计时器开始计时,再按一下起/停开关计时终止。 ⑶复位开关可以在任何情况下使用,即使在计时过程中,只要按一下复位开关,计时进程立刻终止,并对计时器清零。 4、采用VHDL语言用层次化设计方法设计符合上述功能要求的数字秒表。 5、对电路进行功能仿真,通过有关波形确认电路设计是否正确。 3、复位和起停开关应有消抖处理(暂不要求)。 二、设计思路 数字秒表框图如下: 1、计时控制器作用是控制计时。计时控制器的输入信号是启动、暂停和清零。为符合惯例,将启动和暂停功能设置在同一个按键上,按一次是启动,按第二次是暂停,按第三次是继续。所以计时控制器共有2个开关输入信号,即启动/暂停和清除。计时控制器输出信号为计数允许/保持信号和清零信号。 2、计时电路的作用是计时。其输入信号为100Hz时钟、计数允许/保持和清零信号,输出为10ms、100ms、s和min的计时数据。 由两个60进制和一个100进制的计数器组成。 100进制计数器为10ms计时器,其输入时钟信号是分频器的一个输出信号100Hz。一个60进制计数器为秒钟计时器,其输入时钟信号是10ms计时器的进位信号。另一个60进制计数器为分钟计时器,其输入时钟信号是秒钟计时器的进位信号。 当然我们也可以用两个10进制计数器替换一个100进制计数器,用一个6进制计数器和一个10进制计数器替换一个60进制计数器。两个计数器替换一个计数器的连接方法都是低位计数器的进位接高位计数器的时钟信号输入端。 为什么要这样替换,在后面的扫描显示电路的设计中就可以看出来,将使设计更简单。 3、分频器是一个10分频器,产生100ms周期的时钟信号,用于计时电路输入时钟信号。实际上就是一个计数器。分频器的作用主要在于把已经有的高频率信号分成我们所需要的较低频率信号。 4、扫描显示电路用于控制数码管的显示输出。 三、具体设计 1、计时控制器的设计 计时控制器实际上就是一个控制面板,把所有的控制信号都集中在一起。 2、计时电路的设计 计时电路就是由三个计数器连接在一起所构成的。连接方法如下图所示: 替换以后如下图所示: 60进制计数器的程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; --*********************************************************************************** ENTITY COUNTER60 IS PORT( Clk, START,CLR : IN STD_LOGIC; TOUT : OUT STD_LOGIC_VECTOR (5 DOWNTO 0); CY60 : OUT STD_LOGIC --计数60进位信号 ); END COUNTER60; ARCHITECTURE ART OF COUNTER60 IS SIGNAL Q : STD_LOGIC_VECTOR (5 DOWNTO 0) ; SIGNAL RST, DLY : STD_LOGIC; BEGIN PROCESS (CLK,RST) -- 计数60 BEGIN IF RST = 1 THEN Q = 000000; -- 复位计数器 ELSIF CLKevent AND CLK = 1 THEN DLY = Q(5); IF START = 1 THEN Q = Q+1; -- 计数值加1 ELSE Q = Q+0; END IF;
文档评论(0)