数字逻辑电路数字钟课程设计报告模板

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档