EDA课程设计电子时钟
精品文档---下载后可任意编辑 课题:电子时钟 系别: 电气与电子工程系 专业: 电子信息工程 姓名: 学号: 指导老师: 河南城建学院 2024年6月日 成绩评定· 一、指导老师评语(根据学生设计报告质量、答辩情况及其平常表现综合评定)。 二、课程设计评分 成绩: 2024年 6月 日 目录 一、设计目的1 二、设计要求1 三、总体设计方案要求1 1、设计的总体原理1 2、设计内容1 四、EDA设计与仿真2 1、秒计时器模块2 2、分计数器模块4 3、时计数器模块6 4、分频器模块8 5、扫描电路模块9 6、译码显示器模块11 7、系统设计13 五、硬件实现16 1、硬件实现步骤16 2、硬件实现结果16 六、设计总结18 七、参考文献18 八、设计生成的电路总图18 一、设计目的 这次课程设计主要是培育我们的实际动手能力及对EDA这门课程的深化的理解,增强我们对EDA程序设计流程的掌握。这个课题还要求我们掌握计数器的设计,六十进制计数器和二十四进制计数器的设计方法,以及各个进制之间的连接关系。 二、设计要求 1、具有时、分、秒,计数显示功能,以二十四时制循环计; 2、设置启动、暂停开关,以满足启动计时和停止计时的功能; 3、要求计时精度为0.01秒,最长时间为24H。 4、具有时间设置(清零、调节小时和分功能)和闹钟功能;(扩展功能选作) 5、整点报时,整点报时的同时,LED灯花样显示或者给段动听音乐;(扩展功能选作) 三、总体设计方案要求 要实现一个数字时钟系统,整个系统由主要模块电路模块和外部输入输出以及显示模块组成。首先分别实现单个模块的功能,然后再通过级联组合的方式实现对整个系统的设计。原理框图如下: 图3-1.总体设计框图 电子时钟主要模块有四个,它包括脉冲信号产生模块(即分频电路)、计数模块(计数模块又分为秒计数模块、分计数模块和时计数模块)、码显示模块、复位模块。各个模块先用EDA技术中的VHDL语言编程仿真,再生成各个小模块的模拟元件,再元件例化,根据设计连接电路实现数字电子钟系统。 四、EDA设计及仿真(各个模块设计程序、原理框图及仿真波形图)1.秒计时器(second) library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity second is port(clk,reset:in std_logic; sec1,sec2:out std_logic_vector(3 downto 0);---------秒计数器的两个输出; cin:out std_logic); end second; architecturesecond1 of second is signal sec1_t,sec2_t:std_logic_vector(3 downto 0);---------秒计数器的中间信号; begin process(clk,reset) begin if reset= 1 then sec1_t<=“0000“;----------复位信号为1时秒信号复位; sec2_t<=“0000“; elsif clk event and clk= 1 then if sec1_t=“1001“then sec1_t<=“0000“; ------秒计数器的个位为9时变为0; if sec2_t=“0101“then sec2_t<=“0000“;------秒计数器的十位为5时变为0; else sec2_t<=sec2_t+1;-----秒计数器的十位不为5时加1; end if; else sec1_t<=sec1_t+1;-----秒计数器的个位不为9时加1; end if; if sec1_t=“1001“ and sec2_t=“0101“then ----------当计数器数值为59时向分为进1; cin<= 1 ;---------向分进1,作为分的时钟信号; else cin<= 0 ; end if; end if; end process; sec1<=sec1_t; sec2<=sec2_t; end second1; 图4-1 秒计数器框图 图4-2 秒计数器时序仿真图 秒计数器的波形分析:由程序及仿真波形图可以看出该计数器是59进制计数器,当sec1计数到9是sec2增加1,而sec1变为0,当sec2增加到5,而且sec1为9时,sec1,sec2变为0,cin1增加1向分计数器进位,提供一个分计数器的时钟信号。 2.分计数器(minute) 分同秒计时器一样 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity minute is port(clk,reset:in std_logic; min1,min2:out std_logic_vector(3 downto 0);--------秒计数器的两个输出; cin1:out std_logic); end minute; architecture minute1 of minute is signal min1_t, min2_t:std_logic_vector(3 downto 0); begin process(clk,reset) begin if reset= 1 then min1_t<=“0000“;--------复位信号为1是分的信号复位为0; min2_t<=“0000“; elsif clk event and clk= 1 then if min1_t=“1001“then min1_t<=“0000“;--------分计数器的个位为9时变为0; if min2_t=“0101“then min2_t<=“0000“;--------分计数器的个位为5时变为0; else min2_t<= min2_t+1;--------分计数器的十位不为5时加1; end if; else min1_t<= min1_t+1;--------分计数器的个位不为9时加1; end if; if min1_t=“1001“ and min2_t=“0101“t