EDA课程设计数字时钟的设计

上传人:M****1 文档编号:473104422 上传时间:2022-10-19 格式:DOC 页数:20 大小:283KB
返回 下载 相关 举报
EDA课程设计数字时钟的设计_第1页
第1页 / 共20页
EDA课程设计数字时钟的设计_第2页
第2页 / 共20页
EDA课程设计数字时钟的设计_第3页
第3页 / 共20页
EDA课程设计数字时钟的设计_第4页
第4页 / 共20页
EDA课程设计数字时钟的设计_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《EDA课程设计数字时钟的设计》由会员分享,可在线阅读,更多相关《EDA课程设计数字时钟的设计(20页珍藏版)》请在金锄头文库上搜索。

1、EDA课程设计论文 课程设计(论文)任务书专业班级: 学生姓名: 指导教师(签名): 一、课程设计(论文)题目数字时钟二、本次课程设计(论文)应达到的目的课程设计(论文)是实践教学环节的重要组成部分,其目的是通过对相关理论知识的应用和对相关软件的实际操作,使学生能过更好地掌握课程内容以及相关编程的基本技能,以更有效地达到教学目的,提高学生的专业素质。三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技术参数、设计要求等) 要求: 课程设计(论文)要求学生在认真复习教材的基础上,查阅相关资料、认真阅读相关的设计要求,独立按时完成任务;课程设计的说明书、论文要求简洁、通顺、计算正确,程序

2、完整、清楚、规范。主要内容: 数字时钟的基本信息:1、能够显示1/10秒、秒、分、时,数码管采用分时复用,有清零按健、停止/开始按键。2、熟练掌握各种计数器的使用,能用计数器构成十进制、六十进制、十二进制等所需进制的计数器。 3、能用低位的进位输出构成高位的计数脉冲。四、应收集的资料及主要参考文献: 可编程逻辑器件原理、开发与应用 赵曙光 五、审核批准意见教研室主任(签字) 目 录一、数字时钟设计的背景2二、数字时钟设计的目的2三、数字时钟的功能3四、数字时钟的设计31设计思路31.1数字时钟控制器的输入输出总体框图31.2数字时钟控制器的总体设计框图32. 方案论证42.1 数字钟设计方案论

3、证43. 单元模块设计部分43.1 时钟分频模块43.2 时分秒计时控制电路模块63.3译码显示模块154. 系统仿真164.1数字钟仿真图164.2 数字钟原理图17五、课程设计总结19一、数字时钟设计的背景本学期我们完成了EDA技术基础课程的学习,相应的已经学习了有关的硬件语言:VHDL语言,通过课程学习过程中理论与实践的结合,已经对应用VHDL语言和EDA技术来设计电路有一些了解。二、数字时钟设计的目的1.掌握多级计数器级联的原理和其设计方法;2.掌握多个数码管显示的原理与方法;3.掌握用FPGA技术的层次化设计方法;4.进一步掌握用VHDL硬件描述语言的设计思想,熟练的用原理图方式或V

4、HDL语言设计各种进制的数字计数器(6进制、10进制、12进制);5.了解有关数字系统的设计。三、数字时钟的功能1.能显示1/10秒、秒、分、时,能以12H循环计数。2.精度是0.1秒。3.具有系统清零、暂停系统并使系统重新工作的功能。4可以进行调时调分调秒的功能扩展。四、数字时钟的设计1设计思路基于VHDL语言,用TOP_DOWN的思想进行设计。1.1数字时钟控制器的输入输出总体框图数字时钟控制器 Clk 时钟输入 CLRN(清零端)七段数码管的输入(开始停止信号) START/STOP1.2数字时钟控制器的总体设计框图CLRN(清零端) 译码模块时分秒计时控制电路与门T触发器置“1”STA

5、RT/STOP分频器CLK2. 方案论证2.1 数字钟设计方案论证十进制计数器、六进制计数器、二进制计数器以及由此级联成的六十进制计数器、十二进制计数器构成数字时钟的计数部分;输入25MHZ的时钟经分频器产生100HZ的时钟进入计数器电路;对于停止开始的控制部分功能的实现有两种方案:方案一 有普通门电路连接计数器的clrn、ldn和en,使其分别为“1”、“1”和“0”,则有各计数器真值表可知输出Q值不变,从而实现该功能。方案二 输入一个由T触发器构成的控制时钟,来实现该功能。本设计采用的是方案二。3. 单元模块设计部分单元设计模块分为三大部分:时钟分频模块,时分秒计时控制电路模块和译码显示模

6、块。3.1 时钟分频模块如图3.1所示:图3.1程序如下:library ieee;use ieee.std_logic_1164.all;entity div is port(clr,clk: in bit;q: buffer bit);end div;architecture a of div is signal counter:integer range 0 to 12499;begin process(clr,clk) begin if (clk=1 and clkevent) then if clr=1 then counter=0; elsif counter=12499 then

7、 counter=0; q= not q; else counter=counter+1; end if; end if; end process;end a;其仿真波形如下:3.2 时分秒计时控制电路模块3.2.1时分秒计时控制电路模块门控时钟电路门控时钟采用T触发器来实现,采用作为时钟信号并将其输入置1,当每发生一次上沿跳变,其状态就改变一次。与门另一输入为分频器的输出Q。3.2.1.1 原理如图 3.2.1.1 所示:与门T触发器置“1”START/STOP门控时钟Q 图3.2.1.13.2.1.2 门控电路T触发器设计如图3.2.1.2所示:图3.2.1.2程序如下:library I

8、EEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity tttt is port ( CLOCK : in std_logic ;-clock RESET : in std_logic ;-reset t_IN : in std_logic ;-data in t_OUT : out std_logic -data out ); end tttt; architecture a of tttt is signal REG_t_OUT : std_logic ; - internal signals be

9、gin process (CLOCK,RESET) begin if (RESET = 1) then - asynchronous reset REG_t_OUT = 0; elsif (CLOCKevent and CLOCK = 1) then if t_IN =1 thenREG_t_OUT= not REG_t_OUT; end if;end if; end process; t_OUT = REG_t_OUT ; end a;其仿真波形如下:3.2.2 时分秒计时控制电路模块十分之一秒计数电路如图3.2.2所示:图3.2.2程序如下:LIBRARY ieee;use ieee.st

10、d_logic_1164.all;use ieee.std_logic_unsigned.all;entity cout10v is port( clrn,ldn,en,clk :in std_logic; da :in std_logic_vector(3 downto 0); qa :out std_logic_vector(3 downto 0); rco :out std_logic );end cout10v ;architecture a of cout10v isbeginprocess(clk) variable tmpa :std_logic_vector(3 downto

11、0); begin if clrn=0 then tmpa:=0000; else if(clkevent and clk=1) then if ldn=0 then tmpa:=da; elsif en=1 then if tmpa=1001 then tmpa:=0000; elsif tmpa=1101 then tmpa:=0000; else tmpa:=tmpa+1; end if; end if; end if; end if; qa=tmpa; rco= tmpa(0) and tmpa(3) and en; end process ;end a;其仿真波形如下:3.2.3 时

12、分秒计时控制电路模块秒计数电路如图3.2.3示:如图3.2.3其程序如下:LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cout60_v is port( clrn,ldn,en,clk :in std_logic; da :in std_logic_vector(3 downto 0); db :in std_logic_vector(2 downto 0); qa :out std_logic_vector(3 downto 0); qb :out std_logic_vector(2 downto 0); rco :out std_logic );end cout60_v;architecture a of cout60_v isbeginprocess(clk) variable tmpa :std_logic_vector(3 downto 0); variable tmpb:std_logic_vector(2 downto 0); begin if clrn=0 then tmpb:=000;tmpa:=0000; else if(clkevent and clk=1) then if ldn=

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号