EDA数字时钟实验_第1页
EDA数字时钟实验_第2页
EDA数字时钟实验_第3页
EDA数字时钟实验_第4页
EDA数字时钟实验_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录1引言51.1课题的背景、目的51.2设计的内容52 EDA、VHDL简介62.1EDA技术62.2硬件描述语言VHDL6VHDL的简介6VHDL语言的特点7VHDL的设计流程73 数字钟设计83.1数字钟的工作原理83.1数字钟的实现流程83.2晶体振荡器123.3分频电路123.2部分程序实现124 系统仿真221.小时24制电路仿真图222.分钟59电路仿真图233.秒59制电路仿真图234.59转码电路仿真图235.24转码电路仿真图246.动态扫描电路仿真图247.整点报时电路仿真图25结束语26致谢26参考文献26附录271 引 言随着社会的发展,科学技术也在不断的进步。特别是

2、计算机产业,可以说是日新月异,数字钟作为计算机的一个组成也随之逐渐进入人们的生活,从先前的采用半导体技术实现的数字钟到现在广泛应用的采用高集成度芯片实现的数字钟。数字钟正在向着功能强,体积小,重量轻等方向不断发展,本设计主要介绍的是一个基于超高速硬件描述语言VHDL对数字钟中显示电路进行编程实现。近年来,集成电路和计算机应用得到了高速发展,现代电子设计技术已迈入一个崭新的阶段,具体表现在:(1)电子器件及其技术的发展将更多地趋向于为EDA服务;(2)硬件电路与软件设计过程已高度渗透;(3)电子设计技术将归结为更加标准、规范的EDA工具和硬件描述语言VHDL的运用;(4)数字系统的芯片化实现手段

3、已成主流。因此利用计算机和大规模复杂可编程逻辑器件进行现代电子系统设计已成为电子工程类技术人员必不可少的基本技能之一。1.1课题的背景、目的本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,了解EDA技术,加深对计算机体系结构的理解。通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,学习VHDL基本单元电路的综合设计应用。通过对实用数字钟的设计,巩固和综合运用计算机原理的基本理论和方法,理论联系实际,提高IC设计能力,提高分析、解决计算机技术实际问题的独立工作能力。通过课程设计深入理解计算机的组成原理,达到课程设计的目标。1.2 设计的内容利用VHDL设计

4、数字钟显示电路的各个模块,并使用EDA工具对各模块进行仿真验证。数字钟显示电路的设计分为下面几个模块:秒计数模块、分计数模块、小时计数模块、整点报时.、动态扫描显示、转码、分频。完成以后把各个模块整合后,显示相应的输出状态。2 EDA、VHDL简介2.1 EDA技术 EDA是电子设计自动化(Electronic Design Automation)缩写,EDA是以计算机为工具,根据硬件描述语言HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。典型的EDA

5、工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。 2.2 硬件描述语言VHDL VHDL的简介 VHDL的英文全名是Very-High-Speed Integrated Circuit HardwareDescription Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为

6、标准硬件描述语言 。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世

7、纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。 VHDL语言的特点1.用VHDL代码而不是用原理图进行设计,意味着整个电路板的模型及性能可用计算机模拟进行验证。2.VHDL元件的设计与工艺无关,与工艺独立,方便工艺转换。3.VHDL支持各种设计方法,自顶向下、自底向上或者混合的都可以。4.可以进行从系统级到逻辑级的描述,即混合描述。5.VHDL区别于其他的HDL,已形成标准,其代码在不同的系统中可交换建模。 VHDL的设计流程1.设计规范的定义明确这个系统有哪些设计要求,和你要想到达的目标。2.采用VHDL进行设计描述这部分包括设计规划和程序的编写。设计规划主要包括设计方

8、式的选择及是否进行模块划分。设计方式一般包括直接设计,自顶向下和自底向下设计,这个和其他软件语言差不多。最重要还是模块划分。3.VHDL程序仿真4.综合、优化和布局布线综合指的是将设计描述转化成底层电路的表示形式,其结果是一个网表或者是一组逻辑方程;优化,这个主要是为了提高程序的执行效率及减少资源的利用;布局布线,指的是将逻辑关系转化成电路连接的方式。5.仿真这个与VHDL程序仿真不同,这个不仅是对逻辑方面的验证,还要进行时序功能验证。6. 器件编程3 数字钟设计3.1数字钟的工作原理数字钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时

9、59分59秒,另外应有设置启/停开关。当按下启/停开关,将启动数字钟开始计时,当再按一下启/停开关时,将终止数字钟操作。复位开关可以在任何情况下使用,即便在数字中工作过程中,只要按一下复位开关,数字钟就清零,并做好下次工作的准备。具清零的功能,且能够对数字钟系统的小时、分钟进行调整。具有整点报时功能等附加功能。因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”,计数器、校时电路、报时电路和振荡器组成。干电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器

10、来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。3.2数字钟的实现流程 静态扫描: 分频电路晶体震荡电路 20M 1Hz动态扫描:思路一:位选信号 段选信号译码驱动分十位分个位秒十位秒个位时个位时十位分转码秒转码小时转码 小时计数024分计数059秒计数059晶体震荡电路分频电路 20M 1Hz思路二:秒个位计数02秒个位计数05秒个位计数0

11、9秒个位计数09秒个位计数05秒个位计数09分频电路晶体震荡电路 20M 1Hz数字钟工作报时:分、秒为0 否 是 驱动报时数字钟工作调整小时、分钟调整键按下 否 是 调整键按下 否 是加1调整3.2晶体振荡器晶体振荡电路是构成数字式时钟的核心,它保证了时钟走时准确及稳定。晶体振荡器它的作用是产生时间标准信号。数字钟的精度主要取决于时间标准信号的频率及其稳定度。因此,一般采用石英晶体振荡器经过分频得到这一信号。3.3分频器电路分频器电路将20MHZ的高频方波信号经20M次分频后得到1Hz的方波信号供秒计数器进行计数。分频器实际上也就是计数器。3.4 部分程序实现思路一实现:(1) 具有调整功能

12、的24、59进制程序LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt24 ISPORT( CLK1,RES,EN,KONGZHI,CLK2: IN STD_LOGIC; COUNT:OUT STD_LOGIC_VECTOR(4 DOWNTO 0); CQ : OUT STD_LOGIC);END;ARCHITECTURE behav OF cnt24 ISSIGNAL CLK : STD_LOGIC;BEGIN PROCESS(CLK1,EN,KONGZHI,RES) VAR

13、IABLE CQI:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINCASE KONGZHI ISWHEN '0'=> CLK <=CLK1;WHEN '1'=> CLK <=CLK2;WHEN OTHERS =>CLK<='0'END CASE; IF RES='1' THEN CQI:="00000" ELSIF CLK'EVENT AND CLK='1' THEN IF EN='1' THEN IF CQI&l

14、t;24 THEN CQI:=CQI+1;ELSE CQI:=(OTHERS=>'0'); END IF; END IF;END IF; IF CQI=24 THEN CQ<='1'ELSE CQ<='0' END IF;COUNT<=CQI;END PROCESS;END behav;(2)具有清零 暂停、复位功能的59进制程序LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt59m ISPORT( CL

15、K,STOP,RES,EN: IN STD_LOGIC; COUNT:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); CQ : OUT STD_LOGIC);END;ARCHITECTURE behav OF cnt59m ISSIGNAL CK : STD_LOGIC;BEGIN PROCESS(CLK,EN,STOP,RES) VARIABLE CQI:STD_LOGIC_VECTOR(5 DOWNTO 0);BEGIN CK<=(CLK OR STOP);IF RES='1' THEN CQI:="000000" ELSIF

16、CK'EVENT AND CK='1' THEN IF EN='1' THEN IF CQI<59 THEN CQI:=CQI+1;ELSE CQI:=(OTHERS=>'0'); END IF; END IF;END IF; IF CQI=59 THEN CQ<='1'ELSE CQ<='0'END IF;COUNT<=CQI;END PROCESS;END behav;(3) 转码功能程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;US

17、E IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY zhuanma IS PORT(SHURU: IN INTEGER RANGE 0 TO 59; GE : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SHI : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END;ARCHITECTURE bahave OF zhuanma ISBEGINPROCESS(SHURU)BEGINCASE SHURU ISWHEN 0|10|20|30|40|50 => GE &l

18、t;="0000"WHEN 1|11|21|31|41|51 => GE <="0001"WHEN 2|12|22|32|42|52 => GE <="0010"WHEN 3|13|23|33|43|53 => GE <="0011"WHEN 4|14|24|34|44|54 => GE <="0100"WHEN 5|15|25|35|45|55 => GE <="0101"WHEN 6|16|26|36|46|56

19、 => GE <="0110"WHEN 7|17|27|37|47|57 => GE <="0111"WHEN 8|18|28|38|48|58 => GE <="1000"WHEN 9|19|29|39|49|59 => GE <="1001"WHEN OTHERS => GE <="0000"END CASE;CASE SHURU ISWHEN 0|1|2|3|4|5|6|7|8|9 => SHI <="000

20、0"WHEN 10|11|12|13|14|15|16|17|18|19 => SHI <="0001"WHEN 20|21|22|23|24|25|26|27|28|29 => SHI <="0010"WHEN 30|31|32|33|34|35|36|37|38|39 => SHI <="0011"WHEN 40|41|42|43|44|45|46|47|48|49 => SHI <="0100"WHEN 50|51|52|53|54|55|56|57|

21、58|59 => SHI <="1001"WHEN OTHERS => SHI <="0000"END CASE;END PROCESS;END bahave;(4)动态扫描程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY dtsm ISPORT(CLK : IN STD_LOGIC; SR1 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); SR2 : IN STD_LOGIC_VECTOR(3

22、DOWNTO 0); SR3 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); SR4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); SR5 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); SR6 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); WEI : OUT STD_LOGIC_VECTOR(5 DOWNTO 0);DUAN : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END;ARCHITECTURE behave OF dtsm ISSIGNAL cnt6 : STD_LO

23、GIC_VECTOR(2 DOWNTO 0);SIGNAL A :STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN P1 : PROCESS(cnt6)BEGINCASE cnt6 ISWHEN "000" => WEI <="000001" A <=SR1;WHEN "001" => WEI <="000010" A <=SR2;WHEN "011" => WEI <="000100" A <=SR3

24、;WHEN "100" => WEI <="001000" A <=SR4;WHEN "101" => WEI <="010000" A <=SR5;WHEN "110" => WEI <="100000" A <=SR6;WHEN OTHERS => NULL;END CASE;END PROCESS P1;P2 : PROCESS(CLK)BEGINIF CLK'EVENT AND CLK = '

25、1' THENIF cnt6<6 THEN cnt6<=cnt6+1; ELSE cnt6<=(OTHERS=>'0');-IF cnt4 ="100" THEN-cnt4<="000" -ELSE cnt4<=cnt4+1;END IF;END IF;END PROCESS P2;P3: PROCESS(A)BEGIN CASE A ISWHEN "0000"=>DUAN<="10111111"WHEN "0001"=&g

26、t;DUAN<="10000110"WHEN "0010"=>DUAN<="11011011"WHEN "0011"=>DUAN<="11001111"WHEN "0100"=>DUAN<="11100110"WHEN "0101"=>DUAN<="11101101"WHEN "0110"=>DUAN<="11111101

27、"WHEN "0111"=>DUAN<="10000111"WHEN "1000"=>DUAN<="11111111"WHEN "1001"=>DUAN<="11101111"WHEN OTHERS =>NULL; END CASE;END PROCESS P3;END behave;(5)具整点报时程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_U

28、NSIGNED.ALL; ENTITY baoshi ISPORT(CLK :IN STD_LOGIC; FENZHONG : IN STD_LOGIC_VECTOR(5 DOWNTO 0); XIAOSHI : IN STD_LOGIC_VECTOR(4 DOWNTO 0); CQ : OUT STD_LOGIC);END;ARCHITECTURE behav OF baoshi ISBEGINPROCESS(CLK)VARIABLE FENBIAN :STD_LOGIC_VECTOR(10 DOWNTO 0);VARIABLE EN :STD_LOGIC;BEGIN FENBIAN(0):

29、=FENBIAN(0);FENBIAN(1):=FENBIAN(1);FENBIAN(2):=FENBIAN(2);FENBIAN(3):=FENBIAN(3);FENBIAN(4):=FENBIAN(4);FENBIAN(5):=FENBIAN(5);FENBIAN(6):=XIAOSHI(0);FENBIAN(7):=XIAOSHI(1);FENBIAN(8):=XIAOSHI(2);FENBIAN(9):=XIAOSHI(3);FENBIAN(10):=XIAOSHI(4);CASE FENBIAN ISWHEN "00000000000"=> EN :=

30、9;1'WHEN OTHERS => EN :='0'END CASE;IF EN='1' THENCQ<=CLK;END IF;END PROCESS;END behav;思路二实现:(1) 非压缩BCD码的24、59进制程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Minute is port(clk:in std_logic; clk2:in std_logic; tiao:in std_logic; clr:in st

31、d_logic; qh,ql:out std_logic_vector(3 downto 0); co:out std_logic );end;architecture a of Minute issignal zqh,zql:std_logic_vector(3 downto 0);signal clk_temp: std_logic;beginprocess(clk,clk2,tiao,clk_temp)variable co_temp: std_logic;begin if tiao='1' then clk_temp<=clk2; co<='0

32、9; else clk_temp<=clk; co<=co_temp; end if;if clr='1' then zqh<="0000" zql<="0000" co<='0'elsif clk_temp'event and clk_temp='1' then if zqh="0101"and zql="1001" then zqh<="0000" zql<="0000" c

33、o_temp:='1' elsif zql="1001" then zql<="0000" zqh<=zqh+1; else zql<=zql+1; co_temp:='0' end if;end if;end process;qh<=zqh;ql<=zql;end;(2) 动态扫描程序library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity scan is port( clk: in s

34、td_logic; sh: in std_logic_vector(3 downto 0); sl: in std_logic_vector(3 downto 0); mh: in std_logic_vector(3 downto 0); ml: in std_logic_vector(3 downto 0); hh: in std_logic_vector(3 downto 0); hl: in std_logic_vector(3 downto 0); leda:out std_logic;ledb:out std_logic;ledc:out std_logic;ledd:out st

35、d_logic;lede:out std_logic;ledf:out std_logic;ledg:out std_logic; xuan0:out std_logic; xuan1:out std_logic; xuan2:out std_logic; xuan3:out std_logic; xuan4:out std_logic; xuan5:out std_logic ); end scan; architecture behvd of scan is SIGNAL xuan: std_logic_vector(5 downto 0);signal qtemp: std_logic_

36、vector(2 downto 0); signal num: std_logic_vector(3 downto 0);signal led: std_logic_vector(6 downto 0); begin p1:process (clk) begin if (clk'event and clk= '0') then if( qtemp < 5) then qtemp <=qtemp+1; else qtemp <= "000" end if; end if; end process;p2:PROCESS(qtemp,sh

37、,sl,mh,ml,hh,hl) begin case qtemp is when "000"=>xuan<="000001"num<=sl; when "001"=>xuan<="000010"num<=sh; when "010"=>xuan<="000100"num<=ml; when "011"=>xuan<="001000"num<=mh; when &q

38、uot;100"=>xuan<="010000"num<=hl; when "101"=>xuan<="100000"num<=hh; when others =>xuan<="100000"num<=hh; end case; end process; p3:process(num)begincase num is when "0000" =>led<="1111110" when "0001" =&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论