摘 要 本文利用Spartan3A and Spartan3AN系列的XC3S200A FT256的FPGA作为开发硬件,ISE软件和ModelSim软件作为开发软件,设计制作了一款计数长度为一小时,计数精度为0.01秒,六位数码管显示的电子跑表。具有开始/停止,复位清零功能,并且加入了扩展要求的多次暂停计数功能和消抖判断。具有精度高,操作简单的特点。 关键词 FPGA;VHDL;ISE;ModelSim;电子跑表 中图分类号:TP302 文献标识码:A 文章编号:1671-7597(2013)14-0025-01 随着集成电路(IC)技术的发展,电子设计自动化(EDA)逐渐成为重要的设计手段,已经广泛应用于模拟与数字电路系统等许多领域。而电子设计自动化(EDA)的实现是与CPLD/FPGA技术的迅速发展息息相关的,利用PLD/FPGA,电子系统设计工程师可以在实验室中设计出专用IC,实现了系统的集成。此外,CPLD/FPGA还具有静态可重复编程或在线动态重构特性,使硬件的功能可像软件一样通过编程来修改,不仅使设计修改和产品升级变得十分方便,而且极大地提高了电子系统的灵活性和通用能力。20世纪80年代后期由美国国防部开发的VHDL语言恰好满足了上述这样的要求,并在1987年12月由IEEE标准化。它的出现为电子设计自动化(EDA)的普及和推广奠定了坚实的基础。由此,使用VHDL语言来设计数字系统是电子设计技术的大势所趋。 1 系统电路设计 系统由石英震荡器、分频部分、计数部分、显示部分、开始/停止使能和清零部分构成。分频器将晶振所提供的48 MHz信号分频成100 Hz时钟信号作为最低位计数器的计时信号,将六个计数器异步级联得到跑表时间数据,再经过数据选择器和显示译码器,以动态显示模式将显示译码器的段选信号分位输出给六个8段LED数码管显示,开始/停止使能可实现暂停/继续计时操作,清零部分完成系统的时间清零,为下次计时做准备。系统电路总体模块图如下。 2 各模块设计 2.1 分频器的设计 实验板提供了48 MHz的震荡信号,要求输出频率分别为1000 Hz和100 Hz。分频器的实现原理是基于计数器的方法设计的,通过对若干个震荡信号的计数来实现输出信号的翻转,故而实现了分频。 要得到100 Hz和1 Kz的方波,需要对48 MHz的晶振信号进行分频。要得到100 Hz的方波,需要480000分频,要实现480000分频,则输入源时钟信号clk每过480000/2即240000个上升沿,则对输出信号out100hz取反。同理,每经过24000个源时钟上升沿,对out1khz取反,得到1 KHz的信号。 2.2 计数器的设计 根据实验要求知,计数器由六个单极计数器级联实现,其中4个十进制计数器、2个六进制计数器。本实验方案采用同步级联实现。 本设计使用的是异步清零和同步使能,即当清零有效时,计数器立即清零,而当使能有效时,只有当时钟上升沿到来时,才进行暂停或开始计数的功能。使能输入即进位输入。首先先判断清零是否有效,当有效时,执行清零操作,count值为0。当清零无效时,并且使能有效是,进行计数。计数输出为四位二进制数countout。最后判断当计数值满并且使能有效时,进位输出有效。六进制计数器原理与十进制计数器类似。只是count_tmp值最大为“0101”。 2.3 使能控制的设计 使能控制是为了产生使能控制信号,在该控制信号作用下使输出发生翻转。使能输入(enable_in)每来一个上升沿,使能输出(enable_out)电平变化一次。即实现了每按一次按键,计数器在停止和开始计数之间切换。 2.4 显示控制的设计 显示控制模块应包含一个六进制计数器、六选一数据选择器和七段译码器。六进制计数器的时钟信号频率为1 kHz,计数输出作为位选控制信号sel(2:0)。数据选择器的地址控制信号为计数输出,数据选择器的数据端为要显示的六位数据mh(3:0),ml(3:0),sh(3:0),sl(3:0),ds(3:0),cs(3:0)。根据地址控制信号选择其中一路输出至译码器,译码器的输出作为段选控制信号led(6:0)。根据硬件电路,需设置一个译码使能信号G,G为低电平有效。 该模块里融合了一个六进制计数器,六选一数据选择器。通过分频器输出的1khz的时钟,控制六进制计数器计数(sel),使三位输出作为三八译码器的输入,从而控制8位数码管的位选以1khz进行扫描。又作为六选一数据选择器的地址选择输入,从而控制是哪一个数据作为六选一数据选择器的输出。这个输出经七段译码器后(led)作为数码管的段选。G端口为三八译码器的使能输出。 2.5 消抖模块的设计 消抖模块应能排除在按键按下电平不能稳定变化,出现纹波的情况下,对按键电平的识别。设计的思路是,当按键按下时,设计一个延时语句,当一段延时后,仍检测出按键为低电平,则认为按键按下,否则不判定为按键按下。本设使用计的按键消抖模块的思想为,当按键按下后,在所设定的一小段时间内,持续维持低电平,则判断为真正按下,输出(key_in)有效。 2.6 显示暂停模块 设计了一个门电路放在显示控制模块的段选输出和数码管之间,当门关闭时,数码管显示不变化,但计数器还在计数,当暂停后突然将门打开后,会将实际计数器的计数值送给数码管显示;门打开时则正常显示。这样,则实现了分别计数的扩展功能。设定的暂存模块很简单,就是在每个计数输出到显示控制输入之间加一个门。当开关按下后,门关闭,数码管显示暂停,但计数器仍在计数;当开关松开,计数器立即将当时时刻的计数值输送给数码管显示。 3 总结 经下载仿真后,从FPGA实验板的运行结果来看,该秒表实现了设计要求中包括所有扩展功能在内的全部功能,且显示时间稳定准确,按键灵敏度高。 参考文献 [1]于洋.面向教学的16位微处理器的FPGA设计与实现[D].江苏大学,2009.
摘 要 本文利用Spartan3A and Spartan3AN系列的XC3S200A FT256的FPGA作为开发硬件,ISE软件和ModelSim软件作为开发软件,设计制作了一款计数长度为一小时,计数精度为0.01秒,六位数码管显示的电子跑表。具有开始/停止,复位清零功能,并且加入了扩展要求的多次暂停计数功能和消抖判断。具有精度高,操作简单的特点。 关键词 FPGA;VHDL;ISE;ModelSim;电子跑表 中图分类号:TP302 文献标识码:A 文章编号:1671-7597(2013)14-0025-01 随着集成电路(IC)技术的发展,电子设计自动化(EDA)逐渐成为重要的设计手段,已经广泛应用于模拟与数字电路系统等许多领域。而电子设计自动化(EDA)的实现是与CPLD/FPGA技术的迅速发展息息相关的,利用PLD/FPGA,电子系统设计工程师可以在实验室中设计出专用IC,实现了系统的集成。此外,CPLD/FPGA还具有静态可重复编程或在线动态重构特性,使硬件的功能可像软件一样通过编程来修改,不仅使设计修改和产品升级变得十分方便,而且极大地提高了电子系统的灵活性和通用能力。20世纪80年代后期由美国国防部开发的VHDL语言恰好满足了上述这样的要求,并在1987年12月由IEEE标准化。它的出现为电子设计自动化(EDA)的普及和推广奠定了坚实的基础。由此,使用VHDL语言来设计数字系统是电子设计技术的大势所趋。 1 系统电路设计 系统由石英震荡器、分频部分、计数部分、显示部分、开始/停止使能和清零部分构成。分频器将晶振所提供的48 MHz信号分频成100 Hz时钟信号作为最低位计数器的计时信号,将六个计数器异步级联得到跑表时间数据,再经过数据选择器和显示译码器,以动态显示模式将显示译码器的段选信号分位输出给六个8段LED数码管显示,开始/停止使能可实现暂停/继续计时操作,清零部分完成系统的时间清零,为下次计时做准备。系统电路总体模块图如下。 2 各模块设计 2.1 分频器的设计 实验板提供了48 MHz的震荡信号,要求输出频率分别为1000 Hz和100 Hz。分频器的实现原理是基于计数器的方法设计的,通过对若干个震荡信号的计数来实现输出信号的翻转,故而实现了分频。 要得到100 Hz和1 Kz的方波,需要对48 MHz的晶振信号进行分频。要得到100 Hz的方波,需要480000分频,要实现480000分频,则输入源时钟信号clk每过480000/2即240000个上升沿,则对输出信号out100hz取反。同理,每经过24000个源时钟上升沿,对out1khz取反,得到1 KHz的信号。 2.2 计数器的设计 根据实验要求知,计数器由六个单极计数器级联实现,其中4个十进制计数器、2个六进制计数器。本实验方案采用同步级联实现。 本设计使用的是异步清零和同步使能,即当清零有效时,计数器立即清零,而当使能有效时,只有当时钟上升沿到来时,才进行暂停或开始计数的功能。使能输入即进位输入。首先先判断清零是否有效,当有效时,执行清零操作,count值为0。当清零无效时,并且使能有效是,进行计数。计数输出为四位二进制数countout。最后判断当计数值满并且使能有效时,进位输出有效。六进制计数器原理与十进制计数器类似。只是count_tmp值最大为“0101”。 2.3 使能控制的设计 使能控制是为了产生使能控制信号,在该控制信号作用下使输出发生翻转。使能输入(enable_in)每来一个上升沿,使能输出(enable_out)电平变化一次。即实现了每按一次按键,计数器在停止和开始计数之间切换。 2.4 显示控制的设计 显示控制模块应包含一个六进制计数器、六选一数据选择器和七段译码器。六进制计数器的时钟信号频率为1 kHz,计数输出作为位选控制信号sel(2:0)。数据选择器的地址控制信号为计数输出,数据选择器的数据端为要显示的六位数据mh(3:0),ml(3:0),sh(3:0),sl(3:0),ds(3:0),cs(3:0)。根据地址控制信号选择其中一路输出至译码器,译码器的输出作为段选控制信号led(6:0)。根据硬件电路,需设置一个译码使能信号G,G为低电平有效。 该模块里融合了一个六进制计数器,六选一数据选择器。通过分频器输出的1khz的时钟,控制六进制计数器计数(sel),使三位输出作为三八译码器的输入,从而控制8位数码管的位选以1khz进行扫描。又作为六选一数据选择器的地址选择输入,从而控制是哪一个数据作为六选一数据选择器的输出。这个输出经七段译码器后(led)作为数码管的段选。G端口为三八译码器的使能输出。 2.5 消抖模块的设计 消抖模块应能排除在按键按下电平不能稳定变化,出现纹波的情况下,对按键电平的识别。设计的思路是,当按键按下时,设计一个延时语句,当一段延时后,仍检测出按键为低电平,则认为按键按下,否则不判定为按键按下。本设使用计的按键消抖模块的思想为,当按键按下后,在所设定的一小段时间内,持续维持低电平,则判断为真正按下,输出(key_in)有效。 2.6 显示暂停模块 设计了一个门电路放在显示控制模块的段选输出和数码管之间,当门关闭时,数码管显示不变化,但计数器还在计数,当暂停后突然将门打开后,会将实际计数器的计数值送给数码管显示;门打开时则正常显示。这样,则实现了分别计数的扩展功能。设定的暂存模块很简单,就是在每个计数输出到显示控制输入之间加一个门。当开关按下后,门关闭,数码管显示暂停,但计数器仍在计数;当开关松开,计数器立即将当时时刻的计数值输送给数码管显示。 3 总结 经下载仿真后,从FPGA实验板的运行结果来看,该秒表实现了设计要求中包括所有扩展功能在内的全部功能,且显示时间稳定准确,按键灵敏度高。 参考文献 [1]于洋.面向教学的16位微处理器的FPGA设计与实现[D].江苏大学,2009.