基于FPGA的电子秒表设计资料.docx
《基于FPGA的电子秒表设计资料.docx》由会员分享,可在线阅读,更多相关《基于FPGA的电子秒表设计资料.docx(21页珍藏版)》请在冰豆网上搜索。
基于FPGA的电子秒表设计资料
基于FPGA的电子秒表设计
摘要
简而言之,电子秒表的工作原理就是不断输出连续脉冲给加法计数器,而加法计数器通过译码器来显示它所记忆的脉冲周期个数。
电子秒表是日常生活中比较常见的电子产品。
本设计秒表的逻辑结构主要由74LS00,555定时器,RS触发器,74LS90等器件组成。
使用了基本RS触发器作为电子秒表的开关,基本RS触发器属低电平直接触发的触发器,有直接置位,复位的功能。
整个秒表需有一个清零/启动信号和一个停止/保持信号装置,以便秒表能随意停止及启动,计数器的输出全都为BCD码输出,方便显示译码器连接。
本设计基于简单易行的原则,秒表显示以0.01s为最小单位,设计时,按照设计任务的次序,将各单元电路逐个进行接线和调试,即分别测试基本RS触发器、时钟发生器及计数器的逻辑功能,待各单元电路工作正常后,再将有关电路逐级连接起来进行测试……,直到测试电子秒表整个电路的功能。
最后进行总结.做到经典而没有缺憾的设计结果。
关键字:
74LS00555定时器RS触发器BCD码
一、
引言
(一)设计的背景
秒表计时器是电器制造,工业自动化控制、国防、实验室及科研单位理想的计时仪器,他广泛应用于各种继电器、电磁开关、控制器、延时器、定时器等的时间测试。
有关电子秒表的发展历史,大致可以分为三个演变阶段。
1、从大型钟向小型钟演变。
2、从小型钟向袋表过度。
3、从袋表向腕表发展。
每一阶段的发展都是和当时的技术发明分不开的。
1088年,当时我国宋朝的科学家苏颂和韩公廉等人制造了水运仪象台,它是把浑仪、浑象和机械计时器组合起来的装置。
他以水力作为动力来源具有科学的擒纵机构。
1656年。
,荷兰的科学家惠更斯利用伽利略的理论设计了钟摆,第二年,在他的指导下年轻钟匠S.Coster制造成功了第一个钟摆。
这样就形成了以发条为动力、以游丝为调速机构的小型钟,同时也为制造便于携带的袋表提供了条件。
20世纪初,尤其是第一次世界大战的爆发,袋表袋表已经不能适应作战军人的需要。
许多新的设计和技术也被应用在腕表上成为真正意义上的带在手腕上的计时工具。
现代的电子秒表主要是有三种设计制造工艺
①采用8051IP核设计。
用FPGA构成一个8051单片应用系统拥有标准8051完全兼容的指令系统的CPU;256字节内部RAM;4K字节程序ROM;
每一此编译下载后都能根据需要更新ROM中的程序,所以该单片机的实现和使用如同89C51/52一样方便。
②采用芯片EP1C12Q240C8、共阴七段数码管、按键开关、发光二极管设计。
EP1C12Q240C8是Cyclone器件,Cyclone可以最多支持129个通道的LVDS和RSDS。
Cyclone器件的LVDS缓冲器可以支持最高达640Mbps的数据传输速度。
与单端的I/O口标准相比,这些内显置于Cyclone器件内部的LVDS缓冲器保持了信号的完整性,并且有更低的电磁干扰、更好的电磁兼容性(EMI)及更低的电源功耗。
③采用模块化设计,共分为分频模块(msecond)、控制秒模块(second)、控制分钟模块(minutes)、LED模块(alert)、数码管扫描模块(zhishi)、显示驱动模块(deled)六个模块。
其中LED模块可以去掉,不影响秒表正常运行以下对各个模块一一描述。
电子秒表在生活中也可广泛应用于对运动物体的速度、加速度的测量实验,还可用来验证牛顿第二定律、机械能守恒等物理实验,同时也适用于对时间测量精度要求较高的场合.测定短时间间隔的仪表。
有机械秒表和电子秒表两类。
机械秒表与机械手表相仿,但具有制动装置,可精确至百分之一秒;电子秒表用微型电池作能源,电子元件测量显示,可精确至千分之一秒。
广泛应用于科学研究、体育运动及国防等方面在当今非常注重工作效率的社会环境中,定时器能给我们的工作、生活以及娱乐带来很大的方便,充分利用定时器,能有效的加强我们的工作效率。
通过本设计的研究,可以掌握用FPGA实现电子秒表的方法,理解FPGA的概念、应用和编程方法,有利于提高学生应用FPGA进行设计的能力。
(二)设计实现的基本功能
设计的主要内容是设计一个电子秒表。
①按下标准键盘的“模式切换键”,让秒表的工作模式在“时:
分:
秒:
0.1秒”或“时:
分:
秒”之间切换。
②LED显示器按第一步中设置的模式显示秒表计时的初始状态(缺省为全0),按下“设置键”可设置初始值。
③当第一次按下“计时/暂停键”,秒表从初始开始计时,LED显示器上实时显示计时值。
④当第二次按下“计时/暂停键”,秒表停止计时,LED显示器上显示最终计时值。
⑤再次按下“计时/暂停键”时,秒表继续计时。
⑥当按下“清零键”时,秒表停止计时,并且计时值回零。
⑦当按下“结束键”时,结束程序,返回DOS。
(三)设计的结构安排
本文首先总体介绍了555定时器、基本RS触发器的原理及应用,使电子秒表的结构得以展现。
紧接着又分别从软件及硬件两个方面做出介绍与分析,使设计的功能得以完美的实现;然后就每一个部分作出具体分析,最后通过对设计的深入了解,得出相应的结论。
二、系统硬件设计
(一)总体设计
按功能分成四个单元电路进行分析:
图1为电子秒表的电原理图
1.基本RS触发器(单元1)
图1中单元1为用集成与非门构成的基本RS触发器。
属低电平直接触发的触发器,有直接置位、复位的功能。
供电电源的实现:
采用通用变压器降压并与把输入和输出隔离,次级低压经过整流滤波再用比较成熟的集成稳压器件进行稳压控制输出5V直流电源。
220V电网电压经过通用变压器降压至9V,9V交流电压经VD1-全桥整流、电容滤波作用后变成直流电压供给集成稳压器,经过降压、稳压后变成所需的5V直流电压。
电容的作用是防止集成稳压器自激,同时兼做保护大容量电容之用,进一步滤波稳压以改提高和改善5V电源的品质,有助于电源的稳定和带负载能力。
LED作电源指示之用。
单元1
它的一路输出
作为单稳态触发器的输入,另一路输出Q作为与非门5的输入控制信号。
按动按钮开关K2(接地),则门1输出=1;门2输出Q=0,K2复位后Q、
状态保持不变。
再按动按钮开关K1,则Q由0变为1,门5开启,为计数器启动作好准备。
由1变0,送出负脉冲,启动单稳态触发器工作。
基本RS触发器在电子秒表中的职能是启动和停止秒表的工作。
2.单稳态触发器(单元2)
图1中单元2为用集成与非门构成的微分型单稳态触发器,图6为各点波形图。
单元2
单稳态触发器的输入触发负脉冲信号vi由基本RS触发器
端提供,输出负脉冲vO通过非门加到计数器的清除端R。
静态时,门4应处于截止状态,故电阻R必须小于门的关门电阻ROff。
定时元件RC取值不同,输出脉冲宽度也不同。
当触发脉冲宽度小于输出脉冲宽度时,可以省去输入微分电路的RP和CP。
单稳态触发器在电子秒表中的职能是为计数器提供清零信号。
3.时钟发生器(单元3)
图1中单元3为用555定时器构成的多谐振荡器,是一种性能较好的时钟源。
单元3
调节电位器RW,使在输出端3获得频率为50HZ的矩形波信号,当基本RS触发器Q=1时,门5开启,此时50HZ脉冲信号通过门5作为计数脉冲加于计数器①的计数输入端CP2。
输出波形如下图所示:
4.计数及译码显示(单元4)
单元4
二—五—十进制加法计数器74LS90构成电子秒表的计数单元,如图1中单元4所示。
其中计数器①接成五进制形式,对频率为50HZ的时钟脉冲进行五分频,在输出端QD取得周期为0.1S的矩形脉冲,作为计数器②的时钟输入。
计数器②及计数器③接成8421码十进制形式,其输出端与实验装置上译码显示单元的相应输入端连接,可显示0.1~0.9秒;1~9秒计时。
74LS90是异步二—五—十进制加法计数器,它既可以作二进制加法计数器,又可以作五进制和十进制加法计数器。
通过不同的连接方式,74LS90可以实现四种不同的逻辑功能;而且还可借助R0
(1)、R0
(2)对计数器清零,借助S9
(1)、S9
(2)将计数器置9。
其具体功能详述如下:
(1)计数脉冲从CP1输入,QA作为输出端,为二进制计数器。
(2)计数脉冲从CP2输入,QDQCQB作为输出端,为异步五进制加法计数器。
(3)若将CP2和QA相连,计数脉冲由CP1输入,QD、QC、QB、QA作为输出端,则构成异步8421码十进制加法计数器。
(4)若将CP1与QD相连,计数脉冲由CP2输入,QA、QD、QC、QB作为输出端,则构成异步5421码十进制加法计数器。
(5)清零、置9功能。
a) 异步清零
当R0
(1)、R0
(2)均为“1”;S9
(1)、S9
(2)中有“0”时,实现异步清零功能,即QDQCQBQA=0000。
b) 置9功能
当S9
(1)、S9
(2)均为“1”;R0
(1)、R0
(2)中有“0”时,实现置9功能,即QDQCQBQA=1001。
(二)555定时器简简介
1.555结构及原理
图2555内部电路框图
图3555定时器外围引脚排列
555定时器是一种模拟和数字功能相结合的中规模集成器件。
一般用双极性工艺制作的称为555,用CMOS工艺制作的称为7555,除单定时器外,还有对应的双定时器556/7556,555定时器的电源电压范围宽,可在4.5V~16V工作,555可在3~18V工作,输出驱动电流约为200mA,因而其输出可与TTL、CMOS或者模拟电路电平兼容。
555定时器成本低,性能可靠,只需要外接几个电阻、电容,就可以实现多谐振荡器、单稳态触发器及施密特触发器等脉冲产生与变换电路。
它也常作为定时器广泛应用于仪器仪表、家用电器、电子测量及自动控制等方面。
555定时器的内部电路框图和外引脚排列图分别如图1和图2所示。
它内部包括两个电压比较器,三个等值串联电阻,一个RS触发器,一个放电管T及功率输出级。
它提供两个基准电压VCC/3和2VCC/3。
555定时器的功能主要由两个比较器决定。
两个比较器的输出电压控制RS触发器和放电管的状态。
在电源与地之间加上电压,当5脚悬空时,则电压比较器C1的同相输入端的电压为2VCC/3,C2的反相输入端的电压为VCC/3。
若触发输入端TR的电压小于VCC/3,则比较器C2的输出为0,可使RS触发器置1,使输出端OUT=1。
如果阈值输入端TH的电压大于2VCC/3,同时TR端的电压大于VCC/3,则C1的输出为0,C2的输出为1,可将RS触发器置0,使输出为0电平。
2.555的应用
①构成施密特触发器,用于TTL系统的接口,整形电路或脉冲鉴幅等;
②构成多谐振荡器,组成信号产生电路;
③构成单稳态触发器,用于定时延时整形及一些定时开关中,555应用电路采用这3种方式中的1种或多种组合起来可以组成各种实用的电子电路,如定时器、分频器、脉冲信号发生器、元件参数和电路检测电路、玩具游戏机电路、音响告警电路、电源交换电路、频率变换电路、自动控制电路等。
(三)基本RS触发器
1.由与非门组成的基本RS触发器
①电路结构
电路组成:
两个与非门输入和输出交叉耦合(反馈延时);如图4(a)所示;逻辑符号:
图4(b)所示。
图4与非门RS触发器的结构及分析
②逻辑功能
表1与非门组成的基本RS触发器的特性表
RS
Qn
Qn+1
功能说明
00
00
0
1
×
×
不稳定状态
01
01
0
1
0
0
置0(复位)
10
10
0
1
1
1
置1(置位)
11
11
0
1
0
1
保持原状态
2.由或非门组成的基本RS触发器
①电路构成:
两个或非门的输入和输出交叉耦合而成,图4(a)所示。
逻辑符号:
图(b)所示。
图5或非门RS触发器结构及分析
②工作原理
在与非门实现的基本RS触发器的基础上稍作变化。
表2或非门组成的基本RS触发器的特性表
RS
Qn
Qn+1
功能说明
00
00
0
1
0
1
保持原状态
01
01
0
1
0
0
置1(复位)
10
10
0
1
1
1
置0(复位)
11
11
0
1
×
×
不稳定状态
(四)功能测试
表374LS90部分功能
输入
输出
功能
清0
置9
时钟
QD QC QB QA
R0
(1)R0
(2)
S9
(1)S9
(2)
CP1CP2
1
1
0
x
x
0
xx
0
0
0
0
清0
0
x
x
0
1
1
xx
1
0
0
1
置9
0x
x0
0x
x0
↓1
QA输出
二进制计数
1↓
QD QC QB 输出
五进制计数
↓QA
QD QC QB QA输出
8421BCD码
十进制计数
QD↓
QD QC QB QA输出
5421BCD码
十进制计数
11
不变
保持
①基本RS触发器的测试
将单元1的两个输出端接逻辑电平显示,按动按钮开关K2(接地),记下Q和的值,按动按钮开关K1,Q和的值。
②单稳态触发器的动态测试
输入端接1KHZ连续脉冲源,用示波器观察并描绘D点(VD)F点(V0)波形,如嫌单稳输出脉冲持续时间太短,难以观察,可适当加大微分电容C(如改为0.1μ)待测试完毕,再恢复4700P。
③钟发生器的测试
用示波器观察输出电压波形并测量其频率,调节RW,使输出矩形波频率为50Hz。
④计数器的测试
(1)计数器①接成五进制形式,RO
(1)、RO
(2)、S9
(1)、S9
(2)接逻辑开关输出插口,CP2接单次脉冲源,CP1接高电平“1”,QD~QA接实验设备上译码显示输入端D、C、B、A,按表3测试其逻辑功能,记录之。
(2)计数器②及计数器③接成8421码十进制形式,同内容
(1)进行逻辑功能测试。
记录之。
(3)将计数器①、②、③级连,进行逻辑功能测试。
记录之。
⑤ 电子秒表的整体测试
各单元电路测试正常后,按图5把几个单元电路连接起来,进行电子秒表的总体测试。
先按一下按钮开关K2,此时电子秒表不工作,再按一下按钮开关K1,则计数器清零后便开始计时,观察数码管显示计数情况是否正常,如不需要计时或暂停计时,按一下开关K2,计时立即停止,但数码管保留所计时之值。
⑥ 电子秒表准确度的测试
利用电子钟或手表的秒计时对电子秒表进行校准。
通过此次设计学习数字电路中的基本RS触发器、单稳态触发器、时钟发生器及计数、译码显示等单元电路的综合应用。
学习电子秒表的调试方法。
了解电子秒表的工作原理。
进行小型数字综合系统的初步训练。
掌握调试电路、排除电路故障的正确方法。
对知识进行了整合运用,对以前所学知识进行了总结和综合运用,加深了自己的理解。
三、
系统软件设计
(一)设计方案
1.系统总体框图
电子秒表主要有分频器、计数模块、和显示输出模块等组成。
系统框图如图7所示。
图6电子秒表整体结构框图
本次的设计仿真选用以EPlC6Q240芯片为核心的FPGA开发板,该开发板提供了较完善的外围周边电路和信号接口,并提供了一块4位7段数码管的扩展板,为本次设计提供了硬件条件。
在设计中,功能控制模块根据控制选择不同的功能状态的时间输出,通过启停控制模块和显示输出模块驱动7段数码管显示相应的时间。
2.系统功能要求
(1)具有时钟秒表系统功能要求显示功能,用4个数码管分别显示秒和百分秒;
(2)具有3种功能状态:
系统时间运行状态,系统时间至零状态,时钟正常显示状态,通过输入控制信号可以使系统在这3个状态之间切换,使数码管显示相应状态的时间;
(3)开启时间设定、关闭时间设定可通过控制信号中的时间调节来设置,在秒设置方面每按一下,秒就会自动加1,采用60进制计数,当计数到59时又会恢复为OO;百分秒设置方面每按一下,百分秒会自动加1,采用100进制计数,当计数到99时,向上进位并恢复O0。
系统时间可以同单独的至零信号,将数码管显示时间直接恢复到00.0O状态。
(二)分频模块
开发板提供的系统时钟为50MHz,通过分频模块3次分频,将系统的时钟信号分为100Hz和1000Hz分别提供给计数模块和启停控制模块作为时钟控制信号。
仿真波形如图9所示,该模块部分VHDL源程序如下:
图7分频模块仿真波形
Cl:
process(clk_in)
Bejin
If(clk_in`eventandclk_in=`1`)then
If(count=〝110001〞)then
Count<=〝000000〞;
Clk1<=`1`;
Else
Clk1<=`0`;
Count<=count=+1;
Endif;endif;
Endprocesscl;
C2:
process(clk1)
Bejin
If(clk1`eventandclk1=`1`)then
If(count1=〝1111100111〞)then
Count1<=〝00000000000〞;
Clk2<=`1`;
Else
Clk2<=`0`;
Count1<=count1+1;
Endif;endif;
Clk_c<=clk2;
Endprocessc2;
C3:
process(clk2)
Bejin
If(clk2`eventandclk2=`1`)then
If(count2=〝1001〞)then
Count2<=〝0000〞;
Clk3<=`1`;
Else
Clk3<=`0`;
Count2<=count2+1;
Endif;endif;
Clk_con<=clk3;
Endprocessc3;
(三)计数模块
计数模块中,时钟信号是100Hz作为秒表的百分秒输入,百分秒为100进制计数器,其进位输出作为秒的计数时钟,秒为60进制计数器。
控制信号输入端的begin—stop和reset信号控制计数器的开始、停止和至零。
仿真结果如图8所示,该模块部分VHDL源程序如下:
图8计数仿真结果显示
Process(clk_con)
Bejin
Ifreset`1`then
D0(3downto0)<=〝0000〞;
D1(3downto0)<=〝0000〞;
D2(3downto0)<=〝0000〞;
D3(3downto0)<=〝0000〞;
Elseif(clk_con`eventandclk_con=`1`)then
Ifbejinstop=`1`then
Do<=d0+1;
Ifd0(3downto0)=〝1001〞then
D0(3downto0)<=〝0000〞;d1<=d1+1;
Ifd1(3downto0)=〝1001〞then
D1(3downto0)<=〝0000〞;d2<=d2+1;
Ifd2(3downto0)=〝1001〞then
D2(3downto0)<=〝0000〞;d3<=d3+1;
Ifd3(3downto0)=〝0101〞then
D3(3downto0)<=〝0000〞;
Endif;endif;endif;
Endif;endif;endif;
Num0<=d0;num1<=d1;
Num2<=d2;num3<=d3;
Endprocess
(四)启停控制模块
本次设计选用的开发板数码管扩展板的数码显示采用的是4个数码管动态扫描输出,一般只要每个扫描频率超过人的眼睛视觉暂留频率24Hz以上就可以达到点亮单个显示而不闪烁,扫描频率采用1kHz信号。
通过启停控制,每个数码管的显示频率为250Hz,满足显示要求。
仿真结果如图9所示,该模块部分VHDL源程序如下:
图9控制模块仿真结果显示
Process(clk_c)
Bejin
If(clk_c`eventandclk_c=`1`)then
Ifcount=〝11〞then
Count<=〝00〞;
Else
Count<=count+1;
Endif
Endif
Casecountis
When〝00〞=>led<=〝0001〞;
When〝01〞=>led<=〝0010〞;
When〝10〞=>led<=〝0100〞;
When〝11〞=>led<=〝1000〞;
Whenothers=>null;
Endcase;
Endprocess;
(五)显示控制模块
本次设计选用的开发板在4位数码管输入方面只提供1个数据接口,用来动态显示4位数据,在数据输入信号方面要做到和启停控制信号同频率输出,才能保证数码显示不会出错或显示移位。
仿真波形如图10所示,该模块部分VHDL源程序如下:
图10显示模块仿真波形
Process(clk_mux4)
Bejin
If(clk_mux4`eventandclk_mux4=`1`)then
Casecountis
When〝00〞=>data<=num0;
When〝01〞=>data<=num1;
When〝10〞=>data<=num2;
When〝11〞=>data<=num3;
Whenothers=>null;
Endcase;
Ifcount=〝11〞then
Count<=〝00〞;
Else
Count<=count+1;
Endif;endif;
Endprocess;
Led_data<=data;
Architecturebhvofdecodeis
Bejin
Segs<=〝1111110〞whendata=〝0000〞else
〝0110000〞whendata=〝0001〞else
〝1101101〞whendata=〝0010〞else
〝1111001〞whendata=〝0011〞else
〝0110011〞whendata=〝0100〞else
〝1011011〞whendata=〝0101〞else
〝1011111〞whendata=〝0110〞else
〝1110000〞whendata=〝0111〞else
〝1111111〞whendata=〝1000〞else
〝1111011〞whendata=〝1001〞else
〝1110111〞whendata=〝1010〞else
〝0011111〞whendata=〝1011〞else
〝1001110〞whendata=〝1100〞else
〝0111101〞whendata=〝1101〞else
〝1001111〞whendata=〝1110〞else
〝1