VHDL综合设计实践培训课件_第1页
VHDL综合设计实践培训课件_第2页
VHDL综合设计实践培训课件_第3页
VHDL综合设计实践培训课件_第4页
VHDL综合设计实践培训课件_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

芜湖职业技术学院10.1数字跑表设计一个数字跑表,该跑表具有复位、暂停、秒表计时等功能。该数字跑表的结构示意图为:首先对数字跑表进行结构和功能划分。跑表设三个输入端,分别为时钟输入(CLK)、复位(CLR)和启动/暂停(PAUSE)按键。8/23/20241VHDL综合设计实践芜湖职业技术学院复位信号的高电平有效,可对跑表进行异步清零;当启动/暂停键为低电平时,跑表开始计时,为高电平时暂停,变低后在原来的数值基础上继续计数。这两个控制信号的作用如表:表10.1两个控制信号的作用为便于显示,百分秒、秒、和分钟信号皆采用BCD码计数方式,并直接输出到6个数码管显示出来。8/23/20242VHDL综合设计实践芜湖职业技术学院

000000分钟秒百分秒

595999分钟秒百分秒分析:当百分秒计数器加到99时,再加1就会变为0,并产生向秒级进位;这时秒计数器加1,当秒计数器加到59时,再加1就会变为0,并产生向分钟级进位;这时分钟计数器加1,当分钟计数器加到59时,再加1就会清零。8/23/20243VHDL综合设计实践芜湖职业技术学院

595999分钟秒百分秒24135高低高低高低具体分析:当百分秒计数器的低位为9时,再加1变为0,向百分秒高位进位;百分秒高位加1,当百分秒高位计数到9时,再加1变为0,向秒计数器进位;秒计数器低位加1,当秒低位为9时,再加1变为0,并向秒高位进位;秒高位加1,当秒高位计数到5时,再加1变为0,并向分钟进位;分钟低位加1,当分钟低位为9时,再加1变为0,并向分钟高位进位;分钟高位加1,当分钟高位为5时,再加1变为0。8/23/20244VHDL综合设计实践芜湖职业技术学院

根据分析,可将数字跑表分成三个计时模块:百分秒计时模块、秒计时模块、分钟计时模块。百分秒计时依赖时钟的上升沿或下降沿进行加1计数;秒计时依赖百分秒计数到99~100那一时刻进行加1计数;分钟计时依赖秒计数到59~60那一时刻进行加1计数。高低19高低20高低99高低00百分秒高低19高低20高低59高低00进位高低19高低20高低59高低00秒进位分钟8/23/20245VHDL综合设计实践芜湖职业技术学院信号定义CLK:时钟信号CLR:异步复位信号PAUSE:暂停信号MSH、MSL:百分秒的高位和低位SH、SL:秒信号的高位和低位MH、ML:分钟信号的高位和低位8/23/20246VHDL综合设计实践芜湖职业技术学院8/23/20247VHDL综合设计实践芜湖职业技术学院8/23/20248VHDL综合设计实践芜湖职业技术学院8/23/20249VHDL综合设计实践芜湖职业技术学院综合后数字跑表的端口连接示意图:仿真结果:8/23/202410VHDL综合设计实践芜湖职业技术学院10.2交通灯控制器用Verilog语言设计一个十字路口交通灯控制器,示意图如下图所示:A方向和B方向各设红(R)、黄(Y)、绿(G)和左拐(L)4盏灯,4种灯按合理的顺序亮灭,并能将灯亮的时间以倒计时的形式显示出来。8/23/202411VHDL综合设计实践芜湖职业技术学院功能要求两个方向各种灯亮的时间能够进行设置和修改,此外,假设A方向是主干路,车流量大,因此A方向通行的时间应比B方向长。交通灯控制器的状态转换表如图所示:表中,1表示灯亮,0表示灯灭。A方向和B方向的红、黄、绿和左拐灯分别用R1、Y1、G1、L1和R2、Y2、G2、L2来表示。8/23/202412VHDL综合设计实践芜湖职业技术学院从状态转换表中可以看出,每个方向4种灯依次按如下顺序点亮,并不断循环:绿灯—>黄灯—>左拐灯—>黄灯—>红灯并且每个方向红灯亮的时间应该与另一个方向绿、黄、左拐、黄灯亮的时间相等。黄灯所起的作用就是用来在绿灯和左拐灯后进行缓冲,以提醒行人该方向马上要禁行了。设计实现1、设计思路根据交通灯控制器要实现的功能,考虑用两个并行执行的always模块来分别控制A和B两个方向的4盏灯。这两个always模块使用同一个时钟信号,以进行同步,也就是说,两个进程的敏感信号是同一个。8/23/202413VHDL综合设计实践芜湖职业技术学院每个always模块控制一个方向的4种灯按如下顺序点亮,并往复循环:绿灯—>黄灯—>左拐灯—>黄灯—>红灯每种灯亮的时间采用一个减法计数器进行计数,计数器是同步预置法设计,这样只需要改变预置数据,就能改变计数器的模,因此每个方向只要一个计数器进行计时即可。为便于显示灯亮的时间,计数器的输出均采用BCD码,显示由4个数码管来完成,A方向和B方向各用两个数码管。8/23/202414VHDL综合设计实践芜湖职业技术学院2、信号定义CLK:为同步时钟;EN:使能信号,为1时,则控制器开始工作;LAMPA:控制A方向4盏灯的亮灭;其中,LAMPA0~LAMPA3分别控制A方向的左拐灯、绿灯、黄灯和红灯;LAMPB:控制B方向4盏灯的亮灭;其中,LAMPB0~LAMPB3分别控制B方向的左拐灯、绿灯、黄灯和红灯;ACOUNT:用于A方向灯的时间显示,8位,可驱动两个数码管;BCOUNT:用于B方向灯的时间显示,8位,可驱动两个数码管;设定A方向红、绿、黄、左拐灯亮的时间分别为55s、40s、5s和15s,B方向红、绿、黄、左拐灯亮的时间分别为:65s、30s、5s和15s。假如要改变这些时间,只需改变计数器的预置数即可。8/23/202415VHDL综合设计实践芜湖职业技术学院3、代码实现8/23/202416VHDL综合设计实践芜湖职业技术学院8/23/202417VHDL综合设计实践芜湖职业技术学院8/23/202418VHDL综合设计实践芜湖职业技术学院8/23/202419VHDL综合设计实践芜湖职业技术学院8/23/202420VHDL综合设计实践芜湖职业技术学院8/23/202421VHDL综合设计实践芜湖职业技术学院

10.3乐曲演奏电路在本节中,采用FPGA器件驱动扬声器构成一个乐曲演奏电路。乐曲演奏原理:组成乐曲的每个音符的频率值(音调)及其持续的时间(音长)是音乐能连续演奏所需的两个基本数据,因此只要控制输出到扬声器的激励信号的频率的高低和持续时间,就可以使扬声器发出连续的乐曲声。8/23/202422VHDL综合设计实践芜湖职业技术学院音调的控制频率的高低决定了音调的高低。音乐的十二平均率规定:每两个八度音(如简谱中的中音1和高音1)之间的频率相差一倍。在两个八度音之间又可以分为十二个半音,每两个半音的频率比为21/12。另外,音名A(简谱中的低音6)的频率为440Hz,音名B到C之间、E到F之间为半音,其余为全音。由此可以计算出简谱中从低音1至高音1之间每个音名对应的频率。8/23/202423VHDL综合设计实践芜湖职业技术学院简谱中的音名与频率的关系8/23/202424VHDL综合设计实践芜湖职业技术学院所有不同频率的信号都是从同一基准频率分频得到的。由于音阶频率多为非整数,而分频系数又不能分为小数,因此必须将计算得到的分频数四舍五入取整。若基准频率过低,则由于分频比太小,四舍五入取整后的误差较大,若基准频率过高,虽然误差变小,但分频数将变大。实际的设计应综合考虑这两个方面的因素,在尽量减小频率误差的前提下取合适的基准频率。本例中选取6MHz为基准频率。若无6MHz的时钟频率,则可以先分频得到6MHz或换一个新的基准频率。实际上,只要各个音名间的相对频率关系不变,C作1与D作1演奏出的音乐听起来都不会“走调”。8/23/202425VHDL综合设计实践芜湖职业技术学院“梁祝”片段曲谱该乐曲各音阶频率及相应的分频比见表:8/23/202426VHDL综合设计实践芜湖职业技术学院为了减小输出的偶次谐波分量,最后输出到扬声器的波形应为对称方波,因此在到达扬声器之前有一个二分频的分频器。表中的分频比就是在从6MHz二分频得到的3MHz频率基础上计算得出的。如果用正弦波代替对称方波驱动扬声器将会有更好的结果。从表中可以看出,最大的分频系数为9102,故采用14位二进制计数器分频可满足需要。表中,除给出了分频比之外,还给出了对应于各个音阶频率时计数器不同的预置数。对于不同的分频系数,只要加载不同的预置数即可。此外,对于乐曲中的休止符,只要将分频系数设为0,即初始值为214-1=16383即可,此时扬声器将不会发声。8/23/202427VHDL综合设计实践芜湖职业技术学院音长的控制音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定。梁祝片段音乐中,最短的音符为4分音符,如果将全音符的持续时间设为1s的话,则只需要再提供一个4Hz的时钟频率即可产生4分音符的时长。乐曲演奏电路的原理框图为:8/23/202428VHDL综合设计实践芜湖职业技术学院其中,乐谱产生电路用来控制音乐的音调和音长。控制音调通过设置计数器的预置数来实现,预置不同的数值就可以使计数器产生不同频率的信号,从而产生不同的音调。控制音长是通过控制计数器预置数的停留时间来实现的,预置数停留的时间越长,则该音符演奏的时间也就越长。每个音符的演奏时间都是0.25的整数倍,对于节拍较长的音符,如2分音符,在记谱时将该音名连续记录两次即可。音名显示电路用来显示乐曲演奏时的对应的音符。可以用3个数码管分别显示高、中、低音的音名,实现演奏的动态显示,十分直观。为了使演奏能循环进行,需另外设置一个时长计数器,当乐曲演奏完成时,保证自动从头开始演奏。8/23/202429VHDL综合设计实践芜湖职业技术学院设计实现1.信号定义与说明clk_4Hz:用于控制音长(节拍)的时钟频率;clk_6MHz:用于产生各种音阶频率的基准频率;speaker:用于激励扬声器的输出信号,本设计为方波信号;high,med,low:分别用于显示高音、中音、低音音符,各驱动一个数码管来显示。8/23/202430VHDL综合设计实践芜湖职业技术学院2.代码实现8/23/202431VHDL综合设计实践芜湖职业技术学院8/23/202432VHDL综合设计实践芜湖职业技术学院8/23/202433VHDL综合设计实践芜湖职业技术学院8/23/202434VHDL综合设计实践芜湖职业技术学院8/23/202435VHDL综合设计实践芜湖职业技术学院8/23/202436VHDL综合设计实践芜湖职业技术学院8/23/202437VHDL综合设计实践芜湖职业技术学院

10.4自动售饮料机的设计自动售饮料机是一种典型的利用状态机进行电路设计的例子。本例采用有限状态机设计,使用case语句来描述各个状态之间的转移关系。回忆一下case语句的使用。当多路选择的控制条件几种在某个变量的变化上时,用case语句加以表达十分方便且直观。case语句最适于描述有限状态机,比如像CPU的译码部分的描述等。case语句的用法:case(敏感信号表达式)值1:块语句1;值2:块语句2;……..值n:块语句n;default:块语句n+1;endcase8/23/202438VHDL综合设计实践芜湖职业技术学院当case语句中敏感表达式的值与值1相同时,执行块语句1;当敏感信号表达式与值2相同时,执行表达式2;依次类推,最后,如果敏感表达式的值与上面列出的值1到值n都不相同的话,则执行default后面的语句块n+1。值1至值n必须各不相同,一旦判断与某值相同并执行相应语句块后,case语句便告结束。如果某几个连续排列的值执行的是同一条语句,则这几个项之间可用逗号隔开,而将执行行语句放在这几个项的最后一个中。下面用case语句设计一个自动售饮料机。假定每瓶饮料售价为2.5元,可使用2种币种,即5角(half_dollar)、1元(one_dollar),机器有找零功能。8/23/202439VHDL综合设计实践芜湖职业技术学院机器设两个投币孔,分别接受1元和5元两种硬币,因硬币识别装置牵涉到传感器,在实验板上用两个按键来代替。有两个输入口,分别输出饮料和找零,还设两个灯,提示用户取走饮料和零钱,也可用声音来提醒。另外可设两个数码管,用于显示已投

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论