- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 数字系统综合设计实例 任务一 半整数分频器的设计 阶段一 小数分频的基本原理 阶段二 电路组成 阶段三 VHDL程序 阶段四 仿真结果 阶段一小数分频的基本原理 采用可编程逻辑器件实现分频系数为2.5的分频器,可采用以下方法:设计一个模3的计数器,再设计一个扣除脉冲电路,加在模3计数器输出之后,每来两个脉冲就扣除一个脉冲(实际上是使被扣除的脉冲变成很窄的脉冲,可由异或门实现),就可以得到分频系数为2.5的小数分频器。采用类似方法,可以设计分频系数为任意半整数的分频器。 小数分频的基本原理为脉冲吞吐计数法:设计两个不同分频比的整数分频器,通过控制单位时间内两种分频比出现的不同次数,从而获得所需的小数分频值。 阶段二电路组成 阶段三 VHDL程序 阶段四 仿真结果 图6-3 半整数分频器仿真波形图 任务二 交通灯控制器 阶段一 功能描述 阶段二 交通灯控制器的实现 阶段三 VHDL程序 阶段四 仿真结果 阶段一 功能描述 设东西方向和南北方向的车流量大致相同,因此红、黄、绿灯的时长也相同,定为红灯45秒,黄灯5秒,绿灯40秒,同时用数码管指示当前状态(红、黄、绿灯)剩余时间。另外,设计一个紧急状态,当紧急状态出现时,两个方向都禁止通行,指示红灯。紧急状态解除后,重新计数并指示时间。 阶段二交通灯控制器的实现 交通灯控制器是状态机的一个典型应用,除了计数器是状态机外,还有东西、南北方向的不同状态组合(红绿、红黄、绿红、黄红4个状态),如表6-1所示。但我们可以简单地将其看成两个(东西、南北)减1计数的计数器,通过检测两个方向的计数值,可以检测红、黄、绿灯组合的跳变。这样使一个较复杂的状态机设计变成一个较简单的计数器设计。 表6-1 交通灯的4种可能亮灯状态 图6-4 交通灯控制器外部接口 阶段三 VHDL程序 表6-2 交通灯设计中的状态跳变点 阶段三 VHDL程序 阶段四 仿真结果 图6-5 交通灯控制器仿真波形图 任务三正负脉宽数控调制信号发生器的设计 阶段一 设计思路 阶段二 VHDL程序 阶段一 设计思路 图6-6是脉宽数控调制信号发生器逻辑图,此信号发生器是由两个完全相同的可自加载加法计数器LCNT8组成的,它的输出信号的高低电平脉宽可分别由两组8位预置数进行控制。 图6-6 脉宽数控调制信号发生器逻辑图 阶段二 VHDL程序 任务四 数字秒表的设计 阶段一 设计思路 阶段二 VHDL程序 阶段一 设计思路 今需设计一个计时范围为0.01秒~1小时的数字秒表,首先需要获得一个比较精确的计时基准信号,这里是周期为1/100 s的计时脉冲。其次,除了对每一计数器需设置清零信号输入外,还需在六个计数器设置时钟使能信号,即计时允许信号,以便作为秒表的计时起、停控制开关 。 因此数字秒表可由一个分频器、四个十进制计数器(1/100秒、1/10秒、1秒、1分)以及两个六进制计数器(10秒、10分)组成,如图6-7所示。 图6-7 数字秒表电路逻辑图 阶段二 VHDL程序 1) 3 MHz→100 Hz分频器的源程序CLKGEN.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY CLKGEN IS PORT (CLK:IN STD_LOGIC; --3 MHz信号输入 NEWCLK:OUT STD_LOGIC); --100 Hz计时时钟信号输出 END ENTITY CLKGEN; ARCHITECTURE ART OF CLKGEN IS SIGNAL CNTER:INTEGER RANGE 0 TO 10#29999#; --十进制计数预制数 BEGIN PROCESS(CLK) IS --分频计数器,由3 MHz时钟产生100 Hz信号 BEGIN IS IF CLK’EVENT AND CLK=1 THEN IF CNTER=10#29999# THEN CNTER=0; --3 MHz信号变为100 Hz,计数常数为30 000 ELSE CNTER=CNTER+1; END IF; END IF; END PROCESS; PROCESS(CNTER) IS --计数溢出信号控制 BEGIN IF CNTER=10#29999# THEN NEWCLK=1; ELSE NEWCLK=0; END IF; END PROCESS; END ARCHITECTURE
文档评论(0)