基于VHDL语言的秒表综合设计
- 格式:doc
- 大小:332.50 KB
- 文档页数:30
内容1、总体设计要求具有启动停止功能;计时器能显示0.01s的时间;计时器最长计时时间为24h;具有复位功能在任何情况下按复位键秒表无条件清零;2、系统功能描述本次课程设计通过VHDL做的秒表主要有以下的功能:(1)在下载到实验箱后,打开开始开关才能开始计时;(2)在开始开关打开后,能够通过另一个开关进行暂停;(3)再按下清零键后能够清零,并且是在任何条件下都能清零;(4)能够精确到0.01秒,更加精确的计时3、系统设计方案论述,画出顶层电路图及功能分割图,并说明之间的联系或功能。
先是将100进制计数器、60进制计数器、60进制计数器和24进制计数器连接,将100进制计数器的进位接到60进制计数器的CLK输入端上,然后将60进制的进位连接到另一个60进制的CLK输入端上,然后将已将连接进位的60进制计数器的几位连接到24进制计数器的输入端口CLK上,24进制的仅为端悬空,这就是秒表的主体。
当100进制计数器进位端口为1时,与之相连的60进制计数器开始工作,当进位为0时停止工作,剩余两个计数器的工作原理与之相同。
将100进制计数器、两个60进制计数器和24进制计数器的en端口相连并连接到input得输入端口上,并且将他们的cir连接到一起也连接到input 的输入端口上,这样就实现了暂停和清零的功能,并且秒表的精确度为0.01。
在100进制的输入端口处还剩下一个clk端口,将两个输入端口通过一个与门与之相连,其中一个接入clk信号,而另一个就可当做一个开关,实现开始的功能,并且能够暂停。
将100进制计数器、两个60进制的计数器和24进制计数器的输出端分别接到8选1的数据选择器的输入端上,并且按高低位接好,而八进制的选择功能是通过一个8进制的不管计数来实现的,所以在8选1的数据选择器的sel 输入端端口接到8进制计数器的输出端上,而八进制的输入端口上,通过两个输入端input,一个接扫描频率,另一个通过一个开关来控制8进制的工作,并且清零端接1使它的清零作用失效。
案例一秒表一、案例说明1.功能描述(1).设计一块用数码管显示的秒表。
(2).能够准确地计时并显示。
(3).开机显示00.00.00。
(4).用户可随时清零、暂停、计时。
(5).最大计时59分钟,最小精确到0.01秒。
2.可选器件EPM7128S、共阴极七段数码管、发光二极管、按键开关、电阻、电容。
二、硬件电路结构图数字显示的秒表总体框图如图所示:图带数字显示的秒表总体框图三、软件设计Library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity watch isport(sel: out std_logic_vector(6 downto 1);seg: out std_logic; --开始、停止计数。
reset: in std_logic);end watch;architecture behave of watch issignal num1:std_logic_vector(3 downto 0);signal num2:std_logic_vector(3 downto 0);signal num3:std_logic_vector(3 downto 0);signal num4:std_logic_vector(3 downto 0);signal num5:std_logic_vector(3 downto 0);signal num6:std_logic_vector(3 downto 0);signal num:std_logic_vector(3 downto 0);signal numlet:std_logic_vector(2 downto 0);signal count:std_logic_vector(17 downto 1);signal selsig:std_logic_vector(6 downto 1);signal segsig:std_logic_vector(7 downto 0);signal cp1:std_logic;signal cp3:std_logic;beginprocess(cp2) --分频。
一、设计题目:基于VHDL语言的电子秒表设计(可调时,有闹钟、定时功能)二、设计目的:⑴掌握较复杂的逻辑设计和调试⑵学习用原理图+VHDL语言设计逻辑电路⑶学习数字电路模块层次设计⑷掌握QuartusII软件及Modelsim软件的使用方法三、设计内容:(一)设计要求1、具有以二十四小时计时、显示、整点报时、时间设置和闹钟的功能。
2、设计精度要求为1S。
(二).系统功能描述1 . 系统输入:系统状态及校时、定时转换的控制信号为k、set、ds;时钟信号clk,采用实验箱的50MHz;系统复位信号为reset。
输入信号均由按键产生。
系统输出:8位LED七段数码管显示输出,蜂鸣器声音信号输出。
多功能数字钟系统功能的具体描述如下:2. 计时:set=1,ds=1工作状态下,每日按24h计时制计时并显示,蜂鸣器无声,逢整点报时。
3. 校时:在set=0,ds=0状态下,按下“k键”,进入“小时”校准状态,之后按下“k键”则进入“分”校准状态,继续按下“k键”则进入“秒校准”状态,之后如此循环。
1)“小时”校准状态:在“小时”校准状态下,显示“小时”数码管以1Hz的频率递增计数。
2)“分”校准状态:在“分”校准状态下,显示“分”的数码管以1Hz的频率递增计数。
3)“秒”复零状态:在“秒复零”状态下,显示“分”的数码管以1Hz的频率递增计数。
4. 整点报时:蜂鸣器在“59”分钟的第50—59,以1秒为间隔分别发出1000Hz,500Hz的声音。
5. 显示:采用扫描显示方式驱动8个LED数码管显示小时、分、秒。
闹钟:闹钟定时时间到,蜂鸣器发出交替周期为1s的1000Hz、500Hz的声音,持续时间为一分钟;6. 闹钟定时设置:在set=0,ds=1状态下,按下“k”,进入闹钟的“时”设置状态,之后按下“k键”进入闹钟的“分”设置状态,继续按下“k 键”则进入“秒”设置状态, 之后如此循环。
1)闹钟“小时”设置状态:在闹钟“小时”设置状态下,显示“小时”的数码管以1Hz 的频率递增计数。
设计制作数码世界 P.108基于VHDL语言的电子秒表设计高皑琼 甘肃工业职业技术学院摘要:与其他硬件描述语言相比,VHDL语言抽象能力强,覆盖面广,具备更强的行为描述能力。
强大的行为描述能力是避开具体的器件结构,是设计大规模电子系统的重要保证。
EDA技术即电子设计自动化技术已经成为数字电子系统设计的主流。
本文在QuartusⅡ工作平上台,采用VHDL语言编程完成对电子秒表的行为描述,再经过EDA工具综合处理最终生成硬件系统,整个过程设计人员只需利用软件的方式就能完成对硬件电路的设计。
关键词;电子秒表 VHDL语言 EDA技术引言电子秒表在很多领域充当着重要的角色,尤其在各种比赛中对秒表的精度要求很高。
以往的电路多选用单元电路来实现,采用传统的“自底向上”设计方法,其设计主要依赖设计者的经验与技巧,这种方式设计成本高,效率低。
本设计采用EDA技术,以VHDL语言为系统逻辑描述,自动完成由软件描述系统到硬件电路的实现。
整个设计“自顶向下”完成功能模块的划分,各模块相对独立。
可以对各模块单独进行设计、调试和修改,极大地减少了设计人员的工作量,更提高了设计的灵活性和可靠性。
1 设计思路及模块划分1.1 设计思路秒表实际上是一个对标准脉冲信号(1HZ)进行计数的电路,能够精确反映计时时间。
在此过程中具备启动、暂停、复位等功能,使其真正具有实用功能。
秒表计时的最大范围为1小时,精度为0.01秒,当按下暂停按键后,由显示电路显示计时时间。
1.2 模块划分电子秒表的设计模块主要包括分频器、计数器电路、控制电路、报时电路和译码显示电路等。
其中,计时电路和控制电路是系统的主要部分,计时电路完成对秒脉冲信号的计数功能,而控制电路具有直接控制计数器的清零、启动计数、停止 3 种状态的功能。
(1)计数器模块主要完成对时钟信号的精确计时。
其实质是对有分频器输出的秒脉冲信号(频率为1HZ)进行计数,通过计数完成计时。
秒、分部分为60进制计数,即从0到59循环计数,计至59分59秒时归零。
实验:vhdl秒表设计报告一、实验目的:秒表的逻辑结构比较简单,它主要由、显示译码器、分频器、十进制计数器、六进制计数器组成。
秒表实现功能:计时范围60s。
可以用4个键(k0-k3)控制计数器实现清零,开始,暂停,结束功能。
清零键k0:当k0按下后,计数器清零,显示为0.开始键k1:k1按下后,开始计数暂停键k2:k2按下后,显示暂停,但计数器继续在行走。
结束键k3:k3按下后,计数器停止,显示最终的时间。
二、结构组成:1、一个十进制计数器:用来对秒时钟进行计数;2、一个六进制计数器:用来分别对十秒进行计数;3、分频率器:用来产生1hz的计数脉冲;4、状态控制器:对秒表各状态的控制。
设计为4个状态s1,s2,s3,s4.三、实验内容及步骤:1、用vhdl语言实现各小功能模块设计。
并仿真无误,生成模块符号。
2、设计顶层原理图文件。
3、综合编译并仿真,实现特定功能。
4、下载到硬件上,确保设计的正确。
四、实验源代码如下:1,分频器模块:功能:产生秒时钟。
原理图如下源代码vhdl语言如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity div isport(inclk:in std_logic;outclk:out std_logic:='0');end;architecture behave of div issignal temp:integer range 0 to 99999;signal internal:std_logic:='0';beginprocess(inclk)beginif inclk'event and inclk='1'thenif temp=10thentemp<=0;internal<=not internal;else temp<=temp+1;end if;outclk<=internal;end if;end process;end behave;2,十进制计数器模块原理图:十进制vhdl源码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 isport(clk,clr,en:in std_logic;q:buffer std_logic_vector(3 downto 0);c10:out std_logic);end;architecture behave of cnt10 isbeginprocess(clr,clk)beginif clr='0'then q<="0000";elsif clk'event and clk='1'thenif en='1'thenif q<9else q<="0000";end if;end if;end if;end process;process(q)beginif q="0000"then c10<='1';else c10<='0';end if;end process;end;3,六进制计数模块原理图源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt6 isport(clk,clr,en:in std_logic;q:buffer std_logic_vector(2 downto 0);c6:out std_logic);end;architecture behave of cnt6 isbeginprocess(clr,clk)beginif clr='0'then q<="000";elsif clk'event and clk='1'thenif en='1'thenif q<5else q<="000";end if;end if;end if;end process;process(q)beginif q="000"then c6<='1';else c6<='0';end if;end process;end;4,十进制锁存原理图:代码:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity suo isport(inp:in std_logic_vector(3 downto 0);suo:in std_logic;--stop:in std_logic;clr:in std_logic;outp:out std_logic_vector(3 downto 0)); end;architecture behave of suo issignal temp:std_logic_vector(3 downto 0);signal temp1:std_logic_vector(3 downto 0); beginprocess(suo)beginif suo'event and suo='0'then temp<=inp;end if;end process;process(inp,clr)beginif clr='0' then outp<="0000";elsif suo='1' then outp<=inp;else outp<=temp;end if;end process;end behave;5,六进制锁存原理图:Vhdl语言:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity suo6 isport(inp:in std_logic_vector(2 downto 0);suo:in std_logic;clr:in std_logic;clk:in std_logic;outp:out std_logic_vector(3 downto 0)); end;architecture behave of suo6 issignal temp:std_logic_vector(3 downto 0); beginprocess(suo)beginif suo'event and suo='0'then temp<='0'&inp; --temp1<=temp;end if;end process;process(clr,clk)beginif clr='0' then outp<="0000";elsif clk'event and clk='1'thenif suo='1' then outp<='0'&inp;else outp<=temp;end if;end if;end process;end behave;6,状态机控制器原理图:Vhdl语言:library ieee;use ieee.std_logic_1164.all;entity key isport(clk:in std_logic;k:in std_logic_vector(3 downto 0);suo:out std_logic;clr:out std_logic;--stop:out std_logic;en:out std_logic);--_vector(2 downto 0)); end;architecture behave of key istype statetype is (s0,s1,s2,s3);signal state:statetype:=s0;beginprocess(clk)beginif clk'event and clk='1'thencase state iswhen s0=> if k(1)='0'then state <=s1;else state <=s0;end if;when s1=> if k(0)='0'then state <=s0;elsif k(2)='0' then state <=s2;elsif k(3)='0' then state <=s3;else state <=s1;end if;when s2=> if k(1)='0'then state <=s1;elsif k(3)='0' then state <=s3;else state <=s2;end if;when s3=> if k(0)='0'then state <=s0;else state <=s3;end if;when others=>null;end case;end if;end process;process(clk)beginif clk'event and clk='1'thencase state iswhen s0=> en<='0'; suo<='0'; clr<='0';when s1=> en<='1'; suo<='1'; clr<='1';when s2=> en<='1'; suo<='0'; clr<='1';when s3=> en<='0'; suo<='1'; clr<='1';when others=> null;end case;end if;end process;end;五,顶层原理图文件:六,仿真结果结果分析:k0为0时,清零初始化。
数字秒表设计系别:电子通信工程系专业:电子信息工程班级:学号:姓名:数字秒表(基于verilong语言编程)课程设计一、设计要求用verilong语言编写程序,结合实际电路,设计一个4位LED数码显示“秒表”,显示时间为99.9~00.0秒,每秒自动减一,精度为0.1。
另设计一个“开始”按键和一个“复位”按键。
再增加一个“暂停”按键。
按键说明:按“开始”按键,开始计数,数码管显示从99.9开始每秒自动减一;按“复位”按键,系统复位,数码管显示99.9;按“暂停”按键,系统暂停计数,数码管显示当时的计数。
二、设计目的1、通过本次课程设计加深对verilong语言课程的全面认识、复习和掌握,对EPM7064芯片的应用达到进一步的了解。
2、掌握定时器、外部中断的设置和编程原理。
3、通过此次课程设计能够将软硬件结合起来,对程序进行编辑,调试。
使其能够通过电脑下载到芯片,正常工作。
4、实际操作Quartus II软件,复习巩固以前所学知识。
三、总体设计本秒表系统具有复位、暂停、秒表计时等功能。
clk为系统工作时钟,采用Altera DE2上的50M时钟信号,经过分频器产生秒表计时周期为0.01s的时钟,再经过计数器,分别对秒表的百分位、十分位、秒、秒十位、分、分十位进行计数。
onoff为启动/暂停控制信号,当它为0时,启动计时,当它为1时,计时暂停。
clr为复位信号,当该信号有效时,计数器和译码清零,此时数码管显示输出为00:00:00。
在总体电路图中,根据设计要求,需要两个输入控制信号onoff和clr。
由于开发板上除了拨动开关就是瞬时的按键开关,且按键开关平时都呈高电平,按一下为低电平。
故在实际测试时采用了拨动开关SW0来控制秒表的启动/暂停,通过KEY0来控制秒表的清零。
四、设计思路描述该实验要求进行计时并在数码管上显示时间,通过相关软件Quartus II编译,利用JTAG 下载电路到核心芯片,驱动硬件工作。
VHDL语言课程设计-秒表设计一、设计实验目的:在MAX+plusII软件平台上,熟练运用VHDL语言,完成数字时钟设计的软件编程、编译、综合、仿真,使用EDA实验箱,实现数字秒表的硬件功能。
二、设计实验说明及要求:1、数字秒表主要由:分频器、扫描显示译码器、一百进制计数器、六十进制计数器(或十进制计数器与6进制计数器)、十二进制计数器(或二十四进制计数器)电路组成。
在整个秒表中最关键的是如何获得一个精确的100H Z计时脉冲,除此之外,数字秒表需有清零控制端,以及启动控制端、保持保持,以便数字时钟能随意停止及启动。
2、数字秒表显示由时(12或24进制任选)、分(60进制)、秒(60进制)、百分之一秒(一百进制)组成,利用扫描显示译码电路在八个数码管显示。
3、能够完成清零、启动、保持(可以使用键盘或拨码开关置数)功能。
4、时、分、秒、百分之一秒显示准确。
三、我的设计思路:1、四个十进制计数器:用来分别对百分之一秒、十分之秒、秒和分进行计数;2、两个6进制计数器:用来分别对十秒和十分进行计数;3、一个24进制计数器,用来对小时进行计数;3、分频率器:用来产生100Hz的计数脉冲;4、显示译码器:完成对显示译码的控制。
四、设计过程:1.分频器:由10MHz变为100Hz,10MHz的周期是10的(-7)次方,而100Hz 的周期是10的(-2)次方,而且方波是高低相间,只有高电平有效,所以100Hz 的周期需要取一半,即0.02秒,这样算出的分频倍数就是50000分频器代码:将10MHz脉冲变成100Hz程序:library ieee;use ieee.std_logic_1164.all;entity fenpin isport(clr,clk: in bit;q: buffer bit);end fenpin;architecture a of fenpin issignal counter:integer range 0 to 49999;beginprocess(clr,clk)beginif (clk='1' and clk'event) thenif clr='1' thencounter<=0;elsif counter=49999 thencounter<=0;q<= not q;elsecounter<=counter+1;end if;end if;end process;end a;分频器的仿真图:2.十进制计数器:原理为加法计数器,从0加到9,计到10个数时由cout进位程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity c10 isport(clr,start,clk: in bit;daout: out std_logic_vector(3 downto 0)); end c10;,architecture a of c10 issignal temp:std_logic_vector(3 downto 0); begindaout<=temp;process(clk,clr)beginif clr='1' thentemp<="0000";cout<='0';elsif (clk'event and clk='1') thenif start='1' thenif temp>="1001" thentemp<="0000";cout<='1';elsetemp<=temp+1;cout<='0';end if;end if;end process;end a;十进制计数器仿真图:3.六进制计数器:原理为加法计数器,从0 加到5计到第六个数时由cout进位。
是
rst 是系统复位信号标志,strt 是时钟clock模块是否继续计时的标志
否
否
(4)两个七段数码管的驱动
由秒表时钟运行产生的时间out_time,作为数据的输入,
高四位数字由led_b0显示,低四位数字由led_b1显示,
对系统时钟进行2^19倍分频,控制led_b0 和led_b1 的显示,以及对
out_time高四位和低四位的选择,输送到四位的数组reg_data
对reg_data进行译码,得到八位的字符组放在led_seg里
再对led_srck进行8分频,控制led_seg数据逐个赋给led_data
对系统时钟进行64倍的分频,输出移位信号led_srck,移位工作频率约为1M 对led_srck进行32倍分频,输出存储信号led_rck,
使能信号led_oe 始终有效
(5)按键去抖动设计
对按键信号使用两个D触发器进行延时2个时钟周期,达到去抖动的目的对按键信号进行三个时钟周期的延时,来辅助使按键在放开的时候有效
(2)复位之后进入停止计时状态,此时数码管显示秒
(4)第二次按下并松开start后计时停止(5)按下并松开select后,转换到显示分钟
(7)第三次按下并松开select后,转换到显示秒(8)由下图可以看出led_b0,led_b1的显示转换
2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。
设 计 报 告课程名称 _______ 设计题目_______ 指导老师_______ 学 生_______ 学 号 ___现代电子技术综合实验 数字式秒表设计与实现目录1 引言……..........................................................................................1.1课程设计的内容及要求..................................................................2 VHDL简介……..............................................................................2.1硬件描述语言——VHDL……......................................................2.1.1 VHDL语言的特点…….............................................................2.1.2 VHDL语言的设计流程…….....................................................3 秒表设计过程……............................................................................3.1原理框图……..................................................................................3.2设计思路模块化…..........................................................................3.3模块的功能简述……......................................................................3.3.1分频器….....................................................................................3.3.2计数器…….................................................................................3.3.3数据锁存器……..........................................................................3.3.4显示译码模块…..........................................................................3.3.5控制模块……..............................................................................3.3.6按键消抖模块……......................................................................3.3.7顶层文件……..............................................................................4 模块电路仿真……................................................................................4.1 分频器4.2计数器4.2.1 模6计数器4.2.2 模10计数器5 实验总结……..................................................................................... 5.1实验结论……...................................................................................5.2心得总结……...................................................................................6 参考文献……..........................................................................................7 附录(各模块源程序)…...........................................................................1.引言:在当今信息化社会中,集成电路和计算机应用得到高速发展,。
它在人们日常生活已必不可少,大多数电子产品多是由计算机电路组成。
本文目的就是基于计算机电路利用VHDL 语言设计出数字秒表。
秒表在很多领域充当了重要的角色,在不同的场合和条件下对于秒表的精度和功能是不同的,有些科学实验的要求甚至能达到纳秒级别。
1.1课题内容要求:本课题目标是掌握VHDL开发FPGA的一般流程,重点是电子秒表的设计。
该设计以VHDL作为硬件开发语言,以ISE作为软件开发平台,准确地实现了秒表计数、清零、暂停等功能,并使用ModelSim仿真软件对VHDL程序实现了电路仿真,完成了综合布局布线,最终将程序下载到芯片Spartan-3A,并通过板子上相应模块验证实验的正确性。
除此以外,利用课余时间学习数字频率计的硬件实现方法,即用MultiSim仿真等。
秒表设计的具体要求:计时范围是00’00’’00到59’59’’99。
有两个按钮开关start/stop和split/reset,控制秒表的启动、停止、分段和复位:秒表已经被复位的情况下,按下state/stop键,秒表开始计时。
在秒表正常运行的情况下,如果按下state/reset则秒表暂停计时;再次按下该键,秒表继续计时。
在秒表正常运行下,如果按下split/reset,显示停止在按键时的时间,但秒表仍然在计时;再次按下该键,秒表恢复正常显示。
在秒表暂停计时的情况下,按下split/reset,秒表复位归零。
2.VHDL简介:2.1 VHDL特点:(1)作为HDL的第一个国际标准,VHDL具有很强的可移植性。
(2)具有丰富的模拟仿真语句和库函数,随时可对设计进行仿真模拟,因而能将设计中的错误消除在电路系统装配之前,在设计早期就能检查设计系统功能的可行性,有很强的预测能力。
(3)VHDL有良好的可读性,接近高级语言,容易理解。
(4)系统设计与硬件结构无关,方便了工艺的转换,也不会因工艺变化而使描述过时。
(5)支持模块化设计,可将大规模设计项目分解成若干个小项目,还可以把已有的设计项目作为一个模块调用。
(6)对于用VHDL完成的一个确定设计,可以利用EDA工具进行逻辑综合和优化,并能自动地把VHDL描述转变成门电路级网表文件。
(7)设计灵活,修改方便,同时也便于设计结果的交流、保存和重用,产品开发速度快,成本低。
2.2 VHDL设计流程:(1文本编辑:用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。
(2)功能仿真:将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确。
(3)逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式。
(4)时序仿真:需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。
(5)器件编程:对使用的元件可以进行编程。
3.秒表设计:3.1 原理框图:3.2 设计模块化:由以上原理图可实现秒表设计的模块化,具体而言,可以分为6个模块:分频器:对晶体振荡器产生的时钟信号进行分频,产生时间基准信号。
计数器:对时间基准脉冲进行计数,完成计时功能。
注:其中包含了一个1kHz到100Hz的分频器,合并在一个模块里。
数据锁存器:锁存数据,使显示保持锁定。
控制器:控制计数器的运行、暂停以及复位;产生锁存器的是能信号。
扫描显示的控制电路:包括扫描计数器、和7段译码器;控制8个数码管以扫描方式显示计时结果。
按键消抖电路:消除按键输入信号抖动的影响,输出单脉冲。
每个模块调试后可通过顶层文件共同构成秒表的总电路。
3.3 模块的功能简述:3.3.1 分频器:秒表设计中共需要两种分频器。
一种是通过模为48000的计数器进位输出实现将晶体振荡器产生的48MHz的时钟信号转化为1KHz的时钟信号作为基准,方便下面各个模块的取用。
另一种是通过模为10的计数器进位输出将上述1KHz的时钟信号转化为100Hz 的时钟信号,作为计数器的时钟输入。
注:实际设计中,第二种分频器被划归到计数器模块,实现与原理图的匹配。
3.3.2 计数器:计数器功能是通过输入的时钟信号实现计数功能,在秒表设计里,共需要4个模10计数器和2个模6计数器。
具体而言,其中2个模10计数器和2个模6计数器分别级联产生2个模60计数器,实现了到秒和到分的进位。
而其他的两个模10计数器则是2位模10计数。
3.3.3 数据锁存器:它是一个控制端控制的组合逻辑电路,实现了暂时锁存数据的功能。
3.3.4 显示译码模块:显示译码管外联部分示意图:内部原理图:功能是:从锁存器接入数据,通过扫描计数的输出来控制多路复用的数据选择端口和三八译码器的输入端口,使其数据变化相同。
38译码器的输出进行位选,bcd的输出进行段选使其能在显示译码管显示完整数据。
注:本实验电路板使用共阳极,即低电平有效。
3.3.5 控制模块:功能是产生实现秒表的暂停or开始,锁存or清零功能。
具体而言产生三个输出控制信号:清零,计数,锁存。
实现方法:Mealy机或者是Moore机方式,区别是有一个状态的不同。
实现原理图:3.3.6 按键消抖模块:功能是消除按键输入信号的影响,输出单脉冲。
方便实现两个按键对秒表的瞬时控制。
3.3.7 顶层文件:实现各个模块之间的连接匹配,同时分配实际电路板的引脚。
4. 模块电路仿真:4.1 分频器:4.2 计数器:4.2.1 模6计数器:4.2.2 模10计数器:5. 实验总结:5.1 实验结果:经过测试,可以由FPGA板上的key-7,key-8控制秒表实现开始暂停锁存清零的相应功能,其它功能基本符合要求。