VHDL设计FPGA数字系统:电子万年历
时钟源信号,每输入一个脉冲,对应计数器的值加1,从而使计数器的计数达到正确数据。而要校准的计数器由按键K1、K2、K3来控制。
校时模块通过VHDL语言编程,编译成功可生成器件,其器件如图4.17所示。
jiaoshimofosoroyon1ok1[2..0]k2k4fisiriyin1in2il1l2l3l4l5l6inst11
图4.17 校准模块器件生成图
校准模块的波形仿真如图4.18所示:
图4.18 校准模块的仿真图
如图4.18所示,当K1、K2、K3按键同时为低位时,进入正常计时模式,l1至l5输出都为低电平。当按下按键为001,则进入校分的工作模式,l1输出为高电平。此时接通时钟源,可以观察到其与分计数器的触发输入信号fi一致,即每个脉冲相当于给分计数器一个触发信号,使分计数器的值加1,从而实现校分的功能。若再按010,则进入校时的工作模式,l1变为低电平,l2变为高电平,同
25
VHDL设计FPGA数字系统:电子万年历
时波形与时计数器的触发输入信号si一致。若再按110,则进入校年高位的工作模式,l6输出高电平,其余全部输出低电平。故设计正确。 4.1.8 显示以及显示内容切换模块
显示与显示内容切换模块主要为了实现显示功能及显示内容切换功能。万年历不仅要显示时间,而且要显示日期。显示功能由K4、K5按键来实现,当K4、K5为00是显示时间,为01是显示日期,以此来轮流切换显示方式。
显示模块通过VHDL语言编程,编译成功可生成器件,其器件如图4.19所示。
change_s1[3..s2[3..min1[3.min2[3.h1[3..h2[3..d1[3..d2[3..mon2[3..y22[3..y21[3..y12[3..y11[3..k3[1..ccledq1[3..q2[3..q3[3..q4[3..q5[3..q6[3..q7[3..mon1[3..q8[3..inst8 图4.19 显示模块器件生成图
显示及显示内容切换模块的波形仿真如图4.20所示:
26
VHDL设计FPGA数字系统:电子万年历
图4.20 显示及显示方式切换模块仿真图
如图4.20所示,当K4、K5按键是00时,显示方式为时分秒显示,led输出低电平,作为显示内容的指示信号。在秒、分、时的显示方式中,将秒计数器、分计数器、时计数器的输入给输出q1至q6,q7和q8都为”0000”。当K4、K5按键是01后,led输出为高电平,同时将日计数器、月计数器、年低位计数器、年高位计数器给输出q1至q8,显示方式为年月日。若再次按K5按键,又进入时分秒显示模式,从而实现用K4、K5按键循环切换显示方式的功能,故设计正确。 除此以外,根据实验环境需要添加动态扫描模块以及八段译码器模块,此处不一一赘述。
4.2顶层原理图
顶层设计采用原理图输入法,从而达到设计思路清晰、直观的目的。 顶层原理图包含计时模块、校准模块、显示及显示内容切换模块,其中,计时模块包含秒、分、时、日、月、年计时模块。
生成顶层原理图的方法是基于上述各模块的源程序,将各个源程序创建成为一个元器件。在创建完各模块的元器件后,在原理图的任意一个位置上双击鼠标左键出现一个元件选件窗,然后在Project库中选择上述各模块生成的元件,在primitives中选择input和output管脚,按照设计思想,将各个元器件连接,形成顶原理图,顶层原理图如图4.21所示:
27
VHDL设计FPGA数字系统:电子万年历
图4.21 顶层原理图
28
VHDL设计FPGA数字系统:电子万年历
4.3 管脚锁定
顶层文件编译通过后,确定目标芯片,而后就要锁定管脚,具体锁定管脚号如表4.1所示。
表4.1 电子万年历的管脚锁定表
4.4电子万年历的展示
下载完成后,把时钟CLK0短路帽接在1Hz上。经验证,验证结果与预期的设计结果一致。
当没有K1、K2、K3按键是000时,万年历正常计时,LED1至LED6和LED8都不亮;
当K1K2K3为001时,进入校分的工作模式,此时LED1亮,LED2至LED6不亮,当时钟源每次输入一个脉冲,数码管显示的数据加1,而在校对时间时,校对位的位低一位和校对位的高位不会产生进位输出,其余位正常产生进位输出。
验证中,通过按K1、K2、K3键进入不同的工作模式,利用LED1至LED6的亮灭来判断目前所处于的工作模式。
当进入调日、月、年作模式时,按下K5键,切换显示方式,便于观察校对情况。
若将月计数器校为3月份,再通过K1、K2、K3按键进入校日工作模式,观察到日计数器计数至31时,再继续输入脉冲,日计数器重新从1开始计数;若将月计数器校为4月份,再通过K1、K2、K3按键进入校日工作模式,观察到日计数器计数至30时,再继续输入脉冲,日计数器重新从1开始计数。
若选择年份为平年且将月计数器校为2月份,再通过K1、K2、K3按键进入
29