VHDL数字钟设计报告

合集下载

VHDL电子钟实验报告

VHDL电子钟实验报告

期末大作业课程设计实验报告设计题目:基于VHDL电子钟的设计目录一、概述 (3)1.1目的 (3)1.2课程设计的要求和功能 (3)二、总结 (3)2.1课程设计进行过程及步骤 (3)2.2所遇到的问题,如何解决问题 (15)2.3体会收获以及建议 (15)3.4参考资料(书,网络资料) (15)三、教师评语 (16)四、成绩 (16)一、概述1.1目的1. 基于CPLD系统模块板,设计一个电子钟。

来熟悉CPLD的工作原理以及对VHDL的使用。

2. 通过设计出一个电子钟具有校时功能,来巩固分频,键盘扫描,计数,动态扫描等知识内容。

1.2课程设计的要求和功能设计一个电子钟,能进行正常的时分秒计时功能,分别有六个数码管显示24小时,60分钟,60秒的计数器显示。

利用实验箱系统上的按键实现“校时”、“校分”功能:(1)按下“SA”键时,计时器快速递增,按24小时循环,进行时校正;(2)按下“SB”键时,计分器快速递增,按60分循环,进行分校正(3)按下“SC”键时,秒清零,进行秒校正;二、总结2.1课程设计进行及步骤1.设计提示系统框图见下2.系统结构设计描述(1)系统顶层文件1.顶层原理图见下2.各个模块的解释(1)五个输入量clk50MHz,SA,SB,SC,reset:其中clk50MHz为总体系统提供时钟,并且经过分频来分别对电子钟模块提供时钟,产生一秒一秒的进位信号,对显示模块的计数器提供时钟实现显示模块的扫描功能,对按键去抖动提供时钟,实现键盘扫描的功能。

SA,SB,SC用来控制按键,实现按键控制,SA是实现“时”加一,SB是实现“分”加一,SC是实现“秒”清零。

Reset是来控制按键功能的使能。

(2)按键功能模块三个输入chos ,date0,date1的功能是:chos接受来自按键的信号,若按键按下,则将date0的内容,也就是通过按键产生的脉冲来控制电子钟进行加一,若按键没有按下,则将“秒”分频信号接入电子钟的clk计数输入端,通过时钟脉冲来控制电子钟。

用VHDL语言实现数字电子钟的设计(EDA课程设计报告-含源程序)

用VHDL语言实现数字电子钟的设计(EDA课程设计报告-含源程序)

课程设计报告设计题目:用VHDL语言实现数字钟的设计班级:电子 0901学号: XXXXXXXX姓名:XXXXXXXXX指导教师:XXXXXXXXX设计时间:现代电子设计技术的核心已转向基于计算机的电子设计自动化技术,即EDA (Electronic Design Automation)技术。

EDA技术就是依赖计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Description Language)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。

EDA技术使得设计者的工作仅限于利用软件的方式,即利用硬件描述语言和EDA软件来完成对系统硬件功能的实现。

硬件描述语言是EDA技术的重要组成部分,常见的HDL语言有VHDL、Verilog、HDL、ABLE、AHDL、System Verilog和System C。

其中VHDL、Verilog在现在的EDA设计中使用最多,也拥有几乎所有主流EDA工具的支持。

VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化硬件设计任务,提高了设计效率和可靠性。

在这次设计中,主要使用VHDL语言输入。

此次设计很好地完成了数字钟的定时、切换显示年月日和时分秒的功能,完成了小型FPGA的设计开发,锻炼了动手实践能力,达到了课程设计的目的。

关键词:EDA技术硬件描述语言VHDL 设计数字电子钟摘要 (2)1、课程设计目的 (4)2、课程设计内容及要求 (4)2.1 设计内容 (4)2.2 设计要求 (4)3、VHDL程序设计 (5)3.1 方案论证 (5)3.2 设计思路与方法 (6)3.2.1 设计思路 (6)3.2.2 设计方法 (7)4、仿真与分析 (7)5、器件编程下载及设计结果 (9)6、课程设计总结 (10)7、参考文献 (10)8、程序清单 (11)8.1 顶层模块 (11)8.2 秒脉冲模块 (13)8.3 数码管显示模块 (14)8.4 时分秒模块 (15)8.4.1 分秒模块 (16)8.4.2 小时模块 (18)8.5 年月日模块 (19)8.5.1 日期模块 (21)8.5.2 月份模块 (24)8.5.3 年份模块 (25)1、课程设计目的EDA技术课程设计在课程结束以后进行,在实践中验证理论知识,不仅是为了巩固课堂上所学知识,更是为了加深我们对EDA技术和VHDL语言的理解;为了让我们自己动手完成从设计输入、逻辑综合、功能仿真、设计实现到实现编程、时序仿真,一直到器件的下载测试的整个过程,真切感受利用EDA技术对FPGA进行设计开发的过程,锻炼和提高我们对器件的编程调试能力。

VHDL数字钟设计

VHDL数字钟设计

VHDL数字钟设计报告一、系统功能概述:1.进行一个具有‘时’、‘分’、‘秒’的十进制数计时功能,‘时’、‘分’、‘秒’各用两个数码管分别显示(小时从00~23,分、秒从00~59);2.可以进行手动校时,校分,校时完毕之后从校正点开始从新计时;3.具有定时功能,可以预设闹钟,并在预定的时间发出闹铃声;4.具有整点报时功能,即从59分50秒起,每隔2秒钟发出一次低音“嘟”的信号,连续5次,最后一次发出高音“嘀”的信号,此信号结束即达到整点。

二、系统组成以及系统各部分的设计:1..⑴系统结构描述:输入输出端口设置port(reset: in std_logic; ----上升沿有效,用于改变工作状态sign: in std_logic;---高电平有效,用来控制校时,定时功能;clk: in std_logic;----计时脉冲;clk2: in std_logic;-----闹铃脉冲;hourmusic1: out std_logic;hourmusic2: out std_logic;music: out std_logic;------闹铃端口;q5: out std_logic_vector(3 downto 0);-------小时高位出口;q4: out std_logic_vector(3 downto 0);-------小时低位出口;q3: out std_logic_vector(3 downto 0);-------分钟高位出口;q2: out std_logic_vector(3 downto 0);-------分钟低位出口;q1: out std_logic_vector(3 downto 0);-------秒钟高位出口;q0: out std_logic_vector(3 downto 0) ---------秒钟低位出口;);end clock;中间变量设置signal qq5,qq4,qq3,qq2,qq1,qq0: std_logic_vector(3 downto 0);——用于计时,校时时‘时’、‘分’、‘秒’的对应中间变量;signal qqhh,qqhl,qqmh,qqml: std_logic_vector(3 downto 0);——用于定时时‘时’、‘分’、‘秒’的对应中间变量;signal qqq5,qqq4,qqq3,qqq2,qqq1,qqq0: std_logic_vector(3 downto 0);——用于显示时‘时’、‘分’、‘秒’的对应中间变量;signal flag: std_logic_vector(2 downto 0);——用来标记计时,定时,校时的状态;signal musica: std_logic;——闹铃的中间变量;signal hourmusic11,hourmusic22: std_logic;——整点报时的中间变量;signal k: std_logic;——用来控制整点报时;①计时电路:process(reset)-------------通过reset上升沿触发调整工作状态;beginif (reset'event and reset='1') thenif flag="100" then-----------若flag等于4,则清零,否则加1;flag<="000";elseflag<=flag+1;end if;end if;end process;process(clk,flag,sign)-------------用于计时,校时,定时;beginif (clk'event and clk='1') thenk<=not k; -----------产生二分频,用来控制后面整点报时;if flag="000" then ------计时环节if qq0="1001" thenqq0<="0000";if qq1="0101" thenqq1<="0000";if qq2="1001" thenqq2<="0000";if qq3="0101" thenqq3<="0000";if qq4="1001" thenqq4<="0000";qq5<=qq5+1;elsif qq5="0010"and qq4="0011" thenqq4<="0000";qq5<="0000";elseqq4<=qq4+1;end if;elseqq3<=qq3+1;end if;elseqq2<=qq2+1;end if;elseqq1<=qq1+1;end if;elseqq0<=qq0+1;end if;②校时电路:elsif (flag="001" and sign='1')then ------校时if qq4="1001" thenqq4<="0000";qq5<=qq5+1;elsif qq5="0010"and qq4="0011" thenqq4<="0000";qq5<="0000";elseqq4<=qq4+1;end if;elsif (flag="010" and sign='1') then -------校分qq1<="0000";qq0<="0000";if qq2="1001" thenqq2<="0000";if qq3="0101" thenqq3<="0000";elseqq3<=qq3+1;end if;elseqq2<=qq2+1;end if;③定时电路:elsif (flag="011" and sign='1') then -----定时if qqhl="1001" thenqqhl<="0000";qqhh<=qqhh+1;elsif qqhh="0010"and qqhl="0011" thenqqhh<="0000";qqhl<="0000";elseqqhl<=qqhl+1;end if;elsif (flag="100" and sign='1')then -----定分if qqml="1001" thenqqml<="0000";if qqmh="0101" thenqqmh<="0000";elseqqmh<=qqmh+1;end if;elseqqml<=qqml+1;end if;end if;end if;end process;④显示:process(flag)beginif flag="000" then ----计时状态,显示计时qqq0<=qq0;qqq1<=qq1;qqq2<=qq2;qqq3<=qq3;qqq4<=qq4;qqq5<=qq5;elsif flag="001" then----校时状态,显示校时qqq5<=qq5;qqq4<=qq4;qqq3<=qq3;qqq2<=qq2;qqq1<="0000";qqq0<="0001";elsif flag="010" then-----校分状态,显示校分qqq5<=qq5;qqq4<=qq4;qqq3<=qq3;qqq2<=qq2;qqq1<="0000";qqq0<="0010";elsif flag="011" then-----定时状态,显示定时qqq5<=qqhh;qqq4<=qqhl;qqq3<=qqmh;qqq2<=qqml;qqq1<="0000";qqq0<="0011";elsif flag="100" then-----定分状态,显示定分qqq5<=qqhh;qqq4<=qqhl;qqq3<=qqmh;qqq2<=qqml;qqq1<="0000";qqq0<="0100";end if;end process;⑤报时:process(flag)beginif flag="000" thenif qq5=qqhh and qq4=qqhl and qq3=qqmh and qq2=qqml then if qq1="0000" thenmusica<=clk2;end if;end if;end if;end process;process(k) ---整点报时环节,当59分50秒时,每过两秒报时响一下,beginif (qq3="0101" and qq2="1001" and qq1="0101") and (qq0="1000" or qq0="1001") thenhourmusic22<=k;elsif (qq3="0101"and qq2="1001" and qq1="0101") thenhourmusic11<=k;end if;(2)各进程功能总结:①process(reset):手动上升沿触发,每来一次脉冲,状态变量flang加1,改变一种状态,当flang等于4时,flang清零,从新改变状态;②process(clk,flag,sign):clk上升沿触发,当flang为“000”,完成正常计时;当flang为“001”且校正开关sign为高电平,完成校时功能;当flang为“010”且校正开关sign为高电平,完成校分功能;当flang为“011”且校正开关sign为高电平,完成定时功能;当flang为“100”且校正开关sign为高电平,完成定分功能;③process(flag)1:完成显示功能:当flang为“000”时,显示正常计时的变量;当flang为“001”或“010”时(校时);显示校时校分变量;当flang为“011”或“100”时(定时),显示定时定分变量;④process(flag)2:完成闹铃功能:当flang为“000”(正常计时状态)时,若计时和定时相等,则将clk2(引入的一个高频信号)给闹铃引脚(music,接speaker),闹铃响;⑤process(k):k为clk进程中的一个二分频变量,完成整点报时功能:当计时为59分50秒时,hourmusic11赋值为k,即每隔两秒出现一次高电平,一共四次;当计时为59分58秒时,hourmusic22赋值为k,即每隔两秒出现一次高电平,一共一次;2. 下载时选择的开发系统模式以及管脚此系统下载时使用模式7进行下载:3.实验电路结构图:结构图NO.7:此电路适合于设计时钟、定时器、秒表等。

EDA-VHDL数字钟报告

EDA-VHDL数字钟报告

《EDA技术》实验报告数字钟班级:电子与电气081学号:830702004姓名:陈海峰指导教师:张江伟老师地点:B07-306时间:校历9-10周目录一、摘要二、关键词三、数字钟设计要求四、基本理论知识了解五、实验目的六、实验器材七、实验内容——数字钟设计方案计数部分(1)VHDL语言设计的六十进制电路,模块及其波形(2)VHDL语言设计的二十四进制电路,模块及其波形动态显示部分(1)VHDL语言设计的四进制电路,模块及其波形(2)VHDL语言设计的2线-4线译码器(3)VHDL语言设计的数据选择器波形及其模块(4)VHDL语言七段译码器设计波形及模块数字钟总电路图八、实验总结九、参考资料一、摘要数字钟由计数器、译码器、显示器等部分构成,数字钟的时、分、秒实际上就是由一个24进制计数器(00-23),两个60进制计数器(00-59)级联构成。

利用Quartus II 6.0软件编写VHDL语言,编写六十进制、二十四进制;译码、显示部分用一个四进制,二-四译码器,数据选择器及七段译码器构成。

最后生成相对应的模块连接成数字钟电路图。

二、关键词VHDL语言、数字钟、计数器、动态显示、译码显示三、数字钟设计要求(1)正常模式时,采用24小时制设计有时、分、秒。

只显示时、分。

(2)应用VHDL语言设计时要有计数、数据选择、译码、显示等要求。

四、基本理论知识了解数字钟的功能实际上是对秒信号计数。

EDA-V硬件开发系统可提供不同的时钟信号,分频后可产生秒时钟。

数字钟在结构上可分为两个部分:计数器和显示器。

计数器又可分为秒计数器、分计数器和小时计数器;秒计数器和分计数器由两个六十进制构成,小时计数器由二十四进制计数器实现。

动态显示电路可用三态门构成的四选一数据选择器,和一个四进制加一个二四译码器,还有一个七段译码器7448组成。

三态门在选择了一个数码管的同时,打开一个三态门,其他的关闭。

进而实现数据选择。

如图1所示的用三态门实现动态显示的框图。

数字钟的设计课程设计VHDL

数字钟的设计课程设计VHDL

数字钟的设计 课程设计 VHDL一、课程目标知识目标:1. 理解数字时钟的基本原理和VHDL语言编程基础;2. 学会使用VHDL语言设计简单的数字时钟电路;3. 掌握数字时钟各模块的功能及其相互关系;4. 了解数字时钟在实际应用中的重要性。

技能目标:1. 能够运用VHDL语言编写简单的数字时钟程序;2. 能够对设计的数字时钟进行功能仿真和时序分析;3. 能够根据实际需求调整和优化数字时钟设计;4. 培养学生的团队协作能力和问题解决能力。

情感态度价值观目标:1. 培养学生对数字电路设计和VHDL编程的兴趣和热情;2. 增强学生对我国集成电路产业的认识,提高国家自豪感;3. 培养学生严谨、认真、负责的学习态度,为未来从事相关工作奠定基础。

课程性质:本课程为电子信息类专业的实践课程,旨在帮助学生掌握数字时钟设计的基本方法和技能。

学生特点:学生已具备一定的数字电路基础和VHDL编程知识,具有一定的自学能力和动手能力。

教学要求:结合学生特点,注重理论与实践相结合,强化实践操作,鼓励学生创新和团队协作。

通过本课程的学习,使学生能够独立完成数字时钟的设计与实现,达到学以致用的目的。

二、教学内容1. 数字时钟原理概述:数字时钟的组成、工作原理和性能指标;2. VHDL语言基础:VHDL程序结构、数据类型、运算符、顺序语句和并行语句;3. 数字时钟设计方法:分频器、计数器、秒表、时钟显示等模块的设计原理和实现方法;4. 数字时钟电路仿真:功能仿真和时序分析,优化设计;5. 数字时钟综合设计:根据实际需求,完成数字时钟的各个模块设计和整体集成;6. 数字时钟实践操作:动手实践,调试和优化数字时钟设计。

教学大纲安排:第一周:数字时钟原理概述,VHDL语言基础;第二周:数字时钟各个模块的设计方法;第三周:数字时钟电路仿真,功能验证;第四周:数字时钟综合设计,实践操作。

教学内容关联教材章节:1. 数字时钟原理概述:第三章 数字电路基础;2. VHDL语言基础:第四章 VHDL硬件描述语言;3. 数字时钟设计方法:第五章 数字系统设计;4. 数字时钟电路仿真:第六章 数字电路仿真;5. 数字时钟综合设计:第五章 数字系统设计;6. 数字时钟实践操作:实验指导书相关内容。

多功能数字电子钟_VHDL

多功能数字电子钟_VHDL

四、各功能模块的源程序代码 :
-- CONTOR 模块 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity contor is
1 )“小时” 校时状态: 进入“小时”校时状态后,显示 “小时” 的数码管闪烁,每按动“ k” 键一次,“小时” +1,若不按动“ k”键 则小时数不变,一直按下“ k” 键则小时数一 4Hz 的频率递增计数。
2 )“分”校时状态:进入“分”校时状态后,显示“分”的数 码管闪烁,每按动“ k” 键一次,“分” +1,若不按动“ k”键则分数 不变,一直按下“ k” 键则分数一 4Hz的频率递增计数。
chs,cms,css,f4 :in std_logic; bsg,bmg,bhg,bsd,bmd,bhd :buffer std_logic_vector(3 downto 0); comout :out std_logic); end time_com; architecture time_comx of time_com is begin com:process(hh,mh,sh,hl,ml) begin if(bhg=hh and bhd=hl and bmg=mh and bmd=ml and bsg=sh)then comout<='1'; else comout<='0'; end if; end process; set:process(f4) begin if(f4'event and f4='1')then if(chs='1'and k='0')then if(bhg="0010" and bhd="0011")then bhd<="0000";bhg<="0000"; elsif(bhd="1001")then bhd<="0000";bhg<=bhg+1; elsif(bhd="0000"or bhd="0001" or bhd="0010"or bhd="0011"or bhd="0100"or bhd="0101"or bhd="0110"or bhd="0111"or bhd="1000")then bhd<=bhd+1; end if; end if; end if; end process; process(f4) begin if(f4'event and f4='1')then if(cms='1'and k='0')then if(bmg="0101" and bmd="1001")then

基于VHDL的多功能数字钟设计报告

基于VHDL的多功能数字钟设计报告

基于VHDL的多功效数字钟设计陈述021215班卫时章02121451一.设计请求1.具有以二十四小时制计时.显示.整点报时.时光设置和闹钟的功效.2.设计精度请求为1秒.二.设计情况:Quartus II三.体系功效描写1.体系输入:时钟旌旗灯号clk采取50MHz;体系状况及较时.准时转换的控制旌旗灯号为k.set,校时复位旌旗灯号为reset,均由按键旌旗灯号产生.2.体系输出:LED显示输出;蜂鸣器声音旌旗灯号输出.3.多功效数字电子钟体系功效的具体描写如下:(一)计时:正常工作状况下,每日按24h计时制计时并显示,蜂鸣器无声,逢整点报时.(二)校时:在计时显示状况下,按下“k”键,进入“小时”待校准状况,若此时按下“set”键,小时开端校准;之后按下“k”键则进入“分”待校准状况;中断按下“k”键则进入“秒”待复零状况;再次按下“k”键数码管显示闹钟时光,并进入闹钟“小时”待校准状况;再次按下“k”键则进入闹钟“分”待校准状况;若再按下“k”键恢复到正常计时显示状况.若校时进程中按下“reset”键,则体系恢复到正常计数状况.(1)“小时”校准状况:在“小时”校准状况下,显示“小时”的数码管以2Hz闪耀,并按下“set”键时以2Hz的频率递增计数.(2)“分”校准状况:在“分”校准状况下,显示“分”的数码管以2Hz闪耀,并按下“set”键时以2Hz的频率递增计数.(3)“秒”校准状况:在“秒复零”状况下,显示“秒”的数码管以2Hz闪耀,并以1Hz的频率递增计数.(4)闹钟“小时”校准状况:在闹钟“小时”校准状况下,显示“小时”的数码管以2Hz闪耀,并按下“set”键时以2Hz的频率递增计数.(5)闹钟“分”校准状况:在闹钟“分”校准状况下,显示“分”的数码管以2Hz闪耀,并按下“set”键时以2Hz的频率递增计数.(三)整点报时:蜂鸣器在“59”分钟的第“51”.“53”.“55”.“57”秒发频率为500Hz的低音,在“59”分钟的第“59”秒发频率为1000Hz的高音,停止时为整点.(四)显示:采取扫描显示方法驱动4个LED数码管显示小时.分,秒由两组led灯以4位BCD 码显示.(五)闹钟:闹钟准不时光到,蜂鸣器发出频率为1000Hz的高音,中断时光为60秒.四.各个模块剖析解释1.分频器模块(freq.vhd)(1)模块解释:输入一个频率为50MHz的CLK,应用计数器分出1KHz的q1KHz,500Hz的q500Hz,2Hz的q2Hz和1Hz的q1Hz.(2)源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity freq isport (CLK: in std_logic ; --输入时钟旌旗灯号q1KHz: buffer std_logic;q500Hz: buffer std_logic;q2Hz: buffer std_logic;q1Hz: out std_logic);end freq;architecture bhv of freq isbeginP1KHZ:process(CLK)variable cout:integer:=0;beginif CLK'event and CLK='1' thencout:=cout+1; --每来个时钟上升沿时cout开端计数if cout<=25000 then q1KHz<='0'; --当cout<=25000时,q1KHz输出“0”elsif cout<50000 then q1KHz<='1'; --当25000<cout<=50000时,q1KHzelse cout:=0; --输出“1”,完成1KHz 频率输出end if;end if;end process;P500HZ:process(q1KHz) --q1KHz作为输入旌旗灯号,分出q500Hzvariable cout:integer:=0;beginif q1KHz'event and q1KHz='1' thencout:=cout+1;if cout=1 then q500Hz<='0'; --二分频elsif cout=2 then cout:=0;q500Hz<='1';end if;end if;end process;P2HZ:process(q500Hz)variable cout:integer:=0;beginif q500Hz'event and q500Hz='1' then cout:=cout+1;if cout<=125 then q2Hz<='0';elsif cout<250 then q2Hz<='1';else cout:=0;end if;end if;end process;P1HZ:process(q2Hz)variable cout:integer:=0;beginif q2Hz'event and q2Hz='1' thencout:=cout+1;if cout=1 then q1Hz<='0';elsif cout=2 then cout:=0;q1Hz<='1'; end if;end if;end process;end bhv;(3)模块图:2.控制器模块(contral.vhd)(1)模块解释:输入端口k,set键来控制6个状况,这六个状况分离是:显示计不时光状况,调计时的时.分.秒的3个状况,调闹铃的时.分的3个状况,reset键是复位键,用往返到显示计不时光的状况.(2)波形仿真图:(3)模块图:3、二选一模块(mux21a.vhd)(1)源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mux21a isport(a,b,s:in bit;y:out bit);end entity mux21a;architecture one of mux21a isbeginprocess(a,b,s)beginif s='0' theny<=a; --若s=0,y输出a,反之输出b. else y<=b;end if;end process;end architecture one;(2)仿真波形图:(3)模块图:4、计时模块a.秒计时(second.vhd)(1)仿真波形图:(2)模块图:b.分计时(minute.vhd)(1)仿真波形图:(2)模块图:c.小时计时(hour.vhd)(1)仿真波形图:(2)模块图:d.闹钟分计时(cntm60b.vhd)(1)仿真波形图:(2)模块图:e.闹钟小时计时(cnth24b.vhd)(1)仿真波形图:(2)模块图:5.闹钟比较模块(compare.vhd)(1)模块解释:比较正常计数时光与闹钟准不时光是否相等,若相等,compout输出“1”,反之输出“0”.(2)仿真波形图:(3)模块图:6.报时模块(bell.vhd)(1)模块解释:该模块既实现了整点报时的功效,又实现了闹铃的功效,蜂鸣器经由过程所选频率的不合,而发出不合的声音.(2)仿真波形图:(3)模块图:7.控制显示模块(show_con.vhd)(1)模块解释:该模块实现了数码管既可以显示正常时光,又可以显示闹钟时光的功效;调时进程的准时闪耀功效也在此模块中真正实现.(2)源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity show_con isport(th1,tm1,ts1:in std_logic_vector(7 downto 4);th0,tm0,ts0:in std_logic_vector(3 downto 0);bh1,bm1:in std_logic_vector(7 downto 4);bh0,bm0:in std_logic_vector(3 downto 0);sec1,min1,h1: out std_logic_vector(7 downto 4);sec0,min0,h0: out std_logic_vector(3 downto 0);q2Hz,flashs,flashh,flashm,sel_show:in std_logic); end show_con;architecture rtl of show_con isbeginprocess(th1,tm1,ts1,th0,tm0,ts0,bh1,bm1,bh0,bm0,q2Hz,flas hs,flashh,flashm,sel_show)beginif sel_show='0'thenif ( flashh='1'and q2Hz='1')thenh1<="1111";h0<="1111"; --显示小时数码管以2Hz闪耀min1<=tm1;min0<=tm0;sec1<=ts1;sec0<=ts0;elsif (flashm='1'and q2Hz='1')thenh1<=th1;h0<=th0;min1<="1111";min0<="1111";sec1<=ts1;sec0<=ts0;elsif (flashs='1'and q2Hz='1')thenh1<=th1;h0<=th0;min1<=tm1;min0<=tm0;sec1<="1111";sec0<="1111";elseh1<=th1;h0<=th0;min1<=tm1;min0<=tm0;sec1<=ts1;sec0<=ts0;end if;elsif sel_show='1'then--若sel_show为“1”,数码管显示闹钟时光if(flashh='1' and q2Hz='1')thenh1<="1111";h0<="1111";min1<=bm1;min0<=bm0;sec1<="0000";sec0<="0000";elsif ( flashm='1' and q2Hz='1')thenh1<=bh1;h0<=bh0;min1<="1111";min0<="1111";sec1<="0000";sec0<="0000";elseh1<=bh1;h0<=bh0;min1<=bm1;min0<=bm0;sec1<="0000";sec0<="0000";end if ;end if;end process;end rtl;(3)模块图:8.动态扫描显示模块(scan_led.vhd)(1)模块解释:由4组输入旌旗灯号和输出旌旗灯号进而实现了时钟时.分的动态显示.(2)源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity scan_led isport(clk1:in std_logic;h0:in std_logic_vector(3 downto 0);h1:in std_logic_vector(7 downto 4);min0:in std_logic_vector(3 downto 0);min1:in std_logic_vector(7 downto 4);ML:out std_logic_vector(7 downto 0);MH:out std_logic_vector(7 downto 0);HL:out std_logic_vector(7 downto 0);HH:out std_logic_vector(7 downto 0));end scan_led;architecture one of scan_led issignal cnt4:std_logic_vector(1 downto 0);signal a: std_logic_vector(3 downto 0) ;beginp1:process(clk1)beginif clk1'event and clk1 ='1' thencnt4<=cnt4+1;if cnt4=3 thencnt4<="00";end if;end if;end process p1;p2:process(cnt4,h1,h0,min1,min0)begincase cnt4 is --控制数码管位选when "00"=>case min0 iswhen "0000"=>ML<="11000000";when "0001"=>ML<="11111001";when "0010"=>ML<="10100100";when "0011"=>ML<="10110000";when "0100"=>ML<="10011001";when "0101"=>ML<="10010010";when "0110"=>ML<="10000010";when "0111"=>ML<="11111000";when "1000"=>ML<="10000000";when "1001"=>ML<="10010000";when others=>NULL;end case;when "01"=>case min1 iswhen "0000"=>MH<="11000000"; when "0001"=>MH<="11111001";when "0010"=>MH<="10100100";when "0011"=>MH<="10110000";when "0100"=>MH<="10011001";when "0101"=>MH<="10010010";when "0110"=>MH<="10000010";when "0111"=>MH<="11111000";when "1000"=>MH<="10000000";when "1001"=>MH<="10010000";when others=>NULL;end case;when "10"=>case h0 iswhen "0000"=>HL<="11000000"; when "0001"=>HL<="11111001";when "0010"=>HL<="10100100";when "0011"=>HL<="10110000";when "0100"=>HL<="10011001";when "0101"=>HL<="10010010";when "0110"=>HL<="10000010";when "0111"=>HL<="11111000";when "1000"=>HL<="10000000";when "1001"=>HL<="10010000";when others=>NULL;end case;when "11"=>case h1 iswhen "0000"=>HH<="11000000"; when "0001"=>HH<="11111001";when "0010"=>HH<="10100100";when "0011"=>HH<="10110000";when "0100"=>HH<="10011001";when "0101"=>HH<="10010010";when "0110"=>HH<="10000010";when "0111"=>HH<="11111000";when "1000"=>HH<="10000000";when "1001"=>HH<="10010000";when others=>NULL;end case;when others =>null;end case;end process p2;end one;(3)模块图:五、端口设定k:button2 ,set:button1 ,reset:button0 ;Bell:SW1 用于开关蜂鸣器;六.顶层电路图七、心得领会此次的数字钟设计重在于按键的控制和各个模块代码的编写,固然能把键盘接口和各个模块的代码编写出来,并能正常显示,但对于各个模块的优化设计还有必定的缺点和缺少,比方对按键消抖等细节处并未作出优化.经由此次数字钟的设计,我确切从中学到许多的器械.起首,经由过程VHDL硬件说话的进修,我充分熟悉到了功效模块若何用说话实现,让我初步懂得到了一个数字电路用硬件说话设计的方法和设计思惟.其次,也让我深深地领会到实践的主要性,起先我学VHDL说话的时刻,只是学得书本上的常识,经由此次课程设计,经由过程对模块的说话实现,对于VHDL说话我有了更深的熟悉.并且在程序错误的发明和纠正的进程中,我得到了更多的收成,也确切让我提高了许多.再次,当我碰到一些问题的时刻,就教先生,和同窗们一路评论辩论,令我受益颇多!最后,这个多功效数字电子钟是自我创造与汲取借鉴配合感化的产品,是自我尽力的成果.这让我对数字电路的设计充满了信念.固然课程设计已经停止,但这其实不代表着我已经真正控制了VHDL说话,仍需中断进修!。

vhdl课程设计报告电子钟+闹铃

vhdl课程设计报告电子钟+闹铃

数字钟的设计一、系统功能概述(一)、系统实现的功能:1、具有“时”、“分”、“秒”的十进制数字显示(小时从00 ~ 23)。

2、具有手动校时、校分、校秒的功能。

3、有定时和闹钟功能,能够在设定的时间发出闹铃声。

4、能进行整点报时。

从59分50秒起,每隔2秒发一次低音“嘟”的信号,连续5次,最后一次为高音“嘀”的信号。

(二)、各项设计指标:1、显示部分采用的6个LED显示器,从高位至低位分别显示时、分、秒。

2、有一个设置调闹钟定时时间、正常时间的按钮,选择调的对象。

3、有三个按钮分别调时、分、秒的时间。

4、有一个按钮用作开启/关闭闹铃。

5、另外需要两个时钟信号来给系统提供脉冲信号,使时钟和闹钟正常工作,分别为1Hz、1kHz的脉冲。

二、系统组成以及系统各部分的设计1、系统结构描述//要求:系统(或顶层文件)结构描述,各个模块(或子程序)的功能描述;(一)系统的顶层文件:1、顶层文件图:(见下页)2、各模块的解释:(1)、7个输入量clk_1khz、clk_1hz、key_slt、key_alarm、sec_set、min_set、hour_set:其中clk_1khz为闹铃模块提供时钟,处理后能产生“嘟”、“嘀”和变化的闹铃声音;clk_1hz为计时模块提供时钟信号,每秒计数一次;key_slt选择设置对象:定时或正常时间;key_alarm能够开启和关闭闹铃;sec_set、min_set、hour_set用于设置时间或定时,与key_slt相关联。

各按键输出为脉冲信号。

(2)、T60_A_SEC模块:这个模块式将clk_1hz这个时钟信号进行60进制计数,并产生一个分钟的触发信号。

该模块能将当前计数值实时按BCD码的格式输出。

将该输出接到两位LED数码后能时时显示秒的状态。

通过alarm_clk可以选择设置对象为时间还是定时值。

在设置时间模式上,key上的一个输入脉冲可以将clk的输入信号加一。

数字电路设计实验vhdl语言实验报告

数字电路设计实验vhdl语言实验报告

实验一秒表计数器的设计实验目的:本实验通过设计四种频率可选的数字时钟系统, 以达到熟悉VHDL 语言编程语法、设计思路和熟练掌握Quartus II 开发软件的目的。

二、实验内容:该数字时钟的显示格式如下所示: HH: MM: SS, 其中HH表示时计数的两位, MM表示分计数的两位, SS表示秒计数的两位。

本系统输入信号分别为复位信号rst(高有效)、sel(两位信号, 分别可以选择2分频、4分频8分频和16分频)、clk_in(时钟信号)、8位时输出、8位分输出、8位秒输出(其中高4为表示对应的高半字节、低4位表示的低半字节, 譬如当时间为08:59:30时, 时输出为”0000_1000”,分输出为”0101_1001”,秒输出为”0011_0000”)。

该时钟系统可以通过Sel信号时钟运行的快慢。

三、实验流程:通过对实验内容的分析: 可以考虑时钟系统的可由三部分组成: 1.分频器:分频器为时序电路并且通过《数字电路》理论课程的学习可知由计数器来实现, 同学可以回想一下实验1中是如何实现计数器电路的设计), 该模块主要产生2.4.8、16分频的时钟信号;2.多路选择器:在VHDL中多路选择器为组合逻辑, 可以有多种实现方法, 在这里主要选用了case语句来实现。

该模块的作用是从分频器中根据Sel信号选择适当的时钟信号;3.时钟控制器:该模块比较复杂, 主要实现功能是实现一个24小时的计时。

当时间为00:00:59的时候下一个时钟到来时状态的跳变为00:01:00, 计时中多数计数为加1操作, 有几个特殊状态需要重点考虑:当时间产生分进数时, 譬如上例。

当时间产生时进数时, 譬如00:01:59时刻的下一个状态为00:02:00;当时间产生时进数时, 譬如00:59:59是个的下一个状态为01:00:00。

当时间产生天进数时, 譬如23:59:59的下一个状态为00:00:00。

四、仿真要求:1、本次试验的结果全部采用功能仿真分析:在结果图中能够看到让复位信号rst为有效的情况下, 所有的输出为00:00:00;2.当频率选择输出分别为”00”、”01”、”10”、”11”时秒为的进数分别包含2.4.8、16倍clk_in的时钟周期;3.可以看到完整的计时周期00:00:00->23:59:59->00:00:00。

vhdl实验报告--数字钟

vhdl实验报告--数字钟

VHDL实验报告一、实验目的1、设计一个24小时制数字钟,要求能显示时,分,秒,并且可以手动调整时和分。

2、通过复杂实验,进一步加深对VHDL语言的掌握程度。

二、实验原理数字钟的主体是计数器,它记录并显示接收到的秒脉冲个数,其中秒和分为模60计数器,小时是模24计数器,分别产生3位BCD码。

BCD码经译码,驱动后接数码管显示电路。

秒模60计数器的进位作为分模60计数器的时钟,分模60计数器的进位作为模24计数器的时钟。

为了实现手动调整时间,在外部增加了setm(调整分),seth(调整时)按键,当这两个按键为低电平时,电路正常计时,当为高电平时,分别调整分,时。

同时在外部还增加了一个清零按键clr.和消抖动电路。

三、实验步骤1、单元模块设计部分1)消抖动电路关键部分signal key_in1,key_in2:std_logic:='0';beginprocess(clk,key_in)beginif clk'event and clk='1' thenkey_in1<=key_in;key_in2<=key_in1;if key_in='1' and key_in1='1' and key_in2='1' then key_out<='1';else key_out<='0';end if;2) 模60计数器程序关键部分:signal md_temp,mg_temp:std_logic_vector(3 downto 0);beginprocess(clk,clr)beginif clr='1' thenmd_temp<="0000"; mg_temp<="0000";elsif set='1' thenmd_temp<=setl; mg_temp<=seth;elsif clk'event and clk='1' thenif md_temp="1001" thenmd_temp<="0000";mg_temp<=mg_temp+'1';else md_temp<=md_temp+'1';if md_temp="1001" and mg_temp="0101" thenmd_temp<="0000";mg_temp<="0000";2、模24计数器程序关键部分signal hd_temp,hg_temp:std_logic_vector(3 downto 0);beginprocess(clk,clr,set,setl,seth)isbeginif set='1' then hd_temp<=setl; hg_temp<=seth;elsif clr='1' then hd_temp<="0000"; hg_temp<="0000";elsif clk'event and clk='1' thenif hg_temp="0010" and hd_temp="0011" thenhd_temp<="0000"; hg_temp<="0000";elsif hd_temp="1001" thenhg_temp<=hg_temp+'1' hd_temp<="0000";else hd_temp<=hd_temp+'1';end if;end if;end process ;3、清零和调时部分显示部分关键程序process (sd,sg,md,mg,hd,hg)begincase sd iswhen "0000" =>sl<="1111110";when "0001" =>sl<="0110000";when "0010" =>sl<="1101101";when "0011" =>sl<="1111001";when "0100" =>sl<="0110011";when "0101" =>sl<="1011011";when "0110" =>sl<="1011111";when "0111" =>sl<="1110000";when "1000" =>sl<="1111111";when "1001" =>sl<="1111011";when others =>sl<="0000000";end case;if clk_g'event and clk_g='1' thenif sel="101" thensel<="000";else sel<=sel+'1';end if;end if;process(sel,sd,sl,sg,sh,md,ml,mg,mh,hd,hl,hg,hh)begincase sel iswhen"000"=>led<=sl;led_which<=sd;when"001"=>led<=sh;led_which<=sg;when"010"=>led<=ml;led_which<=md;when"011"=>led<=mh;led_which<=mg;when"100"=>led<=hl;led_which<=hd;when"101"=>led<=hh;led_which<=hg;when others=>led<="0000000";led_which<="0000";end case;4、顶层文件关键程序port(clk,clk_g:in std_logic;-----clk_g是用在数码管显示里面的信号clr: in std_logic;------clr=1时清零setm,seth:in std_logic;---------setm为1时调分,seth为1时调时setd,setg:in std_logic_vector(3 downto 0);----调整时间的时候,setd调整的是低位setg 调整高位led:out std_logic_vector(6 downto 0);sel_out: out std_logic_vector(2 downto 0);led_which: out std_logic_vector(3 downto 0));---输出的是秒分时的哪一个beginu1:de_shake port map (clk=>clk,key_in=>clr,key_out=>clro);u2:de_shake port map (clk=>clk,key_in=>setm,key_out=>setmo);u3:de_shake port map (clk=>clk,key_in=>seth,key_out=>setho);u4:s60 port map (clk=>clk,clr=>clro,sd=>sdl,sg=>sgh,fenmaichong=>fenmaichong o);u5:m60 port map (clk=>fenmaichongo,clr=>clro,md=>mdl,mg=>mgh,xiaoshimaichong=> xiaoshimaichongo,setl=>setd,seth=>setg,set=>setmo);u6:h24 port map (clk=>xiaoshimaichongo,clr=>clro,hd=>hdl,hg=>hgh,set=>setho,se tl=>setd,seth=>setg);u7:led_xs port map (clk_g=>clk_g,sd=>sdl,sg=>sgh,md=>mdl,mg=>mgh,hd=>hdl, hg=>hgh,led=>led,sel_out=>sel_out,led_which=>led_which);四、实验结果及分析本设计,满足了本次试验设计的任务要求,能显示时分秒,并且可以手动调节分和时。

数字钟VHDL

数字钟VHDL

VHDL实验报告:数字钟一:数字钟的功能1:具有以二十四小时计时、显示、整点报时、时间设置和闹钟的功能。

设计精度要求为1S。

二.功能描述1 . 系统输入:系统状态及校时、定时转换的控制信号为k、trans、set;时钟信号clk,采用1024Hz;系统复位信号reset。

输入信号均由按键产生。

系统输出:LED显示输出,蜂鸣器声音信号输出。

2. 计时:正常工作状态下,每日按24h计时制计时并显示,蜂鸣器无声,逢整点报时。

3. 校时:在计时状态显示下,按下“set键”,进入“小时”校准状态,之后按下“k键”则进入“分”校准状态,继续按下“k 键”则进入“秒复零”状态,第三次按下“k 键”又恢复到正常计时显示状态。

A:“小时”校准状态:在“小时”校准状态下,显示“小时”数码管以1Hz的频率递增计数。

B:“分”校准状态:在“分”校准状态下,显示“分”的数码管以1Hz的频率递增计数。

C:“秒”复零状态:在“秒复零”状态下,显示“秒”的数码管复零。

4. 整点报时:蜂鸣器在“59”分钟的第“51”、“53”、“55”、“57‘秒发频率为512Hz的低音,在“59”分钟的第“59”秒发频率为1024Hz的高音,结束时为整点。

5. 显示:要求采用扫描显示方式驱动6个LED数码管显示小时、分、秒。

闹钟:闹钟定时时间到,蜂鸣器发出周期为1s的“滴”、“滴”声,持续时间为10s;闹钟定时显示。

6. 闹钟定时设置:在闹钟定时显示状态下,按下“set键”,进入闹钟的“时”设置状态,之后按下“k键”进入闹钟的“分”设置状态,继续按下“k 键”则进入“秒”设置状态,第三次按下“k键”又恢复到闹钟定时显示状态。

A:闹钟“小时”设置状态:在闹钟“小时”设置状态下,显示“小时”的数码管以1Hz的频率递增计数。

B:闹钟:“分”设置状态:在闹钟“分”设置状态下,显示“分”的数码管以1Hz的频率递增计数。

三:仿真。

分主控模块、计时校时模块、闹钟设定模块、选择显示模块、整点报时及闹铃模块、分频模块、动态显示模块。

VHDL数字钟实验报告

VHDL数字钟实验报告

XXXXXXXXXXXXXXXXXX CPLD实验报告实验名称:VHDL数字钟姓名: XXXXXX班级:电子与电气081学号: 830702043指导老师: XXXXXX实验摘要一、实验摘要数字钟用到了很多我们数字电路里所学的数电知识,例如译码器、编码器、数据选择器、计数器等~。

因此,做数字钟有着非常现实的意义。

本实验使用VHDL 语句进行各模块的编写。

由于本实验采用的是动态扫描的方式循环点亮四个共阳数码管,所以需要编写共阳显示译码器,三态门芯片、四进制计数器以及二~四译码器。

关键字:数字钟、CPLD、VHDL、动态扫描、三态门实验目的二、实验目的学会使用Quartus Ⅱ这款EDA常用设计软件。

掌握在Quartus Ⅱ中VHDL语句的使用方法。

加强巩固层次设计思路、电路图的作法、仿真方法和作图技巧。

掌握CPLD实验箱的使用和电路的加载运行方法。

实验内容三、实验内容(1)认识VHDL数字系统设计分为硬件设计和软件设计,但是随着计算机技术、超大规模集成电路(CPLD、FPGA)的发展和硬件描述语言的出现,软、硬件设计之间的界限被打破数字系统的硬件设计可以完全用软件来实现,只要掌握了HDL语言就可以设计出各种各样的数字逻辑电路。

(2)60进制计数器的设计60进制计数器输入信号:时钟脉冲,对于本次数字钟设计为节省资源占用可不设置清零输入,输出信号:两位BCD码输出,一个进位输出。

entity counter60v isport(clk :in bit;ql :buffer integer range 9 downto 0;qh :buffer integer range 5 downto 0;jinwei:out bit);end counter60v;architecture c60 of counter60v is 生成的模块功能示意图:beginprocess( clk )beginif(clk'event and clk='1')thenif ql=9 then Array ql<=0;if qh=5 thenqh<=0;elseqh<=qh+1;end if;elseql<=ql+1;end if;end if;if(qh=5 and ql=9)thenjinwei<='1';elsejinwei<='0';end if;end process;end c60;(3)24进制计数器的设计24进制计数器输入信号:时钟脉冲,对于本次数字钟设计为节省资源占用可不设置清零输入,输出信号:两位BCD 码输出,这里不需要进位输出。

VHDL数字时钟实验报告

VHDL数字时钟实验报告

VHDL数字时钟实验报告VHDL 数字时钟设计、实验目的:进一步练习VHDL语言设计工程的建立与仿真的步骤和方法、熟悉VHDL语言基本设计实体的编写方法。

同时,在已有知识的基础上,简单综合编写程序,仿制简单器械。

二、实验环境:PC个人计算机、Win dows XP操作系统、Quartus II集成开发环境软件。

三、设计要求:运用VHDL语言编写一个数字钟,具体要求:1.具有时、分、秒计数的十进制数字显示功能,以 24 小时循环计时。

2.具有手动调节小时,分钟的功能。

3.具有闹钟的功能,能够在设定的闹钟时间发出闹铃声。

四、实验步骤:1. 定义输入输出信号量port(clk:in std_logic; ---speak:out std_logic; ---dout:out std_logic_vector(7 downto0); - setclk:in std_logic_vector(2downto 0); -- d1,d2,d3,d4,d5,d6:out std_logic); --2. 定义结构体中的信号量signal sel:std_logic_vector(2 downto时钟铃-- 晶体管显示- 操作按钮六个晶体管signal hou1:std_logic_vector(3 downto0); -signal hou2:std_logic_vector(3downto 0);signal min1:std_logic_vector(3 downto0); signal min2:std_logic_vector(3时分秒的个位和十位signal seth1:std_logic_vector(3 downto 0); signal seth2:std_logic_vector(3 downto 0);signal setm1:std_logic_vector(3 downto 0); signal setm2:std_logic_vector(3 downto 0); signal sec1:std_logic_vector(3 downto0); signal sec2:std_logic_vector(3downto 0);signal h1:std_logic_vector(3 downto 0); signal h2:std_logic_vector(3 downto 0); signal m1:std_logic_vector(3 downto 0); signal m2:std_logic_vector(3 downto 0);signal s1:std_logic_vector(3 downto 0);signal s2:std_logic_vector(3 downto 0);signal sph1,sph2,spm1,spm2,sps1,sps2:std_logic_vector(3 downto 0);signal count_sec:std_logic_vector(9 downto 0);signal sec_co :std_logic;signal co1,co2,co3,co4:std_logic; -- 进位signal switch :std_logic_vector(1 downto 0); -- 表示状态3. 分频模块用来定义秒count_sec 用来计时钟个数,当count_sec=11 时,及得到1Hz 信号。

(2024版)vhdl数字时钟设计

(2024版)vhdl数字时钟设计

可编辑修改精选全文完整版一、题目分析1、功能介绍(1)具有时、分、秒计数显示功能,以24小时循环计时。

(2)时钟计数显示时有LED灯的花样显示。

(3)具有调节小时、分钟及清零的功能。

(4)具有整点报时功能。

2、总体方框图3、性能指标及功能设计1)时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。

2)时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。

我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。

3)清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。

可以根据我们自己任意时间的复位。

4)蜂鸣器在整点时有报时信号产生,蜂鸣器报警。

产生“滴答.滴答”的报警声音。

5)LED灯在时钟显示时有花样显示信号产生。

即根据进位情况,LED不停的闪烁,从而产生“花样”信号。

二、选择方案1、方案选择方案一:根据总体方框图及各部分分配的功能可知,本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。

采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。

显示:小时采用24进制,而分钟均是采用6进制和10进制的组合。

方案二:根据总体方框图及各部分分配的功能可知,本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。

采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。

显示:小时采用24进制,而分钟和秒均60进制。

终上所述,考虑到试验时的简单性,故我选择了方案二。

三、细化框图根据自顶向下的方法以及各功能模块的的功能实现上述设计方案应系统细化框图:四、编写程序、仿真和分析1、秒计数器1)VHDL 语言描述程序见附录 2)秒计数器的仿真波形图3)波形分析利用60进制计数器完成00到59的循环计数功能,当秒计数至59时,再来一个时钟脉冲则产生进位输出,即enmin=1;reset 作为复位信号低电平有效,数字时钟控制单元 时调整 分调整使能端信号 CLK 信号时显示 分显示 秒显示24进制 60进制 60进制LED 显示整点报花样显即高电平时正常循环计数,低电平清零。

课程设计论文实验报告基于VHDL的数字钟设计

课程设计论文实验报告基于VHDL的数字钟设计

本科实验报告题目:数字钟课程名称:学院(系):专业:班级:学生姓名:学号:完成日期:成绩:2011 年12 月12 日题目:数字钟1 设计要求系统功能:1.计时,数码管显示的‘时’、‘分’、‘秒’的十进制数字显示(小时从00~23)计时器2.星期,lcd1602显示星期:MON/TUE/WEN/THU/FRI/SAT/SUN3.校准,具有手动校星期、校时、校分、校秒的功能。

4.秒表,显示1%秒、60秒,60分,能手动开始和停止5.闹钟,能在设定的时间发出闹铃声。

6.整点报时,即从59分55秒起,每隔1秒钟发出一次低音“嘟”的信号,连续2次,最后一次为高音“嘀”的信号,此信号结束即达到整点,发音的同时伴有led闪烁。

7.倒计时,能在设定的时间开始倒计时,至0时0分0秒停止2 设计分析及系统方案设计一.设计分析:依据功能要求,程序分为:1.计时与校准模块①计时:秒钟计数到59后清零并向分钟进一位,分钟计数到59后清零并向时钟进一位,时钟计数到23后清零并向星期进一位,星期按照MON/TUE/WEN/THU/FRI/SAT/SUN循环变化②校准:使用k1/k0两个功能键,k1切换要改变的位,k0校正2.数码管显示模块①显示译码②利用k3切换显示内容,根据不同模式关闭用不到的数码管。

3.lcd显示模块①定义七个常量数组,数组内容分别为MON/TUE/WEN/THU/FRI/SAT/SUN的ASCⅡ码。

②液晶初始化③液晶显示,将相应字母的ASCⅡ码写入ddram的相应地址中,由cnt1值决定地址,cnt1由0到2循环,因此用到lcd开始的前三个位显示字符。

由星期(m)值决定写入内容,m值不同,cnt1扫描显示的就是不同的数组。

4.闹钟与整点报时模块①整点报时:利用分频得到1k和的频率,当分钟位到达‘59’,秒钟位为‘55’、‘57’时,将频率接到输出引脚,秒钟位为‘59’时,将1k频率接到输出引脚。

②闹钟:到达闹钟时间,将1k频率接到输出引脚,时长3秒③Led闪烁:将led输出引脚连接至频率输出引脚即可(设为inout)5.秒表模块①开启显示1%秒、60秒、60分的数码管。

VHDL课程设计(数字钟)

VHDL课程设计(数字钟)
数字钟的VHDL设计
1.设计任务及要求:
设计任务:设计一台能显示时、分、秒的数字钟。具体要求如下:
(1)由实验箱上的时钟信号经分频产生秒脉冲;
(2)计时计数器用24进制计时电路;
(3)可手动校时,能分别进行时、分的校正;
(4)整点报时;
(5)选做:可设置闹时功能,当计时计到预定时间时,扬声器发出闹铃信号,闹铃时间为4s,并可提前终止闹铃。
end if;
end if;
if sethour='1' then
h0:=h0+1;
if h0="1010" then
h0:="0000";
h1:=h1+1;
ifh0="0100"and h1="0010"
then h0:="0000";h1:="0000";
end if;
end if;
end if;
3.2.3.秒计时模块
将“秒计时脉冲”clk接信号源单元的1HZ脉冲信号,此时秒显示将从00计时到59,然后回到00,重新计时。在秒位进行计时的过程中。
秒计时器是由一个60进制的计数器构成的,具有置数和计数功能。其中rst为置数信号,当rst为1时,秒计时器置数。clk为驱动秒计时器的时钟,sec1、sec0为秒计时器的高位和低位输出。
begin
if(clk1'event and clk1='1') then
if(count="10") then
count:=(others=>'0');
tmp<=not tmp;

VHDL电子时钟的设计

VHDL电子时钟的设计

目录第一章数字电子钟功能简介 (3)第二章数字电子钟原理介绍 (3)2.1数字电子钟基本原理 (3)2.2数字电子钟电路组成 (3)第三章利用QuartusII设计数字电子钟 (7)3.1按键去抖动模块 (7)3.2分频电路模块 (9)3.3选择器模块 (13)3.4计数模块 (14)3.5分位电路模块 (18)3.6数码管动态显示扫描模块 (21)3.7数码管动态显示模块 (22)第四章仿真与实现 (25)第一章数字电子钟功能简介计时功能:这是本计时器设计的基本功能,可进行时、分、秒计时,并显示在6个七段数码管上。

调时功能:当需要校时,可通过实验箱上的按键控制,按下对应的按键,可调整对应的时、分状态。

第二章数字电子钟原理简介2.1数字电子钟基本原理数字钟电路的基本结构由两个60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计时,当计时到23时59分59秒时,再来一个计数脉冲,计数器清零,重新开始计时。

秒计数器的计数时钟CLK为1Hz的标准信号,可以由27MHz信号通过分频得到。

当数字钟处于计时状态时,秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号。

时、分、秒的计时结果通过6个数码管来动态显示。

数字钟除了能够正常计时外,还应能够对时间进行调整。

可通过模式选择信号控制数字钟的工作状态,即控制数字钟,使其分别工作于正常计时,调整分、时和设定分、时状态。

当数字钟处于计时状态时,3个计数器允许计数,且秒、分、时计数器的计数时钟信号分别为CLK,秒的进位, 分的进位;当数字钟处于调整时间状态时,被调的分或时会一秒一秒地增加。

2.2数字电子钟电路组成本实验数字电子钟的设计电路主要由七个模块组成,分别是:按键去抖动模块、分频电路模块、选择器模块、计数模块、分位电路模块、数码管动态显示扫描模块、数码管动态显示模块。

按键去抖动模块如图2-1所示图2-1分频电路模块如图2-2所示图2-2选择器模块如图2-3所示图2-3计数模块如图2-4所示图2-4分位电路模块如图2-5所示图2-5数码管动态显示扫描模块如图2-6所示图2-6数码管动态显示模块如图2-7所示图2-7电路图整体设计如图2-8所示图2-8第三章利用QuartusII设计数字电子钟3.1按键去抖动模块按键去抖动模块的元件设计如图3-1所示图3-1按键去抖动的VHDL语言设计如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity debounce isport(clk:in std_logic;qcin:in std_logic;qcout:out std_logic);end debounce;architecture behave of bounce is type state is (S0,S1,S2);signal current: state;Beginprocess(clk,qin)beginif(clk'event and clk = '1') then case current iswhen S0 => qcout <= '1';if(qcin = '0') thencurrent <= S1;elsecurrent <= S0;end if;when S1 => qcout <= '1';if(qcin = '0') thencurrent <= S2;elsecurrent <= S0;end if;when S2 => qcout <= '0';if(qcin = '0') thencurrent <= S2;elsecurrent <= S0;end if;when others => qcout <= '1';current <= S0;end case;end if;end process;end behave;///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// ////3.2分频电路模块分频电路模块元件设计如图3-2所示:图3-2分频模块VHDL语言设计如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity clk1kHz isgeneric(N: integer:=50000);port(clk: in std_logic;clk1kHz: out std_logic);end clk1kHz;architecture behave of clk1kHz issignal cnt: integer range 0 to N/2-1;signal temp: std_logic;Beginprocess(clk)beginif(clk'event and clk='1') thenif(cnt=N/2-1) thencnt <= 0;temp <= NOT temp;elsecnt <= cnt+1;end if;end if;end process;clk1KHz <= temp;end behave;///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// ////library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity clk1Hz isgeneric(N: integer:=50000000);port(clk: in std_logic;clk1Hz: out std_logic);end clk1Hz;architecture behave of clk1Hz issignal cnt: integer range 0 to N/2-1;signal temp: std_logic;Beginprocess(clk)beginif(clk'event and clk='1') thenif(cnt=N/2-1) thencnt <= 0;temp <= NOT temp;elsecnt <= cnt+1;end if;end if;end process;clk1Hz <= temp;end behave;///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// ////library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity clk10Hz isgeneric(N: integer:=20000000);port(clk: in std_logic;clk10Hz: out std_logic);end clk10Hz;architecture behave of clk10Hz issignal cnt: integer range 0 to N/2-1;signal temp: std_logic;Beginprocess(clk)beginif(clk'event and clk='1') thenif(cnt=N/2-1) thencnt <= 0;temp <= NOT temp;elsecnt <= cnt+1;end if;end if;end process;clk10Hz <= temp;end behave;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////3.3选择器模块选择器模块元件设计如图3-3所示:图3-3选择器模块VHDL与颜色合计如下所示:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xzq isport(sel: in std_logic;date0,date1:in std_logic;dcout:out std_logic);end xzq;architecture behave of xzqisbeginwith sel selectdcout <=date0 when '0',date1 when others;end behave;///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// ////3.4计数模块计数模块元件设计如图3-4所示:图3-4计数器模块VHDL语言设计如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count60s isport(clk:in std_logic;clk10:in std_logic;set: in std_logic:='1';change: out std_logic;qcout: buffer integer range 0 to 59:=0);end count60s;architecture behave of count60s issignal temp:integer range 0 to 59;signal temp1:std_logic;beginprocess(clk,set,clk10)beginif(set='0') thentemp <= 0;elsif(clk'event and clk='1') thenif(qcout=59) thentemp <= 0;temp1 <= '1';elsetemp <= temp+1;temp1 <= '0';end if;end if;qcout <= temp;change <= temp1;end process;end behave;///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// ////library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count60m isport(clk:in std_logic;change: out std_logic;qcout: buffer integer range 0 to 59:=0;set:in std_logic:='1');end count60m;architecture behave of count60m issignal temp:integer range 0 to 59;signal temp1:std_logic;beginprocess(clk)beginif(clk'event and clk='1') thenif(qcout=59) thentemp <= 0;temp1 <= '1';elsetemp <= temp+1;temp1 <= '0';end if;end if;qcout <= temp;if(set = '1') thenchange <= car;end if;end process;end behave;///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// ////library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count24h isport(clk:in std_logic;qcout: buffer integer range 0 to 23:=0);end count24h;architecture behave of count24h issignal temp:integer range 0 to 23;beginprocess(clk)beginif(clk'event and clk='1')thenif(qcout=23) thentemp <= 0;elsetemp <= temp+1;end if;end if;qcout <= temp;end process;end behave;///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// ////3.5分位电路模块分位电路模块元件设计如图3-5所示图3-5分位电路模块VHDL语言设计如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity decircuit isport(cnt: in integer range 0 to 59;ge: out integer range 0 to 9;shi: out integer range 0 to 9);end decircuit;architecture behave of decircuit isbegin--fenwei circuitprocess(cnt)variable shi_temp:integer;beginge <= cnt mod 10;shi <= cnt / 10;end process;end behave;///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// ////library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity decircuit isport(cnt: in integer range 0 to 59;ge: out integer range 0 to 9;shi: out integer range 0 to 9);end decircuit;architecture behave of decircuit isbeginprocess(cnt)variable shi_temp:integer;beginge <= cnt mod 10;shi <= cnt / 10;end process;end behave;///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// ////library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity decircuit2 isport(cnt: in integer range 0 to 23;ge: out integer range 0 to 9;shi: out integer range 0 to 9);end decircuit2;architecture behave of decircuit2 isbegin--fenwei circuitprocess(cnt)variable shi_temp:integer;beginge <= cnt mod 10;shi <= cnt / 10;end process;end behave;///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// ////3.6数码管动态显示扫描模块图3-6元件设计如图3-6所示:图3-6数码管动态显示扫描模块VHDL语言设计如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity dyn_display_count isport(clk1kHz: in std_logic;qout: out integer range 0 to 7);end dyn_display_count;architecture behave of dyn_display_count issignal temp:integer range 0 to 7 :=0;Beginprocess(clk1kHz)beginif(clk1kHz'event and clk1kHz = '1') thenif(temp=7) thentemp <= 0;elsetemp <= temp + 1;end if;end if;qout <= temp;end process;end behave;///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// ////3.7数码管动态显示模块数码管动态显示模块元件设计如图3-7所示:图3-7数码管动态显示模块VHDL语言设计如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity display isport(qcnt: in integer range 0 to 7;secshi,secge,minshi,minge,hshi,hge:in integer range 0 to 9;seg: out std_logic_vector(6 downto 0);scan: out std_logic_vector(7 downto 0));end display;architecture behave of display issignal data: integer range 0 to 10;beginprocess(qcnt,secshi,secge,minshi,minge,hshi,hge)begincase qcnt iswhen 0 => scan <= "11111110";data <= secge;when 1 => scan <= "11111101";data <= secshi;when 2 => scan <= "11111011";data <= 10;when 3 => scan <= "11110111";data <= minge;when 4 => scan <= "11101111";data <= minshi;when 5 => scan <= "11011111";data <= 10;when 6 => scan <= "10111111";data <= hge;when 7 => scan <= "01111111";data <= hshi;when others => scan <= "11111111";data <=0;end case;end process;process(data)begincase data iswhen 0 => seg <= "0111111";when 1 => seg <= "0000110";when 2 => seg <= "1011011";when 3 => seg <= "1001111";when 4 => seg <= "1100110";when 5 => seg <= "1101101";when 6 => seg <= "1111101";when 7 => seg <= "0000111";when 8 => seg <= "1111111";when 9 => seg <= "1100111";when 10 => seg <= "1000000";when others => seg <= "0111111";end case;end process;end behave;///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// ////第四章仿真与实现硬件仿真结果如图4-1所示图4-1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VHDL数字钟设计报告一. 数字钟总体设计方案:1.1设计目的①正确显示时、分、秒;②可手动校时,能分别进行时、分的校正;③整点报时功能;1.2设计思路数字钟的设计模块包括:分频器、去抖动电路、校时电路、“时、分、秒”计数器、校时闪烁电路、整点报时和译码显示电路。

每一个功能模块作为一个实体单独进行设计,最后再用VHDL的例化语句将各个模块进行整合,生成顶层实体top。

该数字钟可以实现3个功能:计时功能、设置时间功能和报时功能。

二.数字钟模块细节2.1 分频器(fenpin)本系统共需3种频率时钟信号(1024Hz、512Hz、1Hz)。

为减少输入引脚,本系统采用分频模块,只需由外部提供1024Hz基准时钟信号,其余三种频率时钟信号由分频模块得到。

分频原理:为以1024Hz基准时钟经1024分频得到512Hz,1Hz频率时钟信号。

分频器管脚代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fenpin isport(clk1024:in std_logic;clk1,clk512:out std_logic);end fenpin ;architecture cml of fenpin isbeginprocess (clk1024)variable count1: integer range 0 to 512; variable q1: std_logic;beginif clk1024' event and clk1024='1' then if count1=512 thenq1:=not q1;count1:=0;elsecount1:=count1+1;end if;end if;clk1<=q1;end process;process(clk1024)variable count512: integer range 0 to 1; variable q512: std_logic;beginif clk1024' event and clk1024='1' thenif count512=1 thenq512:=not q512;count512:=0;elsecount512:=count512+1;end if;end if;clk512<=q512;end process;end cml;2.2 校时电路(jiaoshi)本模块要实现的功能是:正常计时、校时、校分在每个状态下都会产生不同控制信号实现相应的功能。

校时管脚图代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jiaoshi isport(rst,rvs,select_rvs,mtime,mclkin,hclkin:in std_logic;hclkout,mclkout:out std_logic);end jiaoshi;architecture cml of jiaoshi issignal h_m:std_logic;beginp1:process(rst,rvs,hclkin,mclkin,h_m,mtime)beginif rst='0' thennull;elsif rvs='1' thenhclkout<=hclkin;mclkout<=mCLKin;elsif h_m='0' thenhclkout<=hclkin;mclkout<=mtime;elsehclkout<=mtime;mclkout<=mclkin;end if;end process;p2:process(select_rvs)beginif select_rvs'event and select_rvs='1' thenh_m<=not h_m;end if;end process ;end cml;管脚图仿真图2.3 时计数器(hour)分计数器(mine)秒计数器(second)时计数器管脚图时代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour isport(rst,hclk:in std_logic;hour0,hour1:buffer std_logic_vector(3 downto 0 ));end hour;architecture cml of hour isbeginprocess(rst,hclk,hour0,hour1)beginif rst='0' thenhour0<="0000";hour1<="0000";elsif hclk'event and hclk='1' thenif hour0="0011" and hour1="0010" thenhour0<="0000";hour1<="0000";elsif hour0="1001" thenhour0<="0000";hour1<=hour1+1;elsehour0<=hour0+1;end if;end if;end process ;分计数器管脚图分代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mine isport(rst,mclk:in std_logic;mco:out std_logic;min0,min1:buffer std_logic_vector(3 downto 0 ) );end mine;architecture cml of mine issignal min0_t,min1_t:std_logic_vector(3 downto 0 ); beginprocess(rst,mclk,min0,min1)beginif rst='0' thenmin0<="0000";min1<="0000";elsif mclk'event and mclk='1' thenif min0="0101" and min1="1001" thenmin0<="0000";min1<="0000";mco<='1';elsif min0="0010" and min0="1001" thenmin1<="0011";min0<="0000";mco<='0';elsif min0="1001" thenmin1<=min1+1;min0<="0000";elsemin0<=min0+1;end if;end process ;end cml;秒计数器管脚图秒代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second isport(rst,sclk:in std_logic;sco:out std_logic;sec0,sec1:buffer std_logic_vector(3 downto 0 ) );end second;architecture cml of second issignal sec0_t,sec1_t:std_logic_vector(3 downto 0 ); beginprocess(rst,sclk,sec0,sec1)beginif rst='0' thensec0<="0000";sec1<="0000";elsif sclk'event and sclk='1' thenif sec0="0101" and sec1="1001" thensec0<="0000";sec1<="0000";sco<='1';elsif sec0="0010" and sec0="1001" thensec1<="0011";sec0<="0000";sco<='0';elsif sec0="1001" thensec1<=sec1+1;sec0<="0000";elsesec0<=sec0+1;end if;end if;end process ;end cml;2.4 校时闪烁电路(flashnjiaoshi)如果正在进行校时,flashjiaoshi将实现使当前正在校时项(小时或分钟)以1Hz的频率闪烁,以便于操知道正在被校正。

校时闪烁电路管脚图代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity flashjiaoshi isport(rst,sclk,rvs,select_rvs:in std_logic;hour0in,hour1in,min0in,min1in:in std_logic_vector(3 downto 0 );hour0out,hour1out,min0out,min1out :out std_logic_vector(3 downto 0 ));end flashjiaoshi;architecture cml of flashjiaoshi issignal h_m:std_logic;beginp1:process(rst,sclk,rvs,hour0in,hour1in,min0in,min1in,h_m)beginif rst='0' thennull;elsif rvs='1' thenhour0out<=hour0in;hour1out<=hour1in;min0out<=min0in;min1out<=min1in;elsif h_m='0' thenhour0out<=hour0in;hour1out<=hour1in;if sclk='1' thenmin0out<=min0in;min1out<=min1in;elsemin0out<="1111";min1out<="1111";end if;elsemin0out<=min0in;min1out<=min1in;IF sCLK='1' thenhour0out<=hour0in;hour1out<=hour1in;elsehour0out<="1111";hour1out<="1111";end if;end if;end process p1;p2:process(select_rvs)beginif select_rvs'event and select_rvs='1' then h_m<=not h_m;end if;end process p2;end cml;2.5 整点报时电路整点报时管脚图代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity baoshi isport( clk1024,clk512 : in std_logic;min0,min1 , sec0,sec1 : in std_logic_vector (3 downto 0);speak : out std_logic);end baoshi;architecture cml of baoshi isbeginspeak<=clk512when (min1="0101" and min0="1001" and sec1="0101") and (sec0="0011" or sec0="0101" or sec0="0111") elseclk1024when( min1="0101" and min0="1001" and sec1="0101" and sec0="1001") else '0';end cml;2.6 译码显示电路该显示用的是动态扫描电路译码显示管脚图波形图代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xianshi isport(clk512:in std_logic;h1,h0,m1,m0,s1,s0:in std_logic_vector(3 downto 0 ); seg7:out std_logic_vector(6 downto 0 );select_sig:out std_logic_vector(5 downto 0 ));end xianshi;architecture cml of xianshi issignal data:std_logic_vector(3 downto 0 );signal order:std_logic_vector(2 downto 0 );beginprocess(clk512)beginif clk512' event and clk512='1' thencase order iswhen "000"=>data<=h1;select_sig<="011111";when "001"=>data<=h0;select_sig<="101111";when "010"=>data<=m1;select_sig<="110111";when "011"=>data<=m0;select_sig<="111011";when "100"=>data<=s1;select_sig<="111101";when "101"=>data<=s0;select_sig<="111110";when others=>data<="1000";select_sig<="111111"; end case;if order="101" then order<="000";else order<=order+1;end if;end if;end process ;process(data)begincase data iswhen "0000" =>seg7 <= "0000001";when "0001" =>seg7 <= "1001111";when "0010" =>seg7 <= "0010010";when "0011" =>seg7 <= "0000110";when "0100" =>seg7 <= "1001100";when "0101" =>seg7 <= "0100100";when "0110" =>seg7 <= "0100000";when "0111" =>seg7 <= "0001111";when "1000" =>seg7 <= "0000000";when "1001" =>seg7 <= "0000100";when others =>seg7 <= "1111111";end case;end process ;end cml ;2.7数字钟整体设计(top)本数字钟的设计包括分频器、去抖动电路、校时电路、“时、分、秒”计数器、校时闪烁电路和译码显示电路。

相关文档
最新文档