EDA数字秒表设计
- 格式:doc
- 大小:128.50 KB
- 文档页数:18
课程设计任务书学生姓名:专业班级:电子科学与技术电子00901班指导教师:工作单位:武汉理工大学信息工程学院题目: 数字秒表一、设计目的①根据设计要求,完成对数字秒表的设计。
②进一步加强对QuartusⅡ的应用和对VHDL语言的使用。
二、设计内容和要求①计时精度应大于1/100S,计时器能显示1/100S的时间,提供给计时器内部定时的时钟频率应大于100Hz,这里选用1KHz。
②计时器的最大计时时间为1小时,为此需要6位的显示器,显示的最长时间为59分59.99秒。
③设置有复位和起/停开关,复位开关用来使计数器清零,做好计时准备。
起停开关的使用方法与传统的机械式计数器相同,即按一下,启动计时器开始计时,再按一下计时终止。
三、初始条件CPLD,按键,时钟信号等。
四、时间安排:EDA课程设计布置工作 6.11设计 6.12~6.15硬件调试 6.17~6.19撰写设计报告 6.20~6.21检查硬件、答辩、提交设计报告 6.22指导教师签名:年月日系主任(或责任教师)签名年月日目录摘要 (I)Abstract (II)绪论............................................................................................................................ I II 一系统设计方案. (1)二底层模块设计 (2)2.1 计时电路 (2)2.1.1 时基分频器 (2)2.1.2 100进制计数器 (2)2.1.3 60进制计数器 (3)2.2 计时控制电路 (3)2.3 显示电路 (4)2.3.1 七段译码器 (4)2.3.2 扫描模块 (4)三顶层原理图 (5)四系统仿真 (6)4.1计时电路的仿真 (6)4.2计时控制电路的仿真 (7)4.3 显示电路的仿真 (8)五器件编程与硬件下载 (9)六心得体会 (10)七参考文献 (11)附录 (12)摘要随着人们生活水平的日益提高,社会体系的日益完善,人们对于各种应用器件的要求也越来越高。
目录1 绪论 ....................................................................... 1 .2 设计要求 ................................................................... 2 .3 总体设计要求 ............................................................... 2 .3.1 基本原理.............................................................. 2 .3.2 分频器模块............................................................ 3 .3.3 计数模块.............................................................. 4 .3.4 记录模块.............................................................. 6 .3.5 寄存器模块............................................................ 7 .3.6 回放模块.............................................................. 8 .3.7 选择模块.............................................................. 9 .3.8 数显模块............................................................. 1..13.9 数字秒表的总原理图................................................... 1..34 仿真调试 .................................................................. 1..44.1 分频器模块的仿真调试................................................. 1 (4)4.2 计数器模块的仿真调试................................................. 1 (4)4.3 记录模块的仿真调试................................................... 1..54.4 寄存器模块的仿真..................................................... 1 (5)4.5 回放模块的仿真调试................................................... 1..64.6 选择模块的仿真调试................................................... 1..65 管脚分配 .................................................................. 1..66 总结与心得体会 ............................................................ 1..7参考文献..................................................................... 1 (8)附录:源程序代码............................................................. 1..9 1绪论EDA是电子设计自动化(Electronic Design Automation )的缩写,在20世纪 60年代中期从计算机辅助设计(CAD )、计算机辅助制造(CAM )、计算机辅助测试(CAT)和计算机辅助工程(CAE、的概念发展而来的。
基于EDA的数字秒表课程设计一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握数字秒表的基本原理;2. 学生能描述数字秒表的电路结构,了解各个部分的功能和相互关系;3. 学生能掌握数字秒表设计中所涉及的数字逻辑,如计时、清零、启动/停止等功能的实现。
技能目标:1. 学生能够运用所学知识,使用EDA工具进行数字秒表的电路设计和仿真;2. 学生能够分析并解决数字秒表设计过程中遇到的问题,提高实际操作能力;3. 学生能够通过小组合作,完成数字秒表的调试与优化,提高团队协作能力。
情感态度价值观目标:1. 学生通过本课程的学习,培养对电子设计的兴趣和热情,提高探究精神;2. 学生能够认识到科技发展对日常生活的影响,增强社会责任感和创新意识;3. 学生在小组合作中学会尊重他人意见,培养良好的沟通能力和团队精神。
分析课程性质、学生特点和教学要求,本课程目标将分解为以下具体学习成果:1. 学生能够独立完成数字秒表的电路设计和仿真;2. 学生能够通过小组合作,完成数字秒表的调试与优化,并撰写实验报告;3. 学生能够对课程中所学知识进行总结,以口头或书面的形式进行分享。
二、教学内容本课程教学内容依据课程目标,紧密结合教材,制定以下详细教学大纲:1. 数字电路基础知识回顾- 复习数字逻辑基础,强调触发器、计数器等基本组件的工作原理。
2. EDA工具介绍- 介绍EDA软件的使用方法,如Multisim、Proteus等。
3. 数字秒表的原理与设计- 讲解数字秒表的电路结构,分析各部分功能;- 引导学生理解秒表的计时原理,探讨如何实现启动、停止、清零等功能。
4. 电路设计与仿真- 指导学生使用EDA工具进行数字秒表的电路设计;- 教学过程中,针对设计过程中可能遇到的问题进行讲解和指导。
5. 小组合作调试与优化- 学生分组进行电路调试,优化设计;- 引导学生学会分析问题、解决问题,提高实际操作能力。
EDA原理及应用实验报告题目:多功能数字秒表专业:电子信息工程班级:姓名:学号:一、设计题目:多功能数字秒表二、设计目标:1.精确到1/100秒2.留个数码管显示范围0.01——59.59.99S3.有复位端,使能端4.当时间到达设置的时间时,蜂鸣器报警,按下按键可消除声音,但继续计时。
三、设计原理:(含系统总的原理图)由三个分频器模块,六个计数器模块,一个扫描数码管模块,和一个蜂鸣器报警模块连接而成。
四、设计内容:(含状态转换图、软件流程图、说明文字等,每单独模块的图标和VHDL程序;最后为总体程序框图)(1)分频器模块1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF ISPORT(CLK:IN STD_LOGIC;--D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);FOUT:OUT STD_LOGIC);END;ARCHITECTURE one OF DVF ISSIGNAL FULL:STD_LOGIC;BEGINP_REG:PROCESS(CLK)V ARIABLE CNT8:INTEGER RANGE 48000000 DOWNTO 0; BEGINIF CLK'EVENT AND CLK='1' THENIF CNT8=240000 THENCNT8:=0;FULL<='1';ELSE CNT8:=CNT8+1;FULL<='0';END IF;END IF;END PROCESS P_REG;P_DIV:PROCESS(FULL)V ARIABLE CNT2:STD_LOGIC;BEGINIF FULL'EVENT AND FULL='1' THENCNT2:=NOT CNT2;IF CNT2='1' THEN FOUT<='1';ELSE FOUT<='0';END IF;END IF;END PROCESS P_DIV;END;RTL状态图说明:采用的是48M时钟输入,作为0.01S最低位的时钟信号。
课程设计目录第一章:系统设计要求 (3)第二章:实验目的 (3)第三章:实验原理 (3)第四章:系统设计方案 (3)第五章:主要VHDL源程序 (4)1) 十进制计数器的VHDL源程序 (4)2) 六进制计数器的VHDL源程序 (5)3)蜂鸣器的VHDL源程序 (5)4)译码器的VHDL源程序 (6)5)控制选择器的VHDL源程序 (7)6)元原件例化的VHDL源程序 (8)第六章:系统仿真 (10)第七章:系统扩展思路 (11)第八章:设计心得总结 (11)数字秒表的设计一、系统设计要求1.秒表共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便于和显示译码器的连接。
当计时达60分钟后,蜂鸣器鸣响10声。
2.整个秒表还需有一个启动信号和一个归零信号,以便秒表能随意停止及启动。
3.秒表的逻辑结构较简单,它主要由显示译码器、分频器、十进制计数器、六进制计数器和报警器组成。
在整个秒表中最关键的是如何获得一个精确的100HZ计时脉冲。
二、实验目的通过本次课设,加深对EDA技术设计的理解,学会用QuartusⅡ工具软件设计基本电路,熟练掌握VHDL语言,为以后工作使用打下坚实的基础。
三、实验原理秒表由于其计时精确,分辨率高(0.01秒),在各种竞技场所得到了广泛的应用。
秒表的工作原理与数字时基本相同,唯一不同的是秒表的计时时钟信号,由于其分辨率为0.01秒,所以整个秒表的工作时钟是在100Hz的时钟信号下完成。
当秒表的计时小于1个小时时,显示的格式是mm-ss-xx(mm表示分钟:0~59;ss表示秒:0~59;xx表示百分之一秒:0~99),当秒表的计时大于或等于一个小时时,显示的和多功能时钟是一样的,就是hh-mm-ss(hh表示小时:0~99),由于秒表的功能和钟表有所不同,所以秒表的hh表示的范围不是0~23,而是0~99,这也是和多功能时钟不一样的地方。
EDA多功能秒表课程设计一、课程目标知识目标:1. 学生能理解EDA多功能秒表的基本原理和功能。
2. 学生能掌握秒表的计时、计次和闹钟等功能操作。
3. 学生了解秒表在日常生活和运动竞赛中的应用。
技能目标:1. 学生能运用所学知识,独立操作多功能秒表,进行计时和计次。
2. 学生能通过分析秒表数据,提高解决问题的能力。
3. 学生能运用秒表进行简单的运动计时和数据分析。
情感态度价值观目标:1. 学生培养对电子产品的兴趣,激发学习电子技术知识的热情。
2. 学生在团队协作中,培养合作精神和沟通能力。
3. 学生通过运用秒表进行运动计时,培养公平竞争和尊重规则的意识。
课程性质:本课程为实践性较强的电子技术课程,结合多功能秒表的实用功能,使学生掌握基本操作和运用。
学生特点:学生处于好奇心强、动手能力逐渐增强的阶段,对新鲜事物充满兴趣,善于合作与分享。
教学要求:教师需引导学生主动参与,注重实践操作,培养学生动手能力和解决问题的能力。
在教学过程中,关注学生的情感态度,激发学生的学习兴趣,提高学生的综合素质。
通过本课程的学习,使学生将所学知识应用于实际生活,达到学以致用的目的。
二、教学内容本章节教学内容主要包括以下几部分:1. 多功能秒表的原理与结构:介绍秒表的电子元件、工作原理和整体结构,使学生了解秒表的内部构造和功能实现方式。
教材章节:第一章 电子元件与电路基础2. 多功能秒表的操作与使用:详细讲解秒表的计时、计次、闹钟等功能操作,以及如何进行复位、设置等操作。
教材章节:第二章 数字电路与计时器3. 秒表在运动计时中的应用:通过实例分析,使学生了解秒表在运动竞赛中的实际应用,如田径、游泳等项目的计时。
教材章节:第三章 计时器在体育运动中的应用4. 秒表数据的分析与处理:教授学生如何分析秒表数据,进行简单的数据处理,提高学生解决问题的能力。
教材章节:第四章 数据分析与处理5. 实践操作:安排学生进行实际操作,如使用秒表进行计时、计次,分析数据等,巩固所学知识。
EDA数字秒表的设计第一篇:EDA数字秒表的设计设计报告——数字秒表的设计EDA 一设计目的1.根据设计要求,完成对数字秒表的设计。
2.进一步加强对QuartusⅡ的应用和对Verilog HDL语言的使用。
二设计内容和要求1.计时精度应大于1/100S,计时器能显示1/100S的时间,提供给计时器内部定时的时钟频率应大于100Hz,这里选用KHz。
2.计时器的最大计时时间为1小时,为此需要6位的显示器,显示的最长时间为59分59.99秒。
3.设置有复位和起/停开关,复位开关用来使计数器清零,做好计时准备。
起停开关的使用方法与传统的机械式计数器相同,即按一下,启动计时器开始计时,再按一下计时终止。
三系统设计方案自顶向下的设计自顶向下的设计方法是数字系统设计中最常用的设计方法.也是基于芯片的系统设计的主要方法。
自顶向下的设计方法利用功能分割手段将设计由上到下进行层次话和模块化,及分层次、分模块进行设计和仿真。
功能分割时,将系统功能分解为功能块,功能块再分解为逻辑块,逻辑块再分解为更少的逻辑块和电路。
如此分割,逐步的将系统细化,将功能逐步的具体化,模块化。
高层次设计进行功能和接口描述,说明模块的功能和接口,模块功能的更详细描述在下一设计层次说明,最底层的设计才涉及具体寄存器和逻辑门电路等实现方式的描述。
四模块设计1.分频模块将输入1KHZ的系统时钟经过十分频分为100HZ的单位时钟。
编程原理跟计数器原理相似。
2.定时模块采用2个60进制、1个100进制的BCD码全加器作为定时器,分为分,秒,百分秒,输入时钟信号为分频器输出信号100HZ时钟,外界两个拨码开关作为清零按钮和暂停按钮。
3.位选发生器:根据显示的数据位和人眼暂留效应,设计显示分为分、秒、百分秒位,每位需要2个数码管进行显示,因此变化频率至少为300HZ,为了方便则采用1KHZ,循环码则从000循环到101。
4.多路选择器根据位选信号,输出对应位显示的数据。
EDA数字秒表设计简介本文将介绍一种简单的电路设计,用于制作数字秒表,适用于DIY爱好者和学生电子实验。
设计原理本设计采用基于集成电路(IC)CD4060的计数器电路和LCD显示屏。
CD4060是一个14位二进制同步计数器,可用于产生高精度的时序脉冲和面板控制信号。
CD4060的时钟输入(CP)和“复位”信号(MR)与外部电路相连。
每当CP接收到一个正脉冲时,CD4060的计数器将向前推进一位,这将导致计数器的输出(Q0-Q14)被更新。
本设计使用的第一个输出为Q4,该输出是CD4060的第四位计数器,它每过0.5秒发出一个脉冲。
因此,在Q4处建立一个电路,可以生成一秒的定时信号。
在LCD显示屏上,可以显示出经过的秒数和分钟数。
CD4060的每个输出都可以与NPN晶体管相连,以控制LCD段的亮度和显示。
设计步骤第一步:制作CD4060计数器电路将CD4060芯片插入面包板中,按照图示连接芯片的引脚。
将一个电解电容用于CD4060的电源滤波,以保持电源电压的稳定性。
CD4060计数器电路图CD4060计数器电路图第二步:电路调试使用万用表检查CD4060计数器电路的各个部分是否按照预期连接。
在电路窗口中添加一个电位器,以调整LCD屏幕的反光度。
第三步:制作LCD显示屏电路将液晶显示屏插入面包板,并将它与CD4060的输出连接。
通过适当调整NPN 晶体管的电压来设置亮度和清晰度。
第四步:完善电路根据需要设计一个适当的外壳,以保护电路和LCD显示屏。
总结通过这个简单的电路设计,我们可以制作出一个自制的数字秒表,用于计算时间间隔。
该设计使用集成电路CD4060和LCD显示屏,具有易于调试和安装的优点。
通过对电路的完善和优化,可以实现更精确的计时功能。
电子课程设计—数字秒表的设计数字秒表的设计数字秒表的设计一、设计任务与要求1、数字秒表的计时范围是0秒~59分59.99秒,显示的最长时间为59分59秒。
秒。
2 2、数字秒表的计时精度是、数字秒表的计时精度是10ms 10ms。
3 3、、复位开关可以在任何情况下使用,复位开关可以在任何情况下使用,即便在计时过程中,即便在计时过程中,即便在计时过程中,只要按一下复位只要按一下复位开关,计时器就清零,并做好下次计时的准备。
开关,计时器就清零,并做好下次计时的准备。
4 4、、具有启具有启//停开关,停开关,即按一下启即按一下启即按一下启//停开关,停开关,启动计时器开始计时,启动计时器开始计时,启动计时器开始计时,再按一下再按一下启/停开关则停止计时。
停开关则停止计时。
二、总体框图由频率信号输出端输出频率为100HZ 的时钟信号,输入到微妙模块的时钟端clk ,高/低电平电平频率信号输入输入微妙模块微妙模块秒模块秒模块分模块分模块置数/位选位选显示模块显示模块进位进位微妙模块为100进制的计数器,产生的进位信号co 输入到下一级秒模块的时钟端,以此类推,直到分模块计数到59进60时,产生的进位信号不输出,计数清零。
将微妙、秒、分产生的计数通过置数/位选再通过显示模块实时显示。
设计方案:利用一块芯片完成除时钟源,利用一块芯片完成除时钟源,按键和显示器之外的所有数字电路功按键和显示器之外的所有数字电路功能。
所有数字逻辑功能都在CPLD 器件上用VHDL 语言实现。
这样设计具有体积小,设计周期短,调试方便,故障率地和修改升级容易等特点,本设计采用自顶向下,混合输入方式(原理图输入——顶层文件链接和VHDL 语言输入——各模块程序设计)实现数字秒表的设计,下载和调试。
三、功能模块1.1. 微秒模块微秒模块采用VHDL 语言输入方式,以时钟clk clk,清零信号,清零信号clr 以及暂停信号STOP 为进程敏感变量,程序如下:为进程敏感变量,程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity MINSECONDb isport(clk,clrm,stop:in std_logic;----时钟时钟//清零信号清零信号secm1,secm0:out std_logic_vector(3 downto 0);----秒高位秒高位//低位co:out std_logic);------- co:out std_logic);-------输出输出输出//进位信号进位信号 end MINSECONDb;architecture SEC of MINSECONDb is signal clk1,DOUT2:std_logic;beginprocess(clk,clrm)variable cnt1,cnt0:std_logic_vector(3 downto 0);---计数计数 VARIABLE COUNT2 :INTEGER RANGE 0 TO 10 beginIF CLK'EVENT AND CLK='1'THENIF COUNT2>=0 AND COUNT2<10 THEN COUNT2:=COUNT2+1; ELSE COUNT2:=0;DOUT2<= NOT DOUT2; END IF; END IF;if clrm='1' then----if clrm='1' then----当当clr 为1时,高低位均为0cnt1:="0000"; cnt0:="0000";elsif clk'event and clk='1' then if stop='1' then cnt0:=cnt0; cnt1:=cnt1; end if;if cnt1="1001" and cnt0="1000" ;then----then----当记数为当记数为9898(实际是经过(实际是经过59个记时脉冲)个记时脉冲) co<='1';----co<='1';----进位进位进位cnt0:="1001";----cnt0:="1001";----低位为低位为9elsif cnt0<"1001" then----elsif cnt0<"1001" then----小于小于9时 cnt0:=cnt0+1;----cnt0:=cnt0+1;----计数计数计数 --elsif cnt0="1001" then --clk1<=not clk1;elsecnt0:="0000";if cnt1<"1001" then----if cnt1<"1001" then----高位小于高位小于9时 cnt1:=cnt1+1; elsecnt1:="0000"; co<='0'; end if; end if; end if;secm1<=cnt1; secm0<=cnt0;end process; end SEC;程序生成器件如图:clk clrm stopsecm1[3..0]secm0[3..0]coMINSECONDbinst3微妙模块生成的器件可以实现带有100进制进位和清零功能,暂停等功能,MINSECONDb 输入为100HZ 脉冲和低电平的清零信号CLR 与暂停信号STOP STOP,输出,输出微妙个位、十位及进位信号CO CO。
郑州航空工业管理学院EDA课程设计报告题目: 秒表指导教师:姓名学号EDA课程设计报告一、设计任务秒表设计基本功能:1、四位数码管显示秒表,计时范围:00-00至59-99,前两位单位是秒。
2、有一个开始计时、一个停止计时、一个复位按键。
其他要求:1.晶振为12 MHz2. 采用CPLD 器件为ALTERA 的EPM7064SL-443.采用数码管显示二、设计方案基于CPLD的数字秒表设计,应用Verilog 语言编写源程序,用QuartusⅡ对程序编译、仿真。
最终下载至已焊接组合好的电路中应用。
实物元件清单:印制电路板一块电阻(1KΩ的4个,10KΩ的7个,220Ω的11个)三极管4个芯片ALTERA 的EPM7064SL-44基对应插槽1对按键3个数码管(共阴极)1个晶振1个下载线,电源线若干电路原理图:核心控制部分:功率放大显示部分:电路工作原理:印制板电路主要分为两部分,即核心控制部分和数码显示部分。
通过QuartusⅡ软件将源程序下载至电路芯片中,接通电源,由晶振提供震源,在数码显示部分(功率放大部分)显示数字秒表,通过三个按键来控制秒表显示状态。
三、设计程序系统总体框图数字秒表主要有分频器、计数模块、功能控制模块、势能控制模块和显示输出模块组成。
系统框图下图所示(只显示程序部分)。
各部分源程序及说明 (一)分频模块设计所用晶振提供12MHz 的震源,通过分频将其转化为要求的100Hz ,程序如下:module int_div(clock,clk_out);//I/O 口声明 input clock;//输入时钟 output clk_out;//输出时钟//内部寄存器 reg clk_p_r; //上升沿输出时钟 reg clk_n_r;//下降沿输出时钟reg[F_DIV_WIDTH - 1:0] count_p; //上升沿脉冲计数器reg[F_DIV_WIDTH - 1:0] count_n; //下降沿脉冲计数器//参数--分频系数parameter F_DIV = 120000; //分频系数<<<<-----修改这里parameter F_DIV_WIDTH = 32; //分频计数器宽度wire full_div_p; //上升沿计数满标志wire half_div_p; //上升沿计数半满标志wire full_div_n; //下降沿计数满标志wire half_div_n; //下降沿计数半满标志//判断计数标志位置位与否assign full_div_p = (count_p < F_DIV - 1);assign half_div_p = (count_p < (F_DIV>>1) - 1);assign full_div_n = (count_n < F_DIV - 1);assign half_div_n = (count_n < (F_DIV>>1) - 1);//时钟输出assign clk_out = (F_DIV == 1) ?clock : (F_DIV[0] ? (clk_p_r & clk_n_r) : clk_p_r);//上升沿脉冲计数always @(posedge clock)beginif(full_div_p)begincount_p <= count_p + 1'b1;if(half_div_p)clk_p_r <= 1'b0;elseclk_p_r <= 1'b1;endelsebegincount_p <= 0;clk_p_r <= 1'b0;endend//下降沿脉冲计数always @(negedge clock)beginif(full_div_n)begincount_n <= count_n + 1'b1;if(half_div_n)clk_n_r <= 1'b0;elseclk_n_r <= 1'b1;endelsebegincount_n <= 0;clk_n_r <= 1'b0;endendendmodule(二)计数模块计数模块中,时钟信号是100 Hz作为秒表的百分秒输入,百分秒为100进制计数器,其进位输出作为秒的计数时钟,秒为60进制计数器。
电子设计自动化大作业题目数字秒表设计学院控制科学与工程学院班级自动化0803姓名学号二OO一一年五月十二日题目:数字秒表的设计一、设计要求:(1)数字秒表的计时精度是10ms;(2)复位开关可以在任何情况下使用,计时在计时过程中,只要按一下复位开关,计时器就清零,并做好下次计时的准备;(3)具有启/停开关,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关则停止计时。
(4)数字秒表的计时范围是0秒~59分59.99秒,显示的最长时间为59分59秒二、总体设计:1、总体结构图2、各模块功能1)S EL模块:将扫描信号输给选择(CHOICE)模块2)选择模块:按扫描信号的指定选择输出3)3-8译码模块:通过SEL给的信号来控制8位数码管位的亮灭4)计时模块:分别对毫秒,秒,分计时5)显示模块:通过CHOICE模块的输出信号来控制三、单元模块设计1、模块名:sel模块设计(1)模块功能: CLK为扫描时钟脉冲,SELOUT端不停的发出扫描到的信号(2)端口定义: CLK为信号输入端SELOUT[2..0]为选择到的信号输出(3)VHDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sel isport(clk: in std_logic;selout: out std_logic_vector(2 downto 0));end sel;architecture one of sel issignal count: std_logic_vector(2 downto 0);beginprocess(clk)beginif clk'event and clk='1' thenif (count="101") thencount<="000";elsecount<=count+1;end if;end if;end process;selout<=count;end one;(4)仿真结果说明:来一个上升沿,SELOUT的值增1,可以证明模块是正确的。
2、模块名:选择模块设计(1)模块功能:按扫描信号的指定选择输出(2)端口定义: a,b,c为控制信号;data1[3..0], data2[3..0], data3[3..0], data4[3..0],data5[3..0], data6[3..0]分别是毫秒的低位,毫秒的高位,秒的低位,秒的高位,分的低位,分的高位的数据值; ch_out[3..0]为选择输出端。
(3)VHDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity choice isport(a,b,c:in std_logic;data1,data2,data3,data4,data5,data6:in std_logic_vector(3 downto 0);ch_out:out std_logic_vector( 3 downto 0));end choice;architecture behave of choice issignal ch:std_logic_vector(2 downto 0);beginch(2)<=c;ch(1)<=b;ch(0)<=a;process(ch)begincase ch iswhen"000"=>ch_out<=data1;when"001"=>ch_out<=data2;when"010"=>ch_out<=data3;when"011"=>ch_out<=data4;when"100"=>ch_out<=data5;when"101"=>ch_out<=data6;when others=> null;end case;end process;end behave;(4)仿真结果说明:abc的值递增,ch_out选择输出data1,data2,data3,data4,data5,data6的值,证明模块是正确的3、模块名:3-8译码模块设计(1)模块功能:通过SEL给的信号来控制8位数码管位的亮灭。
(2)端口定义:输入端SEL[2..0]值大小来选择输出Q的值输出端Q[7..0]来控制灯哪位亮(3)VHDL源程序LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY decode3_8 ISPORT(SEL: IN std_logic_vector(2 downto 0);Q : OUT std_logic_vector(7 downto 0));END decode3_8;ARCHITECTURE a OF decode3_8 ISBEGINQ <= "11111110" when sel = 0 else"11111101" when sel = 1 else"11111011" when sel = 2 else"11110111" when sel = 3 else"11101111" when sel = 4 else"11011111" when sel = 5 else"11111111";END a;(4)仿真结果说明:Sel的值递增,Q的相应位会亮,证明模块是正确的。
4.1模块名:毫秒计时模块设计(1)模块功能:对毫秒位的计数(2)端口定义: clk为信号时钟输入端reset为复位端pause为暂停端co为进位信号输出端qh:毫秒信号的高位输出端ql: 毫秒信号的低位输出端(3)VHDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity m100 isport(clk:in std_logic;reset:in std_logic;pause:in std_logic;co:out std_logic;qh:buffer std_logic_vector(3 downto 0);ql:buffer std_logic_vector(3 downto 0));end m100;architecture behave of m100 isbeginco<='1' when (qh="1001" and ql="1001") else '0';process(clk,reset,pause)beginif(reset='0') thenqh<="0000";ql<="0000";elsif(pause='0')thenqh<=qh;ql<=ql;elsif (clk'event and clk='1') thenif (ql="1001") thenql<="0000";i f (qh="1001") thenq h<="0000";else qh<=qh+1;e nd if;else ql<=ql+1;end if;end if;end process;end behave;(4)仿真结果说明:毫秒为100进制,高位和地位都是10进制,高位到10会有进位,可以证明模块的正确性4.2模块名:秒计时模块设计(1)模块功能:对毫秒位的计数(2)端口定义: clk为信号时钟输入端reset为复位端pause为暂停端co为进位信号输出端qh:毫秒信号的高位输出端ql: 毫秒信号的低位输出端(3)VHDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity m60_sec isport(reset:in std_logic;pause:in std_logic;ci:in std_logic;co:out std_logic;qh:buffer std_logic_vector(3 downto 0);ql:buffer std_logic_vector(3 downto 0));end m60_sec;architecture behave of m60_sec isbeginco<='1' when (qh="0101" and ql="1001" and ci='1') else '0';process(reset,pause,ci)beginif(reset='0') thenqh<="0000";ql<="0000";elsif(pause='0')thenqh<=qh;ql<=ql;elsif (ci'event and ci='1') thenif (ql="1001") thenql<="0000";if (qh="0101") thenqh<="0000";else qh<=qh+1;end if;else ql<=ql+1;end if;end if;end process;end behave;(4)仿真结果说明:秒进制为60进制,高位到6会有进位,低位为10进制,可以证明模块的正确性4.3模块名:分计时模块设计(1)模块功能:对毫秒位的计数(2)端口定义: clk为信号时钟输入端reset为复位端pause为暂停端co为进位信号输出端qh:毫秒信号的高位输出端ql: 毫秒信号的低位输出端(3)VHDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity m60_min isport(reset:in std_logic;pause:in std_logic;ci:in std_logic;qh:buffer std_logic_vector(3 downto 0);ql:buffer std_logic_vector(3 downto 0));end m60_min;architecture behave of m60_min isbeginprocess(reset,pause,ci)beginif(reset='0') thenqh<="0000";ql<="0000";elsif(pause='0')thenqh<=qh;ql<=ql;elsif (ci'event and ci='1') thenif (ql="1001") thenql<="0000";if (qh="0101") thenqh<="0000";else qh<=qh+1;end if;else ql<=ql+1;end if;end if;end process;end behave;(4)仿真结果说明:高位为6进制,低位为10进制,ci为脉冲信号,当ql=9的时候,qh在下一时刻会增1,可以证明模块的正确性5、模块名:显示模块设计(1)模块功能:通过CHOICE模块的输出信号来控制(2)端口定义: adr是选择模块结果的输入端q_show是控制数码管段亮的输出端(3)VHDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity BCD_7 isport(adr:in std_logic_vector(3 downto 0);q_show:out std_logic_vector(6 downto 0));end BCD_7;architecture behave of BCD_7 isbeginprocess(adr)begincase adr iswhen "0000"=>q_show<="1111110";when "0001"=>q_show<="0110000";when "0010"=>q_show<="1101101";when "0011"=>q_show<="1111001";when "0100"=>q_show<="0110011";when "0101"=>q_show<="1011011";when "0110"=>q_show<="1011111";when "0111"=>q_show<="1110000";when "1000"=>q_show<="1111111";when "1001"=>q_show<="1111011";when others=>null;end case;end process;end behave;(4)仿真结果说明:随着adr的值增加,q_show输出相应的值,数码管相应的段会亮,证明模块是正确的四、数字秒表整体组装1、顶层原理图1.工作情况输入信号经过分频器输给计时模块,计时模块的各位输给选择(CHOICE)模块,选择模块选择输出,再经过转码(BCD_7)模块控制数码管段的亮灭;输入信号的另一路经过分频器给扫描(SEL)模块,SEL的输出信号一方面给CHOICE模块提供提供选择信号,另一方面又给译码器(decode3_8)模块提供译码信号来控制灯位的亮灭。