数字逻辑课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字逻辑

课程设计报告

—多功能数字钟的设计与实现

姓名:

专业班级:通信1002

学号:31006010

指导老师:曾宇

设计日期:2012.06.20~2012.06.24

一、设计目的

1、学会应用数字系统设计方法进行电路设计;

2、学习使用QuartusII 9.0, 进一步提高软件的开发应用能力,增强自己的动手实践能力。

3、培养学生书写综合实验报告的能力。

二、设计任务及要求

实现多功能数字钟的设计,主要有以下功能:

1、记时、记分、记秒

2、校时、校分、秒清0

3、整点报时

4、时间正常显示

5、闹时功能(选做)

三、设计思路

3.1 计时模块

3.1.1 设计原理

计时模块如图3.1.1所示,其中计时用60进制计数器,计分和计秒用24进制计数器。

图3.1.1 计时间模块

计时间过程:

计秒:1HZ计数脉冲,0~59循环计数,计数至59时产生进位信号;

计分:以秒计数器进位信号作为分计数脉冲,0~59循环计数,59时产生进位;计时:以分计数器进位信号作为时计数脉冲,0~23循环计数,23时清0。

计数器的设计:

3.1.2 设计程序

编程分别设计24、60进制计数器,计数状态以BCD码形式输出。

24进制计数器源程序:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity FEN24 is

port(en,clk:in std_logic; ----高电平有效的使能信号/输入时钟 co:out std_logic;

h1,h0:out std_logic_vector(3 downto 0)); ----时高位/低位

end FEN24;

architecture behave of FEN24 is

begin

process(clk)

variable cnt1,cnt0:std_logic_vector(3 downto 0); ----记数

begin

if(en='0')then ---“使能”为0

cnt0:="0010";

cnt1:="0001";

elsif clk'event and clk='1'then ---上升沿触发

if cnt1="0010"and cnt0="0011"then

cnt0:="0000"; ----高位/低位同时为0时 cnt1:="0000";

co<='1';

else

co<='0';

if cnt0="1001"then

cnt0:="0000";

cnt1:=cnt1+1;

else

cnt0:=cnt0+1; -----高位记数累加 end if;

end if;

end if;

h1<=cnt1;

h0<=cnt0;

end process;

end behave;

60进制计数器源程序:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity FEN60 is

port(en,clk:in std_logic; ---高电平有效的使能信号/输入时钟

co:out std_logic; ---输出/进位信号

s1,s0:out std_logic_vector(3 downto 0));

end FEN60;

architecture behave of FEN60 is

begin

process(clk,en)

variable cnt1,cnt0:std_logic_vector(3 downto 0); ---计数

begin

if en='0'then ---“使能”为0 cnt1:="0000";

cnt0:="0000";

elsif clk'event and clk='1'then

if cnt0="1001"then

cnt0:="0000";

if cnt1="0101"then ---当计数为58(实际是经过59个计时脉冲)

cnt1:="0000";

co<='1'; ---进位

else

cnt1:=cnt1+1;

co<='0';

end if;

else

cnt0:=cnt0+1;

end if;

end if;

s1<=cnt1;

s0<=cnt0;

end process;

end behave;

3.1.3 设计仿真及生成器件

24进制计数器仿真波形截图如图3.1.2所示,其中计到23时,即高位h1

为2,低位h0为3时产生进位。

图3.1.2 24进制计数器仿真波形

60进制计数器仿真波形截图如图3.1.3所示,其中计到59时,即高位s1

为5,低位s0为9时产生进位。

相关文档
最新文档