基于VHDL的计时系统的设计Word格式.docx
- 文档编号:20175569
- 上传时间:2023-01-17
- 格式:DOCX
- 页数:31
- 大小:382.05KB
基于VHDL的计时系统的设计Word格式.docx
《基于VHDL的计时系统的设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于VHDL的计时系统的设计Word格式.docx(31页珍藏版)》请在冰豆网上搜索。
5
2.2.1晶振电路·
2.2.2分频电路·
6
2.3七段数码显示电路·
7
2.4总体电路设计·
9
3VHDL内部电路设计·
10
3.1综合计时电路设计·
3.1.1计秒电路设计·
3.1.2计分电路设计·
12
3.1.3计时电路设计·
3.1.4计日电路设计·
13
3.1.5计月电路·
15
3.1.6计年电路设计·
3.1.7计星期电路设计·
3.2调整控制电路设计·
16
3.3显示控制电路设计·
20
3.4总体设计·
24
4VHDL程序仿真·
25
4.1COUNT60仿真·
4.2COUNDAY仿真·
4.3调整模块仿真·
26
4.3.1SELECT模块仿真·
4.3.2FUZHI模块仿真·
27
4.4显示模块仿真·
28
4.5总体设计·
5总结·
30
致谢·
31
参考文献·
32
附件·
33
1前言
1.1计时系统研究背景
计时器是人们日常生活、学习、工作和进行科学生产、管理、研究必备的仪器,其历史是伴随着人类文明史而发展.从远古时代的日晷、滴漏进展到现代化的机械钟表、石英电子钟表、原子钟表的历程,都是计时器的不断发展过程,它们记录了人类社会的进化和工业文明的发展。
随着电子工业的发展,数字电子技术已经深入到了人们的生活,而且各种各样的电子产品也在日新月异地向着高精尖和节能发展。
由于电子产品的功能不断的增加,使用也越来越方便,有些产品已经成为了人们日常生活中不可缺少的必须品。
综合计时系统就是这其中的一样,在当今迅速发展的社会形势下,它的作用更加被体现出来。
当代电子科学技术不断发展,计时器的智能型和精确性越来越受到人们的重视,人们不再满足于手表的作用,于是,产生了万年历这种新的计时器,它可以同时显示年,月,日,时,分,秒,星期等,大大方便了人们的生活和生产。
而本设计,采用最先进的电子自动化技术即EDA技术,设计出更精确,更实用的综合计时器。
1.2设计要求
设计一个综合性的计时系统,要求能实现年、月、日、时、分、秒及星期的计数等综合计时功能,同时将计时结果通过15个七段数码管显示,并且可通过两个设置键,对计时系统的有关参数进行调整。
具体系统功能面板如图1-1所示。
图1-1计时系统功能面板
1.3设计方案与方案优点
传统的电路设计方法都是自底向上进行设计的,也就是首先确定可用的元器件,然后根据这些器件进行逻辑设计,完成各模块后进行连接,最后形成系统。
而EDA技术的设计方法则是自顶向下进行设计的,也就是采用可完全独立于目标芯片物理结构的硬件描述语言,在系统的基本功能或行为级上对设计的产品进行描述和定义,结合多层次的仿真技术[2],在确保设计的可行性与正确性的前提下,完成功能确认,然后利用EDA工具的逻辑综合功能,把功能描述转换成某一具体目标芯片的网表文件,输出给该器件厂商的布局布线配适器,进行逻辑映射及布局布线,再利用产生的仿真文件进行包括功能和时序的验证,以确保实际系统的性能。
本设计选用Altera公司的FLEX10K系列芯片,该芯片采用5V的工作模式,由Altera公司的MAXplus2开发系统提供软件支持,以硬件描述语言VHDL为系统逻辑描述的主要表达方式,设计了一个综合计时系统[7]。
该系统主要分为三个主要模块:
(1)综合计时模块:
计时模块又可分七个小模块,有计秒模块,计分模块,计时模块,计日模块,计月模块,计年模块,计星期模块,用于完成各种计时的功能[16]。
其中,计秒电路的输入时钟周期为1秒,计分电路的输入时钟为计秒电路的输出进位,如此类推下去,构成每个计时模块之间的联系。
而计日模块又略有不同,因为每个月的日数受年份,月份影响,所以要输入当前的年份月份来判断是否闰年,是否大月,才可以实现准确的计时。
(2)调整控制电路则用于调整计时系统的有关参数,通过两个按键来对系统的参数进行修改,在修改过程中,对应的修改计时模块通过相应的灯点亮来表示数据正待输入。
(3)显示控制电路用于完成计时结果的显示控制及显示译码等功能,然后通过15个七段数码管显示出来。
采用自顶向下的设计方法有如下优点[5]:
(1)对设计的描述从上到下逐步由粗略到详细,符合常规的逻辑思维习惯;
(2)由于高层设计同器件无关,可以完全独立于目标器件的结构,因此避免了传统设计方法中的再设计风险,缩短了产品的上市周期;
(3)由于系统采用硬件描述语言进行设计,可以完全独立于目标期间的结构,因此设计易于在各种集成电路工艺或可编程器件之间移植;
(4)适合多个设计者同时进行设计。
利用EDA技术,它可快速,经济地设计出高性能的综合计时系统,并且很容易实现,修改及完善[2]。
1.4设计的可行性
计时系统最关键的是计时的精确性。
利用固定的震荡频率作为时钟信号输入,利用计数循环,实现时间的变化,而低位计时进位信号则作为高位计时的时钟输入。
而采用VHDL来设计,可将每个计时模块独立设计,再连接起来,保证了每个模块独立运行的准确性。
再通过设计频率发生电路产生高频率作为最低时钟信号,更保证了系统运行的精确性,在整个设计中主要是以高精度、低功耗为目的。
2外围电路设计
根据系统设计要求,本综合计时系统主要由外围电路和VHDL内部电路组成[10]。
外围电路由电源、方波信号源、显示电路组成;
VHDL内部电路由综合计时电路、调整控制和显示控制电路组成。
图2-1系统原理框图
2.1电源设计
稳压电源由电源变压器、整流电路、滤波电路和稳压电路四个部分组成[12],如图所示。
图2-2直流稳压电源原理图
即输入交流电压先经过变压器降压,在通过整流电路,变为单相电压,在通过滤波电路变将近直流,最后通过稳压电路输出所需要的直流稳压电源[4]。
图2-3直流稳压电源电路图
设输出电压为U=+5V—15V,输出电流为I=800mA,则集成稳压器可选用CW317,其输出电压范围为:
U0=1.2—37V,最大输出电流Imax为1.5A[15]。
在图中,R1和Rw组成输出电压调节,输出电压U0≈1.25(1+Rw/R1),取R1=200Ω,可得Rw≈2.2KΩ。
所以Rw可选2.5KΩ的精密线绕电位器。
由于CW317的输入电压与输出电压差的最小值为3V,,输入电压与输出电压差的最大值为40V,故CW317的输入电压范围为:
12V到43V,所以变压器可选择输入功率为20W的型号。
整流二极管选用IN4001,其反向击穿电压为大于50V,额定工作电流为1A。
滤波电容C取容量为4700uF,耐压为25V电容。
其它的,C1=0.01uF,C2=10uF,C0=1uF。
由于本系统需要用到12V的电压和5V的电压,调节Rw,使输出U1为12V,作为信号源的输入电压。
再选用滑动变阻器Rw2=100Ω为分压器,调节出U2为5V作为FLEX10K的输入电压。
2.2方波信号源设计
2.2.1晶振电路
晶振是利用具有典雅电效应的石英晶体片制成,这种石英晶体片受到外加交变电场的作用时会产生机械振荡,当交变电场的频率与石英晶体的固有频率相同时,振动就会很强烈,这就是晶体振荡的特性反应[1]。
利用这一特性,就可以用晶振取代LC谐振回路、滤波器等。
晶体振荡器的特点是频率准确,电路结构简单,频率易调整。
在此次设计中将采用双晶振来实现系统时钟[12]。
石英4.096MHz晶体振荡电路如图2-4所示,采用反相器等元件构成。
利用一个与非门自我反馈,使它工作在线性状态;
然后利用石英晶体来控制振荡频率,电阻为反馈元件,电容C防止寄生振荡,在输出端得到较稳定的4.096MHz脉冲信号。
在本次设计中将频率为4.096MHz的晶振作为综合计时系统的时钟信号。
图2-4晶体振荡电路
2.2.2分频电路
本次设计采用的是由CD4060集成电路来构成分频电路,CD4060由一振荡器和14级二进制串行计数器位组成,振荡器的结构可以是RC或晶振电路,CR为高电平时,计数器清零且振荡器使用无效[1]。
所有的计数器位均为主从触发器。
在CP1和CP0的下降沿计数器以二进制进行计数。
在时钟脉冲线上使用斯密特触发器对时钟上升和下降时间无限制。
其管脚图如图2-5所示。
图2-5CD4060管脚
C1=33pF,C2=7/25pF,晶振为4.096M,R1=3MΩ,CD4060的电源为12V。
图2-61HZ方波电路
在本次设计中采用一片集成电路计数器CD4060作为分频器[7],如图所示,CD4060与其10,11引脚的外接电阻R1,晶振Y及电容C1,C2构成振荡回路。
调整C2可将振荡频率调整到准确值。
其中R1是反馈电阻,以确定门电路的工作点,使本来工作在开关状态的非门工作与电压传输特性的过渡区。
CD4060输出的振荡信号经过一级放大后,送到固定分频器部分,本装量是从CD4060的引脚12输出信号的,其分频比为2的12次幂,等于4096,即输出频率为4096HZ/4096=1HZ
2.3七段数码显示电路
本次计时显示需要使用的是15个七段显示译码管。
在计时结果显示电路中,七段数码管显示部分是一个不容易忽视的环节,如果处理不当,可能引起系统功率过大,产生散热问题,严重时甚至会导致系统的烧毁。
为了解决好这一问题,下面就七段数码管显示电路进行设计。
七段数码显示译码电路将用于显示的BCD码数据进行译码[7]。
起输入、输出端口如图2-7所示。
输入信号SR(3·
0)为将要显示的BCD码,输出端SC(6·
0)分别与数码管的各段相连,根据数码管的不同进行编程,这里采用的是共阴极的数码管,即LED七段显示高平有效。
图2-7LED七段显示译码器输入、输出端口
七段显示器可以分为共阴极、共阳极两种,它们都可以等效成8个LED的链接电路,如下图2-8所示就是共阴极型七段数码显示器的等效电路和每一节LED的定义位置。
图2-8共阴极七段显示器与LED位置定义等效电路
图2-9为15个共阴极型七段数码显示驱动连接图。
根据驱动连接图连接电路,我们知道译码器各输出端控制了15个数码显示器的位选端,所以如果想要让15个数码管都亮起来,就可以用动态扫描的方式逐位扫描15个数码显示管。
图2-9数码显示电路
根据显示模块的设计,数码管的BCD七段码码输入来自信号SEG_HIG和EG_LOW选中信号来自信号SEL_BRI,进行动态显示[18]。
上图是总体显示电路,采用总线形式,而每个数码管的驱动电路,以显示计秒高位为例,如下图所示:
图2-10数码管驱动电路图
2.4总体电路设计(见附录)
其中,ZHISQ是FLEX10K芯片,只列出所需要引脚信号。
按键S1,S2是调整模式和时间调整的按键输入,RESET保持接地。
芯片接5V电压,由直流电压源产生,模式灯D1—D8为二极管,加限流电阻R1—R8,阳极接5V电压,也来自直流电压源,电阻大小为0.34K,保证通过二极管的电流为10MA,正常点亮。
SEC_BRI,SEG_LOW,SEG_HIG接往显示电路的输入端[3]。
3VHDL内部电路设计
3.1综合计时电路设计
根据系统的设计要求,综合计时电路可分为计年电路、计月电路、计日电路、计时电路、计分电路、计秒电路、计星期电路等7个子模块,这7个模块都具有预置、计数、进位功能,设计思路如下[13]:
3.1.1计秒电路设计
计秒电路是直接输入或由分频器产生的秒脉冲作为计秒电路的计数时钟信号,待计数至60瞬间进位,计分电路加1,而计秒电路则清零并重新计秒。
还有复位功能,当复位开关为低电平时计数为0;
通过分频器把频率为1KHz的输入脉冲转换为频率为1秒的脉冲,作为计数时钟信号输入,一次脉冲的上升沿,计数加1,直到计数为59瞬间,进位输出,并把计数置零从新开始计数。
下面介绍其模块的输入输入端口功能:
图3-1COUNT60端口图
其中,输入信号CLK为计数时钟信号;
输入信号LOAD是预置数控制信号,低电平时,数据输入;
输入信号D为长度为6的二进制预置数;
输出信号Q为相应的计数结果;
输出信号CO为进位输出,作为下一个计时模块的时钟输入。
COUNT60的主要VHDL程序段如下:
IF(LOAD='
0'
)THEN--预置数据
Q<
=D;
ELSIF(CLK'
EVENTANDCLK='
1'
)THEN
IFQ="
111011"
THEN--进位清零
="
000000"
;
CO<
='
ELSEQ<
=Q+1;
--加一
ENDIF;
ENDIF;
转换输入频率的分频器的端口图如下所示:
图3-2分频器的端口图
FPQ的主要VHDL程序如下:
IFRESET='
THEN
CNT<
=0;
CLK_OUT<
ELSIFRISING_EDGE(CLK_IN)THEN
IFCNT<
(LENGTH/2)THEN
=CNT+1;
ELSIFCNT<
(LENGTH-1)THEN
CNT<
ELSE
=0;
3.1.2计分电路设计
计分电路是将计秒电路产生的进位脉冲信号作为计分电路的计数时钟信号,待计数至60瞬间进位,计时电路加1,而计分电路则清零并重新计分,有复位功能,当复位开关为低电平时,计数结果为0。
其输入、输出端口图3-3所示,输入信号SETHOUR为调时控制信号,低电平有效;
输入信号CLKS为调时给定脉冲;
输入信号CLK为计数时钟信号;
输入信号RESET为复位信号,低电平有效;
输出信号DAOUT[6·
0]为计数结果;
输出信号ENHOUR为计数溢出信号。
图3-3计分电路输入、输出端口
3.1.3计时电路设计
计时电路是将计分电路产生的进位脉冲信号作为计时电路的计数时钟信号,待计数至24的瞬间进位,计日电路加1,而计时电路则清零并重新计时。
还有复位功能,当复位开关为低电平时,计时结果为0。
其输入、输出端口图如下:
图3-4计时电路输入输出端口
3.1.4计日电路设计
把计时电路的进位输出作为计数时钟信号输入,一次信号的输入,计数加1,因为每月的日数并不是固定的,所以,首先把当前月数输入并判断,当为1,3,5,7,8,10,12时,等计数为31瞬间,进位输出,并把计数置1从新开始计数;
当当前月份为4,6,,9,11时,计数为30,进位并置1从新开始计数,而当二月份时,则先判断当前年份是否为闰年,当年份后两位数是4的倍数时,则为闰年,该月为29天;
其余的都为28天。
具体端口图如下所示:
其中,LOAD是置数控制信号,低电平有效,CLK是输入时钟信号。
D是待预置数,输入信号NIAN是当前计时的年份数;
YUE是当前月份数,输出信号Q是计数结果,输出信号CO是进为输出,MAX_DAY是当前月的天数。
图3-5COUNTDAY端口图
其主要VHDL程序如下:
CASENIANIS--判断是否为闰年,末尾两位数能被4整除的。
WHEN"
0000000"
=>
RUNNIAN<
……
1100000"
WHENOTHERS=>
ENDCASE;
CASEYUEIS
0001"
DAYS<
11111"
--判断大小月,1,3,5,7,8,10,12
0011"
为大月31天,4,6,9,11为小月30天
1011"
11110"
1100"
0010"
IF(RUNNIAN='
)THEN--判断二月的天数
DAYS<
11101"
ELSEDAYS<
11100"
NULL;
IF(LOAD='
)THEN
ELSIF(CLK'
MAX_DAY<
=DAYS;
IF(Q=DAYS)THEN
00001"
ELSE
3.1.5计月电路
把计日电路的进位输出作为计数时钟信号输入,一次信号的输入,计数加1,等计数为12瞬间进位输出,并把计数置1从新开始计数。
其输入、输出端口如下图所示:
图3-6计月电路输入输出端口
3.1.6计年电路设计
计年模块分为两部分,高两位和低两位分别计时,低位计数把计月电路的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 计时 系统 设计