用VHDL实现数字时钟的设计[1]
基于VHDL语言实现数字电子钟的设计
基于VHDL语⾔实现数字电⼦钟的设计基于VHDL语⾔实现数字电⼦钟的设计⼀.设计要求:1、设计内容选⽤合适的可编程逻辑器件及外围电⼦元器件,设计⼀个数字电⼦钟,利⽤EDA软件(QUARTUS Ⅱ)进⾏编译及仿真,设计输⼊可采⽤VHDL硬件描述语⾔输⼊法)和原理图输⼊法,并下载到EDA实验开发系统,连接外围电路,完成实际测试。
2、设计要求(1)具有时、分、秒计数显⽰功能。
(2)具有清零的功能,且能够对计时系统的⼩时、分钟进⾏调整。
(3)⼩时为⼗⼆⼩时制。
⼆.实验⽬的:1.通过这次EDA设计中,提⾼⼿动能⼒。
2.深⼊了解时事时钟的⼯作原理,以及时事时钟外围硬件设备的组成。
3.掌握多位计数器相连的设计⽅法。
4.掌握⼗进制,六进制,⼆⼗四进制计数器的设计⽅法。
5.继续巩固多位共阴极扫描显⽰数码管的驱动,及编码。
6.掌握扬声器的驱动。
7.LED灯的花样显⽰。
8.掌握CPLD技术的层次化设计⽅法三.实验⽅案:数字系统的设计采⽤⾃顶向下、由粗到细, 逐步分解的设计⽅法, 最顶层电路是指系统的整体要求, 最下层是具体的逻辑电路的实现。
⾃顶向下的设计⽅法将⼀个复杂的系统逐渐分解成若⼲功能模块, 从⽽进⾏设计描述, 并且应⽤EDA 软件平台⾃动完成各功能模块的逻辑综合与优化, 门级电路的布局, 再下载到硬件中实现设计。
因此对于数字钟来说⾸先是时分秒的计数功能,然后能显⽰,附带功能是清零、调整时分。
通过参考EDA 课程设计指导书,现有以下⽅案:1.作为顶层⽂件有输⼊端⼝:时钟信号,清零按键,调时按键,调分按键;输出端⼝有:⽤于接数码管的⼋段码输出⼝,扫描⽤于显⽰的六个数码管的输出⼝。
2.底层⽂件分为:(1)时间计数模块。
分秒计数模块计数为60计数,时计数模块为12计数。
(2)显⽰模块。
显⽰模块由⼀个六进制计数器模块和⼀个七段译码器组成。
进制计数器为六选⼀选择器的选择判断端提供输⼊信号, 六选⼀选择器的选择输出端分别接秒个位、秒⼗位、分个位、分⼗位和时个位、时⼗位的选通位⽤来完成动态扫描显⽰,同时依次输出秒个位、秒⼗位、分个位、分⼗位和时个位、时⼗位数向给译码模块。
VHDL数字时钟设计
VHDL数字时钟设计序⾔这个是我在做FPGA界的HelloWorld——数字钟设计时随⼿写下的,再现了数字钟设计的过程⽬标分析1. 时钟具有时分秒的显⽰,需6个数码管。
为了减⼩功耗采⽤扫描法显⽰2. 按键设置时间,需要对按键进⾏消抖3. 时分秒即为2个60进制计数器,⼀个24进制计数器。
模块设计综上所述,我采⽤模块化设计⽅法进⾏设计,绘制框图如下。
1. 时钟分频产⽣各个模块所需频率时钟。
2. 按键处理模块对按键信号进⾏消抖、变长脉冲为短脉冲等处理。
3. 时间控制模块产⽣时间信号或对时间进⾏设置。
4. 数码管驱动模块负责对时间信号BCD码译码为数码管的段码并且扫描输出到数码管。
下⾯对各个模块分别详细叙述时钟分频模块我打算把时钟分频模块做成“数控N分频器”,通过给分频器传⼊数值N来对时钟信号进⾏N分频。
得到的信号频率为原时钟信号的频率/N,占空⽐为1/N。
稍微考虑下其他模块所需时钟:按键处理模块100Hz ,时间控制模块1Hz,数码管驱动50Hz。
⽽输⼊时钟为33.8688MHz。
我不想传⼊的N数值过⼤,我打算先对时钟进⾏两次:第⼀次调⽤时钟分频模块得到1Mhz,第⼆次得到1Khz。
这样N的位数为10可以满⾜需求。
代码如下library IEEE;use IEEE.STD_LOGIC_1164.all;use IEEE.STD_LOGIC_UNSIGNED.all;entity ClkDiv isport(clk_i:IN STD_LOGIC;N_i: IN STD_LOGIC_VECTOR(9 DOWNTO 0);clk_o:OUT STD_LOGIC);end ClkDiv;architecture behavior of ClkDiv issignal count:STD_LOGIC_VECTOR(9 DOWNTO 0):="0000000001";signal clk_temp:STD_LOGIC:='0';beginprocess(clk_i)beginif(clk_i'EVENT and clk_i='1')thenif (count=N_i)thencount<="0000000001";clk_temp<='1';elsecount<=count+1;clk_temp<='0';end if;end if;end process;clk_o<=clk_temp;end behavior;仿真结果如下:2分频:输出信号为f/2Hz,占空⽐1:23分频:输出信号为f/3Hz,占空⽐1:3按键处理模块去抖动根据以往的经验,按键按下弹起电平会有⼀⼩段⽑刺,可能会引起电路误操作,所以要对按键进⾏消抖处理使变为⼲净的矩形信号。
VHDL数字钟
课程设计报告设计题目:用VHDL语言实现数字钟的设计班级:学号:姓名:指导老师:设计时间:摘要本设计是基于VHDL语言的数字钟,硬件平台是Xilinx的Virtex2系列FPGA 开发板。
该数字钟具备预置年月日时分秒的功能,通过按键还可以改变数字钟显示的内容和进入不同的设置状态,并通过加减按键调整系统时间。
在整个VHDl数字电路系统中,采用层次化设计方法,自顶向下进行设计。
设计中根据系统的功能要求合理划分出层次,进行分级设计和仿真验证,将较为复杂的数字系统逻辑简化为基本的模型从而降低实现的难度。
工程中底层实体实现了年月日、时分秒的双向计数器功能,另外还单独设计了系统的时钟模块,用来生成周期为125Hz的按键扫描时钟和周期为1Hz单位脉冲时钟。
为了消除按键的抖动,为此设计了按键消抖模块,采用了状态机来对按键进行消抖。
为了实现根据年份和月份对当前月的天数的判断逻辑,采用了函数对该逻辑进行分析,给出正确的判断结果。
为了提高利用率,在工程中建立了一个包集文件,对底层实体进行了统一封装,方便顶层的调用。
底层的所有实体系统的顶层主要完成了底层的元件例化,主控状态机对系统的状态转换进行控制,按键响应和时钟重新分配电路则完成了整个系统的控制逻辑。
关键词:层次化设计,元件例化,函数,状态机目录摘要 (2)一、课程设计目的 (4)二、课程设计内容及其要求 (4)三、VHDL程序设计 (5)1.设计方案论证 (5)2.设计思路与方法 (6)3.VHDL源代码及其仿真结果 (7)1、六进制可逆计数器 (7)2、十进制可逆计数器, (9)3、十二进制可逆计数器, (11)4、二十四进制可逆计数器 (13)5、天数计数器 (16)6、判断闰年和月份 (18)7、时钟分频模块 (22)8、按键消抖模块 (24)9、程序包 (27)10、顶层实体(主控状态机) (29)四、编程下载 (38)五、课程设计总结 (38)六、参考文献 (38)一、课程设计目的诞生于1983年的VHDL语言,在1987年被美国国防部和IEEE指定为标准硬件描述语言。
多功能数字电子钟_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数字电子钟的设计与实现摘要:本课程设计完成了数字电子钟的设计,数字电子钟是一种用数字显示秒、分、时的计时装置,由于数字集成电路技术的发展和采用了先进的石英技术,它使数字钟具有走时准确、性能稳定、携带方便等优点。
数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活带来极大的方便。
在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路的能力。
关键词:电子钟;门电路及单次按键;琴键开关目录第一章引言----------------------------------------------------------------11.1 课题的背景、目的------------------------------------------11.2 课程设计的内容------------------------------------------1 第二章EDA与VHDL简介--------------------------------------------------22.1 EDA的介绍---------------------------------------------22.2 VHDL的介绍--------------------------------------------32.2.1 VHDL的用途与优点-----------------------------------------------------------------32.2.2 VHDL的主要特点----------------------------------------------------------------------2.2.3 用VHDL语言开发的流程------------------------------------------------------------ 第三章数字电子钟的设计方案------------------------------------------63.1秒脉冲发生器--------------------------------------------73.2可调时钟模块--------------------------------------------83.3校正电路------------------------------------------------83.4闹铃功能------------------------------------------------103.5日历系统------------------------------------------------11 第四章结束语---------------------------------------------------------------134.1致谢----------------------------------------------------144.2参考文献------------------------------------------------151引言随着科学技术的不断发展,人们对时间计量的精度要求越来越高。
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作为复位信号低电平有效,即高电平时正常循环计数,低电平清零。
基于VHDL数字时钟的设计与实现
1 引言随着科学技术的不断发展,人们对时间计量的精度要求越来越高。
相对机械钟而言,数字钟能实现准确计时,并显示时,分,秒,而且可以方便,准确的对时间进行调节。
在此基础上,还可以实现整点报时的功能。
因此,数字钟的应用十分广泛。
所谓数字时钟,是指利用电子电路构成的计时器。
1.1课题的背景、目的电子技术是一门应用很广,发展极为迅速的科学技术,尤其由于数字电子技术具有高抗干扰能力、更高的可靠性和便于计算机处理等特点,近年来得到更加迅速的发展,数字通讯设备、数字电视、数字照相机、数字摄象机等数字化产品近年如雨后春笋般大量涌现,数字电子技术已经成为今后电子技术发展的主要方向。
现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
通过数字时钟的设计,巩固计算机组成原理课程,理论联系实际,提高分析、解决计算机技术的实际问题的独立工作能力;掌握用VHDL语言编制简单的小型模块,学会数字钟的设计方法,熟悉集成电路的使用方法,初步掌握电子钟的设计方法并实现时间的显示和校对,以及报时的功能,并能对数字电子钟进行扩展。
数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
1.2 课程设计的内容本课程设计实现一个数字时钟,具有按秒走时功能,能够分别显示小时(2位24小时)、分钟(2位)、秒(2位)。
具有整点报时、时间调整功能,且能够对计时系统的小时、分钟进行调整。
基于VHDL语言的数字时钟设计
现代经济信息434基于VHDL语言的数字时钟设计刘颖杰 李 波 吕紫薇 河北农业大学机电工程学院摘要:利用VHDL 硬件语言,在QUARTUSII 的开发环境中设计数字时钟,采用自上而下的实现方法,实现了时(24)、分(60)、秒(60)的计时,秒计时的频率为1Hz,数码管用动态扫描实时显示计数的时、分、秒,校时时,对秒位进行清零,对分和时位以4Hz 的频率递增计数,并且能够在59分钟的第51、53、57秒发出频率为512Hz 的低音,在59分钟的第59秒发出1024Hz 的高音。
关键词:VHDL 语言;数字时钟设计;QUARTUSII中图分类号:TN095 文献识别码:A 文章编号:1001-828X(2018)018-0434-01引言本篇数字钟设计基于单片机,利用的是EDA 技术,EDA 技术的关键之一在于EDA 工具,它是指以计算机为工作平台,融合了应用电子技术、智能化技术、计算机技术最新成果而研制成的电子设计通用工具软件,本文就是介绍一种EDA 工具,VHDL 软件设计数字电子钟。
VHDL 硬件描述语言是EDA 技术的重要组成部分,可用于数字电路与系统的描述、模拟和自动设计,很好的反映了EDA 自上而下的设计原则,本文使用的是EPM240T100C5芯片用来实现数字钟的设计,由于VHDL 语言与具体的电路无关,并且通过QUARTUSII 的开发环境,对各个部分进行模块化,大大的降低了设计的时间,提高设计的效率。
一、功能介绍第一,具有时、分、秒计数显示的功能,并以24小时循环计时。
第二,走时误差小于等于每天10秒。
第三,具有调节分钟、小时、秒以及清零的功能。
第四,具有定时闹钟,可实现整点报时,并用扬声器发出报时的声音,如发出滴答的声音。
在此,利用EDA 软件进行编译及仿真,设计输入采用的时VDHL 硬件描述语言输入法。
并下载到EDA 实验开发系统,然后连接外围电路,从而完成实际测试。
二、系统设计系统整体设计。
基于VHDL语言的数字时钟设计
l rr e : 2 i ayi e 一 4进 制 计 数 器 VHD 语 言 描 述 b e L
u e ie . d lgc 6 .l; s e es t o ij 1 4al
_
程 序 的仿 真 波 形 如 图 2所 示 ,n为 使 能 端 ,o为 计 满 标 e c
1 . 系统 的 工 作 流 程描 述 3
1 数 字 时钟 的 设计 方 案及 框 图
1 设 计 方 案 . 1
系统 要 完 成 的 主要 功能 有 : 1数 字 时 钟 按 2 ) 4h制 设 计 , 6只 数 码 管 显 示 小 时 、 由 分
钟、 ; 秒
如 图 1 时 钟 系 统 具 有 一 个 使 能 端 e 、 个 异 步 清 零 端 。 n一
管 的片 选 信 号 , 时作 为 选 择 显 示 数据 模 块 的地 址 产 生 器 。 同
12 系统 的 模 块 框 图 . 如 图 1 示 。 用 自顶 向 下 的 设 计 方 法 圈 通 过 对 功 能 框 所 采 , 图 的分 析 , 系 统分 模 块 来进 行 设 计 , 后 再 通 过例 化语 句 完 将 然 成 各模 块 间的衔 接 , 终实 现了顶 层描述 , 最 完成 系统预 定功 能 。
时 功 能 [ 并 且 具 有 异 步 清 零 端 cr低 电平 有 效 ) 使 能 端 e 5 1 , l( 、 n
( 电 平 有 效 ) 当 数 字 钟 处 于 正 常 计 时 状 态 时 , 成 小 时 计 高 ; 完
时 , 且 受 分计 时模 块 (0进 制 ) 位 输 出信 号 的控 制 。程 序 并 6 进
示 译码 器 . 即在一个时 间单 元 内只显示 一路信号 的值 ; ⑤动
基于VHDL的数字时钟设计
目录1 概述...................................................................... 错误!未定义书签。
1.1数字时钟的工作原理 (1)1.2设计任务 (1)2 系统总体方案设计 (2)3 VHDL模块电路设计 (3)3.1模块实现 (3)3.1.1分频模块pinlv (3)3.1.2按键去抖动模块qudou (5)3.1.3按键控制模块self1 (6)3.1.4秒、分六十进制模块cantsixty (7)3.1.5时计数模块hourtwenty (9)3.1.6秒、分、时组合后的模块 (9)3.1.7数码管显示模块 (10)3.2数字时钟的顶层设计原理图 (13)3.3系统仿真与调试 (14)结束语 (16)参考文献 (17)致谢 (18)附录源程序代码 (19)1 概述1.1数字时钟的工作原理数字钟电路的基本结构由两个60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计时,当计时到23时59分59秒时,再来一个计数脉冲,则计数器清零,重新开始计时。
秒计数器的计数时钟CLK为1Hz的标准信号,可以由晶振产生的50MHz信号通过分频得到。
当数字钟处于计时状态时,秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号,每一秒钟发出一个中断给CPU,CPU采用NIOS,它响应中断,并读出小时、分、秒等信息。
CPU对读出的数据译码,使之动态显示在数码管上。
1.2 设计任务设计一个基于VHDL的数字时钟,具体功能要求如下:1.在七段数码管上具有时--分--秒的依次显示。
2.时、分、秒的个位记满十向高位进一,分、秒的十位记满五向高位进一,小时按24进制计数,分、秒按60进制计数。
3.整点报时,当计数到整点时扬声器发出响声。
4.时间设置:可以通过按键手动调节秒和分的数值。
此功能中可通过按键实现整体清零和暂停的功能。
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的数字时钟的设计
字 时钟具有 一定 的实 际应 用性 。
关键 词 : 字 时钟 ; 数 VHD Qu ru 1 L; at sI
中 图分 类号 : TN72 0
文 献标 识码 : A
h v n r d c d d a a d r fs a s i o m ut f n t n dg tl l c d sg a e o VH DL a e ito u e ie s n c atm n hp f li u ci ii co k e in b s d n — o a
制及 计算机 应用领 域 的重 要性 日益 突 出。E DA 技 术 就是 依 赖 功 能 强大 的 计算 机 , E A 工 在 D 具 软件 平 台上 , 以硬 件描述 语 言 VHDL为系 统逻 辑 描述 手段 完 成 的设 计 文件 , 对 自动地 完 成 逻 辑优 化和 仿真 测试 , 至实现 既定 的 电子线路 系统功 能 。本 文介 绍 了基于 VHD 直 L硬件 描述 语 言设 计 的 多功能数 字 时钟 的思路和 技 巧。在 Qu ru atsI开发 环境 中编译 和 仿真 了所设 计 的 1
文章 编号 :0 60 9 20 )20 1—5 10—0X(08 0—000
De i n o g t lc o k ba e n VH DL sg fdi ia l c s d o
Z a g Zi a g , u Ge ,Ti n P n h n — n L g a eg
维普资讯
第 2 期
20 08年 6 月
气 象 水 文 海 洋 仪 器
基于VHDL的数字时钟设计
1.引言在传统的硬件电路设计中,主要的设计文件是电路原理图,而采用硬件描述语言(HDL)设计系统硬件电路时主要使用HDL编写源程序。
所谓硬件描述语言,就是该语言可以描述硬件电路的功能、信号连接关系及定时关系。
许多公司开发了自己专有的HDL,但一直没有一种标准的HDL,直到1987年底,IE EE确认美国国防部开发的VHDL 为标准的硬件描述语言(IEEE-1076)。
此后,各EDA公司研制的硬件电路设计工具逐渐向VHDL靠拢,VHDL在电子设计领域得到广泛的接受,1993年,IEEE对VHDL进行了修订,公布了新版本的VHDL(即IEEE-1076-1993)。
现在,VHDL和Verilo g作为IEEE的工业标准硬件描述语言,在电子工程领域,设计人员都极其重视对其的学习研究, VHDL成为事实上的通用硬件描述语言。
2.VHDL的优点及设计流程VHDL支持硬件的设计、验证、综合和测试,以及硬件设计数据的交换、维护、修改和硬件的实现,具有描述能力强、生命周期长、支持大规模设计的分解和已有设计的再利用等优点。
VHDL程序结构特点是将一个电路模块或一个系统分成端口和内部功能算法实现两部分。
对于一个电路模块或者数字系统而言,定义了外部端口后,一旦内部功能算法完成后,其他系统可以直接依据外部端口调用该电路模块或数字系统,而不必知道其内部结构和算法。
VHDL的特点使得电子系统新的设计方法一一“自顶向下”设计方法更加容易实现。
可以先对整个系统进行方案设计,按功能划分成若干单元模块,然后对每个单元模块进一步细分编程,直到简单实现的单元电路。
本设计在MAX+plusII环境中进行,M AX+plusII是美国ALT ERA 公司提供的FPGA/CPL D开发集成环境。
M AX+plusII界面友好,使用便捷被誉为业界最容易的EDA软件。
下面详细论述使用M AX+plusII设计简易电子表的全过程。
3.VHDL设计举例:简易电子表3.1设计思想简易电子表是由各种功能管脚和计数器模块共同构成的,而其中的计数器模块是由两个60进制计数器和一个24进制计数器三个子模块组成的。
基于VHDL的数字时钟的设计
目录一、EDA技术概述 (2)二、Altera Max+plus II 简介 (5)三、设计任务及要求 (6)3.1设计任务 (6)3.2设计要求 (6)四、系统电路设计 (6)4.1 VHDL语言开发的流程 (6)4.2 系统框架图 (7)4.3电路设计思路与实现 (8)五、电路功能调试及测试 (8)5.1测试内容及步骤 (8)5.2 模块说明 (8)5.3 数字钟各模块连接示意图 (9)5.4功能测试 (9)5.5 小结 (9)六、小结 (9)实物图 (17)参考文献 (18)一、EDA技术概述EDA是电子设计自动化Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造CAM)、计算机辅助测试CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术就是以计算机为工具,设计者在EDA 软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA 技术伴随着计算机、集成电路、电子系统设计的发展,经历了计算机辅助设计CAD、计算机辅助工程设计CAE 和电子设计自动化EDA 三个发展过程。
EDA 软件工具种类繁多,如:Smartork 、Orcad 、Tango 、Protel 、Workbench(multsim)、Pspice 及各大可编程器件厂商提供的专用开发软件,如:Altera 公司提供的maxpluss2 、Lattice 公司提供的ispDesignExpert/PAC-Designer、Xilinx 公司提供的Foudation Series/webpack 等。
随着电子设计自动化(EDA)技术的不断发展,其含义也不断发生变化,早期的电子设计自动化多指类似Protel 电路版图的设计自动化概念,这种概念仅限于电路元器件与元器件之间即芯片外设计自动化,随着微电子技术的不断发展,当今的EDA 技术更多的是指可编程逻辑器件的设计技术,即芯片内的电路设计自动化。
基于硬件描述语言(VHDL)的数字时钟设计
品设计 开发技 术 的发 展 . 者 以微 细加 工 技 术 为 代 前
表, 而后 者 的代 表 就 是 电子 设 计 自动 化 ( l t nc ee r i co ds na t t , D 技 术 . D 以计 算机 为工作 平 ei uo i E A) g mac EA
计, 而两个 不 同侧 面 的设 计 人 员 各 自从 事 自身 的 工 作, 彼此 很少涉 足对 方 的工作 领域 . 随着 计算 机 技 术 的发展 和硬件描 述语 言 的 出现 , 种 界 限被 打 破 , 这 即 软件 设计 人员 也 同样 可借 助 V D H L设计 出符 合 不 同
( col f l t nc Ifr ao n o m n ai sE gne n , S ho o e r i nom t nadC m u i t n nier g E co s i c o i .叭i nvr t o T cnlg , i j 0 1 1 C ia r i U i sy f ehooy Ta i 3 0 9 , h ) i n e i nn n
Absr c t a t:VHDL c n be u e o d s rb a s d t e c e, sm ua e a d de in diia y tm utmai al No d y i i lt n sg gtls se a o tc y. l wa a s, i b c me e t e o sa k y tc oo n utmai lcr ni sg e hn lg i a o t ee to cde in.Thee i o fs p ro t n t sde c pt n l n ua .Thi ri l nto u e h y c r sa lto u e r y i hi s r i a g ge i i i o sa tce i r d c st e meho n heprc s sn t d a d t o e s u ig VHDL t sg i t y tm y a x mpl fdg t lc e in.Ther s l gv n i hi ode i a dgi s se b n e a n l a eo iia co k d sg l e ut i e n t s p p r s o h tVHDL i n ft esr n e ttosi r a e h wsta so eo h to g s o l nhadwa e d s rpto n ti e il mo h sg eh d. Th r e c i i na d i saf xb ea ngt ede i m to l n e meho ie n t i a e a e c h fiu t fd gtls se d sg nd i p o e te wo k e c e c 、 t d gv n i hs p p rc n r du e te di c ly o i i y tm e in a m r v h r f i n y f a i
用VHDL语言编写的数字钟程序
永州职业技术学院课程设计课程名称:EDA技术实用教程题目:基于FPGA的数字钟设计系、专业:电子技术系应用电子年级、班级:07级电子大专学生姓名:**指导老师:***时间:2008年12月目录一、系统设计………………………………………………………..1.1设计要求……………………………………………………1.1.1任务………………………………………………..1.1.2要求……………………………………………….1.1.3题目分析…………………………………………二.方案论证与比较…………………………………2.1方案一…………………………………………2.2 方案二…………………………………………2.3 方案三…………………………………………三、设计思路……………………………………………………3.1硬件模块………………………………………………3.2软件模块………………………………………………….四、调试情况………………………………………………….五、系统调试…………………………………………………六、心得体会……………………………………………………... 附:参考文献……………………………………………………..用VHDL语言编写的数字钟程序摘要:本设计要求一个12进制或24进制的具有时、分、秒计时功能的数字钟,并要求能进行时、分、秒调整,每逢时有报时功能。
数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
本设计基于FPGA芯片的数字钟的设计,通过多功能数字钟的设计思路,详细叙述了整个系统的硬件、软件实现过程,实现了时间的显示和修改功能、报时功能等,并尽可能的减少误差,使得系统可以达到实际数字钟的允许误差范围内。
关键词:FBGA、数码管、按键一、系统设计1.1 设计要求1.1.1 任务设计并制作一个数字钟,通过设计,掌握电子设计的一般思路,学习电子设计的一般方法。
EDA课程设计——基于VHDL语言的数字时钟设计(可编辑)
EDA课程设计——基于VHDL 语言的数字时钟设计(可编辑)(文档可以直接使用,也可根据实际需要修改使用,可编辑推荐下载)一、设计要求 0二、设计原理及框图 01、设计原理 02、结构框图 0三、设计过程 (1)1、模块化设计 (1)2、顶层文件生成 (2)四、仿真调试过程 (3)1、各模块时序仿真图 (3)2、仿真过程中遇到的问题 (4)五、设计体会及收获 (4)一、设计要求1、稳定的显示时、分、秒。
2、当电路发生走时误差时,要求电路有校时功能。
3、电路有整点报时功能。
报时声响为四低一高,最后一响高音正好为整点。
二、设计原理及框图1、设计原理系统框图由六个模块组成,分别为:秒、分、时计数模块,整点报时模块,LED动态显示扫描模块,调时控制模块组成。
其工作原理是:基准脉冲输入信号同时加到秒、分、时、分隔符的脉冲输入端,采用并行计数的方式,秒的进位接到分的使能端上,秒的使能借到分隔符的使能上,分得接到时的使能端上,完成秒、分、时和分隔符的循环计数。
整点报时是根据分的A、B输出同时为0时,整点报时模块输出高电平控制报时。
LED显示扫描模块根据输入的扫描信号CKDSP轮流选通秒、分、时、分隔符的8位八段数码管,LED显示译码器完成计数器输出的BCD的译码。
2、结构框图三、设计过程1、模块化设计(1)秒计时模块秒计时模块由一个60位计数器为主体构成,其输入输出端口组成为:Clk:计时时钟信号Reset:异步清零信号Setmin:分钟设置信号Enmin:使能输出信号Daout[6:0]:BCD码输出(2)分计时模块分计时模块由一个60位计数器为主体构成,其输入输出端口组成为:Clk、clk1:计时时钟信号Reset:异步清零信号Sethour:小时设置信号Enmin:使能输出信号Daout[6:0]:BCD码输出(3)时计时模块时计时模块由24位计数器为主体构成,其输入输出端口组成为:Clk:计时时钟信号Reset:异步清零信号Daout[6:0]:BCD码输出(4)显示模块系统时间输出由六个七段数码管显示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
收稿日期:2007-06-04 第一作者 刘竹林 男 27岁 助教用V HDL 实现数字时钟的设计刘竹林 李晶骅(十堰职业技术学院电子工程系,湖北十堰442000)摘 要:以一款数字钟设计为例,较详细的介绍了如何用VHDL 语言设计数字电路,并给出了部分程序、仿真波形图,并在MAX +plusII 中进行编译、仿真、下载。
由此说明利用VHDL 开发数字电路的优点。
关键词:VHDL ;设计;数字钟;应用电路中图分类号:TN953 文献标识码:A0 引言VHDL 硬件描述语言在电子设计自动化(EDA )中扮演着重要的角色,它的出现极大的改变了传统的设计方法、设计过程乃至设计观念。
由于采用了“自顶向下”(Top 2Down )的全新设计方法,使设计师们摆脱了大量的辅助设计工作,而把精力集中于创造性的方案与概念构思上,用新的思路来发掘硬件设备的潜力,从而极大地提高了设计效率,缩短了产品的研制周期。
这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。
在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。
然后用综合优化工具生成具体门电路的网表,其对应的物理实现级可以是印刷电路板或专用集成电路。
由于设计的主要仿真和调试过程是在高层次上完成的,这不仅有利于早期发现结构设计上的错误,避免设计工作的浪费,而且也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。
1 用V HDL 设计一款数字钟我们设计的数字时钟原理框图如图1。
其基本功能划分为:计数模块(包括秒、分、时)、译码模块、扫描显示控制模块。
计数模块由两个60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计数,当计数到23点59分59秒的时候,即一天结束,计数器清零,新的一天重新开始计数。
图1 数字时钟原理框图秒计数器的计数时钟信号为1Hz 的标准信号,可以由系统板上提供的4MHz 信号通过222分频得到。
秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号。
设计一个同时显示时、分、秒6个数字的数字钟,则需要6个七段显示器。
若同时点亮这6个七段显示器,则电路中会产生一个比较大的电流,很容易造成电路烧坏,我们通过扫描电路来解决这一问题,通过产生一个扫描信号CS (0)-CS (5)来控制6个七段显示器,依次点亮6个七段显示器,也就是每次只点亮一个七段显示器。
只要扫描信号CS (0)-CS (5)的频率超过人的眼睛视觉暂留频率24Hz 以上,就可以达到尽管每次点亮单个七段显示器,却能具有6个同时显示的视觉效果,而且显示也不致闪烁抖动。
其中6位扫描信号一方面控制七段显示器依次点亮,一方面控制6选1选择器输出相应显示数字。
2 模块设计2.1 VHDL 语言的基本结构一个独立的设计实体通常包括:实体(EN TIT Y )、结构体(ARCHITECTURE )、配置(CONFIGURA TION )、包集合(PACKGE )、和库(L IBRAR Y )5个部分。
其中实体用于描述所设计的系统的外部接口信号;构造体用于描述系统内部的结构和行为;建立输入和输出之间的关系;配置语句安装具体元件到实体—结构体对,可以被看作是设计的零件清单;包集合存放各个设计模块共享的数据类型、常数和子程序等;库是专门存放预编译程序包的地方。
VHDL 程序设计基本结构如图2。
图2 VHDL 程序设计基本结构2.2 各模块的实现2.2.1 计数模块(建立VHDL 语言的工程文件)计数模块由两个60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计数。
其VHDL 源程序相差不大由于篇幅有限,这里我们以秒模块的实现为例。
程序如下:library ieee ;use ieee.std -logic -1164.all ;entity counter -60-bcd is山西电子技术2008年第1期 应用实践 port (cen ,clk ,settime :in std -logic ; q -one :out integer range 0to 9; q -ten :out integer range 0to 9; co :out std -logic );end counter -60-bcd ;architecture rtl of counter -60-bcd is signal coo :std -logic ; signal clkI :std -logic ; component dff is port (clk ,d :in std -logic ; q :out std-logic ); end component ;begin process (clk ) variable s -one :integer range 0to 9; variable s -ten :integer range 0to 9; begin if clk ’event and clk =’1’then if settime =’1’then if s -one <9thens -one :=s -one +1; else s -one :=0;if s -ten <5thens -ten :=s -ten +1;else s -ten :=0; end if ; end if ; elsif cen =’1’then if s -one <9thens -one :=s -one +1; else s -one :=0; if s -ten <5thens -ten :=s -ten +1; else s -ten :=0; end if ; end if ; end if ; end if ; q -one <=s -one ; q -ten <=s -ten ; if s -ten =5and s -one =9then co <=’1’; else co <=’0’; end if ;end process ;clkI <=not clk ;U1:dff port map (clkI ,co ,co );2.2.2 多路选择控制模块多路选择控制模块中扫描控制电路产生扫描信号一方面控制6个七段显示器每次只点亮一个七段显示器;另一方面同时控制6×1多路选择器输出相应的显示数字。
由于篇幅有限代码就省略了。
2.2.3 显示译码模块的设计该模块描述了一个共阴极数码管显示驱动电路,其输入为选择控制模块的输出,输出信号分别接在数码管的的7个段。
例如当输入为‘0’时,输出就为“1111110”,数码管显示0。
由于篇幅有限代码就省略了。
3 各模块的编译、仿真各模块设计完成后,就要对其进行功能仿真。
打开MAX +plusII ,选择菜单File/New 命令,进入出现对话框选择中选择“Text Editor File ”选项,即进入文本编辑方式新建一个工程。
在编译之前要此工程设置为当前工程。
若没有错误则编译通过。
新建仿真文件,输入保存。
这里以秒模块的仿真为例,其结果如图3。
图3 秒模块的仿真结果4 综合在编译各模块的同时,生成符号文件,把各符号文件按照逻辑功能连接起来(如图4),当然也可以利用元件例化语句进行,然后加上输入输出端口构成顶层系统然后在进行编译。
5 程序下载至芯片1)点击主菜单Assign/Pin/Location/Chip 进行芯片脚位设置。
2)将实体定义的端口名字和下载芯片的管脚进行具体对应。
3)最后再进行一次编译,这时系统将产生可以向EPF10K10下载的文件。
4)将带芯片的实验板通过下载电缆与计算机并口相连,然后给实验板通电。
5)打开下载窗口选择下载方式、下载器件型号最后点击Configure 按钮将程序写入芯片中。
连接外围器件即可工作。
6 结束语本文通过数字钟实现的例子展现出了现代电子设计新方法2EDA 技术的灵活性,层次化设计方式的优点。
VHDL 语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性。
用VHDL 语言实现电路设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺(下转第54页)4)系数,一般取为0.06~0.2。
3.3 仿真结果设有12个城市(或景点),今从某市出发遍历各城市,使之旅行费用最少(即找出一条旅费最少的路径)。
我们取种群代数为80,染色体个数为100,变异概率为0.2,评价函数alpha =0.1;利用Matlab 所编的函数只要花7.094秒就可以得到最短路线。
染色体种群进化过程实例如图3所示:参考文献[1] 周明,孙树栋.遗传算法原理及应用[M ].北京:国防工业出版社,2002.[2] 刘勇,康立山,陈毓屏,等.非数值并行算法—遗传算法[M ].北京:科学出版社,1995.[3] 许家玉,经亚枝.基于DSP +FPG A 的遗传算法硬件实现[J ].微计算机信息,2005,21-1:127-128.[4] 刘海,郝志峰,林智勇.改进遗传交叉算子求解TSP 问题[J ].华南理工大学学报(自然科学版),2002,30(12):71-73.图3 染色体种群进化过程Solution of T raveling Salesman Problem B ased on Genetic AlgorithmWang Shui 2ping Lu Hua Zhao Guang 2yu(N aval Representatives Of f ice of S hanghai Power S tation A uxiliary Equipment Works Co.,L td ,S hanghai 200090,China )Abstract :The working method of traveling salesman problem based on genetic algorithm is given in application ,and combiningthe practical example ,the process of the solution and the results simulation are also introduced in this paper.According to the analy 2sis ,the improved genetic algorithm can get the better result than the traditional genetic algorithm.This shows that the method has better feasibility and practicability.K ey w ords :TSP ;genetic algorithm ;crossover operator (上接第48页)相关的因素花费过多的时间和精力。