数字逻辑电路实验报告
姓名: 班级: 学号:
指导老师:耿霞 学校:江苏大学
1
目录
一、实验目的???????????????????????3 二、设计要求??????????????????????3 三、具体设计思路????????????????????3
1. 24进制计数器的设计????????????????????4 2. 60进制计数器的设计????????????????????5 3. 二路选择器的设计??????????????????????6 4. 分频器的设计????????????????????????6 5. 动态扫描的涉及???????????????????????7 6. 整点报时功能的设计?????????????????????8 7. 选择显示与闹钟设置的设计??????????????????9
四、顶层图????????????????????????10 五、各个模块???????????????????????11
1. 计时模块?????????????????????????11 2. 整点报时与闹钟模块????????????????????11
六、设计总结???????????????????????12
2
一:实验目的
1. 学会应用数字系统方法进行电路设计;
2. 进一步学会应用Quartus软件开发应用能力; 3. 培养综合实验的能力。
二:设计要求
设计一个多功能数字时钟,具有以下几个功能: (1) 能进行正常的时、分、秒计时。
① 使用一个二十四进制和两个六十进制的计数器级联。分计数器以秒计
数器的进位作为计数脉冲,小时计数器以分计时器的进位作为计数脉冲。
② 给秒1Hz 。
(2) 可以使用以 EP1C12F324C8为核心的硬件系统上的脉冲按键或者拨动开
关实现“校时”,“校分”及清零功能。 (3) 可以使用系统上的扬声器进行整点报时
① 计时到59分50秒时,每两秒一次低音报时,整点进行高音报时。 ② 低音报时用512Hz,高音报时用1kHz。 (4) 设置闹钟,并连接扬声器实现闹铃功能。
① 设定闹钟时间与新的计数器进行存储,与正常计时互不干扰。 ② 与正常计时状态进行切换。
③ 设定一个比较模块,当计时与闹钟相等时,驱动扬声器鸣叫。 ④ 闹钟响声控制在一分钟之内,可以在一分钟设置按键取消闹时状态 (5) 用动态数码管显示时间。
① 用6个数码管,分别用一组独立的七段码进行驱动显示,将小时高位
到秒低位共6组时间经过7段译码,按照顺序锁定到数码管上。 ② 用动态扫描的方式显示。 ③ 扫描频率越高越稳定。
三:具体设计思路
利用按键实现“校时”,“校分”及清零功能。
(1) SA:校时键。按下SA键时,时计数器迅速递增,按24小时循环,并且
计满23时回到00.
(2) SB:校分键。按下SB键时,分计数器迅速递增,按60小时循环,并且
计满59时回到00,但不向时进位。
(3) SC:秒清零。按下SC时,秒计数器清零。
(4) 要求按键均不产生数字跳变,因此需要进行销抖处理。用D触发器。 实现:
3
1. 24进制计数器的设计: VHDL语言描述:
libraryieee;
use ieee.std_logic_1164.all; useieee.std_logic_unsigned.all; useieee.std_logic_arith.all;
entity cnt24 is
port(rst,clk:instd_logic; co:outstd_logic;
qout:outstd_logic_vector(7 downto 0)); end cnt24;
architecture behave of cnt24 is
signalqh,ql:std_logic_vector(3 downto 0); signaltco:std_logic;
begin
process(clk,rst) begin
if (rst='0') then qh<=\
//若rst为0时,十位qh以及个位ql都清零,且不进位 elsif (clk'event and clk='1') then
if (ql<9 and (qh=0 or qh=1)) then
//当个位ql小于9,十位qh等于‘0’或‘1’时
ql<=ql+1;qh<=qh;//个位ql加1,qh不变 end if;
if(ql=9) then/ /当个位ql等于9时
ql<=\//个位ql清零
qh<=qh+1;//十位qh加1
end if;
if(ql<4 and qh=2) then//当十位qh等于2,个位ql小于4时
ql<=ql+1;qh<=qh;//个位ql加1,十位qh不变 end if;
if(ql=3 and qh=2) then//当十位qh等于2,个位ql等于3 qh<=\//十位、个位都清零 end if; end if;
qout<=qh&ql;co<=tco;//通过qout输出十位个位 end process; end behave;
4
2. 60进制计数器的设计:
VHDL语言描述:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all;
entity cnt60 is
port(rst,clk:instd_logic; co:outstd_logic;
qout:outstd_logic_vector(7 downto 0)); end cnt60;
architecture behave of cnt60 is
signal qh,ql:std_logic_vector(3 downto 0); signal tco:std_logic;
begin
process(clk,rst) begin
if (rst='0') then qh<=\//当rst为‘0’时,十位qh和个位ql清零,不进位 elsif (clk'event and clk='1') then
if (ql=9) then //当个位ql等于9时
if (qh=5) then qh<=\
//如果是为qh等于5,则十位qh和个位ql为零,并产生一个进位信号 else qh<=qh+1;ql<=\
//如果qh不是等于5,则十位qh加1,个位ql为零,不产生进位信号 end if;
else ql<=ql+1;qh<=qh; tco<='0';
//如果个位ql不为9,则个位ql加1,十位qh不变,并不产生进位信号 end if;
end if;
qout<=qh&ql;co<=tco;//通过qout输出十位和个位 end process; end behave;
5
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库数字逻辑电路课程设计报告江苏大学在线全文阅读。
相关推荐: