数字逻辑课程设计报告 1
数字逻辑课程设计
多功能数字钟
班级: 学号:
课程设计人:
指导老师: 课题:
完成时间:
一、设计目的:
学会应用数字系统设计方法进行电路设计,熟练地运用汇编语言。 二、设计任务及要求: 1. 记时、记分、记秒 2. 校时、校分、秒清0 3. 整点报时
4. 时间正常显示 5. 闹时功能
三、设计思路:
将整个闹钟分为以下几个模块,每个模块中都有详细的各部分的设计思路,源代码及仿真图像,生成的器件。 1. 计时模块
计小时:24进制计数器
计分、计秒:60进制计数器 计时间过程:
计秒:1HZ 计数脉冲,0~59循环计数,计数至59时产生进位信号。
计分:以秒计数器进位信号作为分计数脉冲,0~59循环计数,59时产生进位。
计时:以分计数器进位信号作为时计数脉冲,0~23循环计数,23时清0。 二十四进制计数器代码: library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all; entity cnt24 is
port (clk:in std_logic;
qh,ql:out std_logic_vector(3 downto 0)); end cnt24;
architecture behave of cnt24 is
signal q1,q0:std_logic_vector(3 downto 0); begin
process(clk) begin
if(clk'event and clk='1')then if(q1="0010" and q0="0011")then q1
q0
q0
end process; end behave;
仿真结果:
图一、cnt24仿真图像
六十进制计数器代码: library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all; entity cnt60 is
port (clk:in std_logic; clr:in std_logic;
ql,qh:out std_logic_vector(3 downto 0); c:out std_logic); end cnt60;
architecture cnt of cnt60 is
signal q1,q0:std_logic_vector(3 downto 0); begin
process(clk,clr) begin
if(clr='1')then
q1
if(clk'event and clk='1')then
if(q1="0101" and q0="1001")then-----到59 q1
end cnt;
仿真结果:
图二、cnt60仿真图像
图三、生成的计数器符号
2. 校时模块:
思路:按下校时键 ,时位迅速递增,满23清0
按下校分键 ,分位迅速递增,满59清0 注意:此时应屏蔽分进位。 按清0键,秒清0。
脉冲按键S1~S8、拨动开关K1~K12任选三个。 两个问题:
(1)如何实现校对时间时,计数器快速递增?
按键校对时间时,将一个频率较高的计数脉冲信号作用于计数器,屏蔽正常计时的计数脉冲信号。 (2)如何消除“抖动”?
电路抖动:一次按键的弹跳现象,电路产生多个计数脉冲,导致一次按键,多次计数的误动作。
抖动产生的原因:物理原因。
消除的简易方法:D 触发器,同步按键脉冲。
3. 整点报时模块:
从59分50秒开始,每2秒一次低音报时;当达到整点时,进行一次高音报时。
低音:频率可定为500HZ ;高音:频率可定为1KHZ 。 报时效果:报时脉冲接扬声器输入,引脚号:N6。 整点报时器件代码 library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity alert_31 is
port(m1,m0,s1,s0:in std_logic_vector(3 downto 0); siga,sigb:out std_logic); end alert_31;
architecture alert of alert_31 is begin
siga
sigb
仿真结果:
图四、整点报时模块,低频率报时
图五、整点报时器件符号
4、分频模块:
设计一个进制较大的计数器,分频产生各种频率的脉冲信号。 代码:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all; entity freq_divider is port (clk:in std_logic;
hz512,hz64,hz4,hz1:out std_logic); End freq_divider;
architecture beh of freq_divider is
signal cc: std_logic_vector(9 downto 0); begin
process(clk) begin
if(clk'event and clk='1') then if(cc="1111111111")then cc
cc
end process; hz512
图六、分频器仿真及生成器件符号
5. 动态扫描显示模块:
动态模式下,8个数码管连接同个七段码,需要进行分时控制的动态扫描显示。 七段译码器代码: LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY dtsm is port(
clk:in std_logic;
h:in std_logic_vector(7 downto 0); m:in std_logic_vector(7 downto 0); s:in std_logic_vector(7 downto 0);
seg7out:out std_logic_vector(6 downto 0); sel:buffer std_logic_vector(2 downto 0) );
END dtsm;
ARCHITECTURE beha of dtsm is
signal key:std_logic_vector(3 downto 0); BEGIN
PROCESS(clk)
variable dount:std_logic_vector(2 downto 0):="000"; BEGIN
IF(rising_edge(clk))then IF dount="101" then dount:="000"; ELSE
dount:=dount+1; END IF; END IF;
sel
CASE sel IS
when "000"=>keykeykeykeykeykeynull; END CASE;
END PROCESS; PROCESS (key) BEGIN
case key is
when"0000"=>seg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outnull;
END CASE; END PROCESS; END beha; 器件生成:
图七、动态扫描器件
6. 闹时模块:
多路选择器源程序: library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity alarmset is port(sel:in std_logic;
hclo,mclo,sclo,halr,malr,salr: in std_logic_vector(7 downto 0); h,s,m:out std_logic_vector(7 downto 0)); end alarmset;
architecture beh of alarmset is begin
process(sel) begin
if(sel='0')then h
end process; end beh;
数值比较器代码: library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;
entity alarmcmp is
port( h,m,halr,malr: in std_logic_vector(7 downto 0); stop:in std_logic;
sig:out std_logic); end alarmcmp;
architecture beh of alarmcmp is
begin
process(h,m,halr,malr,stop) begin
if stop='1'then sig
if h=halr and m=malr and stop='0' then sig
end process;
end beh; 器件生成:
图八、多路选择器和数值比较器
四、顶层图:
图九、顶层图
六、设计中遇到的问题及解决方法:
问题1、 第一次下载仿真时,秒不动,按下清零键自动计时,松开又自动清零。解决方法:在秒的计数器清零端加一个非门,这样当一下载到实验板后,在一秒后就可以自动计时,且若要清零则按下Sc 按键即可。
问题2、分始终保持00状态,秒的进位不能使它变化,校分也不起作用。后来老师检查后才发现,这个问题产生的原因是,我的六十进制计数器是置“1”时清零,而顶层电路图上却是设计的“0”时清零,故错把清零端接至了“vcc ”. 解决方法:将分的清零端的“vcc ”改为“gnd ”, 再次下载时,分位就可以动了。 问题3、不知道如何设置闹钟设定与正常计时状态的显示切换。
解决方法: 通过上网搜索以及询问同学,发现了再加一个开关用来控制不同模块的显示。
七、心得体会:
在此次的多功能数字钟设计过程中,让我看到理论与实践的差别和联系,理论固然重要,然而我们要在实践中发现错误,并解决错误,提高自己的动手能力和实际解决问题的能力。
同时,此次设计也锻炼了自己独立思考问题的能力和通过查看相关资料来解决问题的习惯。虽然这只是一次简单的课程设计,但通过这次课程设计我了解了课程设计的一般步骤,和设计中应注意的问题。设计本身并不是有很重要的意义,而是对待问题时的态度和处理事情的能力。至于设计的成绩无须看得太过于重要,而是设计的过程,设计的思想和设计电路中的每一个环节,电路中各个部分的功能是如何实现的。
最后闹钟也没有自己做出来,仿照同学的设计才做出来,这说明自己平时的学习中还存在很多不足,以后应该更用功学习理论知识,同时加强动手能力。总的来说,这次课程设计使我收获良多,特别是当它第一次整点报时的时候,心中愉悦无比,自己动手学到的东西是最多的。
相关文章
- 数字电路课程设计报告
- 西安交通大学数字逻辑电路实验报告
- 通信工程专业课程简介
- 抢答器实验报告 1
- 流水灯设计报告[1]
- 数电课程设计报告-抢答器
- 数电课程设计数字电子时钟的实现
- 汽车尾灯电路设计报告
- 秀简易数字频率计设计1
- 四人抢答器
赣南师院物理与电子信息学院 数字电路课程设计报告书 姓名: 王岳宇 班级:电子信息工程1101班 学号: 110802035 时间: 2013年 4月10日 专业:电子信息工程 班级:1101本 学号:110802035 姓名: 王岳宇 目 ...
电子技术实验报告 --交通控制器的分析与设计 班级: 姓名: 学号: 日期: 2016年6月 联系电话: 目 录 一.实验目的----------------------------3 二.项目设计概要------------------- ...
通信工程专业课程简介 专业核心课程: 信息论与编码原理.通信原理.电视原理.电磁场与电磁波.天线与电波传播 广播电视发送方向:数字电视技术.广播电视发送技术.数字广播技术 移动通信方向:移动通信.现代交换技术.移动电视技术 信息论与编码原理 ...
内蒙古师范大学计算机与信息工程学院 <数字逻辑>综合课程设计报告 智力竞赛抢答器逻辑电路设计 计算机与信息工程学院 10级师范汉班 XXX 2010110 XXX 指导教师 XXX 讲师 摘要 现今,形式多样.功能完备的抢答器已 ...
目 录 前 言 ............................................................ 2 第一章 多功能流水灯的设计方案 ................................. ...
课程设计报告 题 目 数字抢答器设计 课 程 名 称 数字电子技术 院 部 名 称 机电工程学院 专 业 电气工程及其自动化 班 级 10电气1 学 生 姓 名 管志成 学 号 1004103027 课程设计地点 C206 课程设计学时 1 ...
课 程 设 计 报 告 设计题目:数字电子时钟的设计与实现 班 级: 学 号: 姓 名: 指导教师: 设计时间: 摘 要 钟表的数字化给人们生产生活带来了极大的方便,大大的扩展了原先钟表的报时.诸如,定时报警.按时自动打铃.时间程序自动控制 ...
扬州大学能源与动力工程学院 本科生课程设计 题 目: 汽车尾灯控制电路 课 程: 数字电子技术基础 专 业: 电气工程及其自动化 班 级: 学 号: 081301222 081301216 姓 名: 刘储元 指导教师: 年漪蓓 蒋步军 完成 ...
课程设计基本要求课程设计是工科学生十分重要的实践教学环节,通过课程设计,培养学生综 合运用先修课程的理论知识和专业技能,解决工程领域某一方面实际问题的能力. 课程设计报告是科学论文写作的基础,不仅可以培养和训练学生的逻辑归纳能力. 综合分析 ...
电子技术课程设计报告 学 院: 电气与电子工程学院 专业班级: 学生姓名: 指导教师: 完成时间: 2013年12月19日 成 绩: 四人抢答器电路设计报告 一. 设计要求 (1).四组参赛者在进行抢答时,当抢答者按下面前的按钮时,抢答器都 ...