数字逻辑电路数字钟课程设计报告模板
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
江苏大学计算机学院
软件工程课程设计报告书
课程名称数字逻辑电路
课程设计总评成绩
学生姓名、学号卢江涛**********
学生专业班级软件工程软件1002班
指导教师姓名赵念强
一.设计目的(内容及功能)
1、能进行正常的时、分、秒计时,用动态扫描的方式显示,需用6个数码管。
(1)用M6M5进行24进制小时的显示。
(2)用M4M3进行60进制分的显示。
(3)用M2M1进行60进制秒的显示。
2、利用按键实现“校时”、“校分”和“秒清0”功能。
(1)SA:校时键。按下SA键时,时计数器迅速递增,按24小时循环,并且计满23时回到00。
(2)SB:校分键。按下SB键时,分计数器迅速递增,按60小时循环,并且计满59时回到00,但不向时进位。
(3)SC:秒清零。按下SC时,秒计数器清零。
要求按键均不产生数字跳变,因此须对“SA”、“SB”进行消抖处理。
3、能进行整点报时。
(1)在59分50、52、54、56、58秒按500Hz频率报时;
(2)在59分60秒用1KHz的频率作最后一声正点报时。
4、更高要求:能进行闹时功能
(1)闹时的最小时间间隙为10分钟,闹时长度为1分钟。闹时频率可以自己设置。
(2)按下闹时按键SD后,将一个闹时时间数存入计数器内。时钟正常运行时,闹时时间和运行的时间进行比较,当比较结果相同时输出一个启动信号,触发闹时电路工作,输出音频信号。
二、设计要求
1、按自顶向下的层次化设计方法设计。
(1)顶层图
(2)消抖电路用D触发器构成,SA、SB、SC为包含抖动的输入信号,而电路的输出则是一个边沿整齐的输出信号。
(3)计时(24进制计数器),计分(60进制计数器)、计秒(60进制计数器)模块可由10进制计数器连接构成,也可用VHDL语言完成。10进制计数
器需自己设计(用VHDL语言,与所做实验74160计数器相同),不能调
用系统库。
(4)其他如分频电路、提供报时控制信号、闹时电路等模块用VHDL语言实现。数字显示采用动态扫描的方式,也可以采用VHDL编写。
以下是各类器件的底层图及vhdl描述
1.十进制计数器
(1)vhdl语言
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity ls160 is port(
data:in std_logic_vector(3 downto 0);
clk,ld,p,t,clr:in std_logic;
count:buffer std_logic_vector(3 downto 0);
tc:out std_logic);
end ls160;
architecture behavior of ls160 is
begin
tc<='1'when(count="1001"and p='1'and t='1'and ld='1'and clr='1')else'0'; cale:
process(clk,clr,p,t,ld)
begin
if(rising_edge(clk))then
if(clr='1')then
if(ld='1')then
if(p='1')then
if(t='1')then
if(count="1001")then
count<="0000";
else
count<=count+1;
end if;
else
count<=count;
end if;
else
count<=count;
end if;
else
count<=data;
end if;
else
count<="0000";
end if;
end if;
end process cale;
end behavior;
器件图形
2.以十进制为底层文件生成六十进制计数器
(1)底层图
(2)器件图形
3.以十进制为底层文件生成二十四进制计数器(1)底层图
(3)器件图形
4.二路选择器的设计
(1)vhdl语言
library ieee;
use ieee.std_logic_1164.all;
entity mux21 is
port(in0,in1,sel:in std_logic; dataout:out std_logic); end mux21;
architecture rtl_mux21 of mux21 is
begin
with sel select
dataout<=in0 when'0',
in1 when'1',
'Z'when others;
end rtl_mux21;
(2)器件图形
5.整点报时器件的设计(要使得时钟在50,52,54,56,58,60秒的时候响起)
(1)vhdl语言
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity alert is
port(f1,f0,m1,m0:in std_logic_vector(3 downto 0);
siga,sigb:out std_logic);
end alert;
architecture rtl_alert of alert is
begin
siga<='1'when(f1="0101" and f0="1001" and m1="0101" and (m0="0000" or m0="0010" or m0="0100" or m0="0110" or m0="1000"))else'0';
sigb<='1'when(f1="0000" and f0="0000" and m1="0000" and m0="0000")else'0';
end rtl_alert;
(2)器件图形
6.分频器的设计
(1)vhdl语言
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity frequencydivider is
port(clk:in std_logic; HZ512,HZ256,HZ64,HZ4,HZ1:out std_logic);
end frequencydivider;
architecture rtl_frequencydivider of frequencydivider is
signal q:std_logic_vector(9 downto 0):="0000000000";
begin
process(clk)
begin
if(clk='1')then
q<=q+1;
end if;
HZ512<=q(0);