数字逻辑电路实验报告
- 格式:doc
- 大小:309.50 KB
- 文档页数:14
一、实验目的1. 理解数字逻辑的基本概念和基本原理。
2. 掌握数字逻辑电路的基本分析方法,如真值表、逻辑表达式等。
3. 熟悉常用数字逻辑门电路的功能和应用。
4. 提高数字电路实验技能,培养动手能力和团队协作精神。
二、实验原理数字逻辑电路是现代电子技术的基础,它主要研究如何用数字逻辑门电路实现各种逻辑功能。
数字逻辑电路的基本元件包括与门、或门、非门、异或门等,这些元件可以通过组合和连接实现复杂的逻辑功能。
1. 与门:当所有输入端都为高电平时,输出端才为高电平。
2. 或门:当至少有一个输入端为高电平时,输出端为高电平。
3. 非门:将输入端的高电平变为低电平,低电平变为高电平。
4. 异或门:当输入端两个高电平或两个低电平时,输出端为低电平,否则输出端为高电平。
三、实验内容1. 实验一:基本逻辑门电路的识别与测试(1)认识实验仪器:数字电路实验箱、逻辑笔、示波器等。
(2)识别与测试与门、或门、非门、异或门。
(3)观察并记录实验现象,分析实验结果。
2. 实验二:组合逻辑电路的设计与分析(1)设计一个简单的组合逻辑电路,如加法器、减法器等。
(2)根据真值表列出输入输出关系,画出逻辑电路图。
(3)利用逻辑门电路搭建电路,进行实验验证。
(4)观察并记录实验现象,分析实验结果。
3. 实验三:时序逻辑电路的设计与分析(1)设计一个简单的时序逻辑电路,如触发器、计数器等。
(2)根据电路功能,列出状态表和状态方程。
(3)利用触发器搭建电路,进行实验验证。
(4)观察并记录实验现象,分析实验结果。
四、实验步骤1. 实验一:(1)打开实验箱,检查各电路元件是否完好。
(2)根据电路图连接实验电路,包括与门、或门、非门、异或门等。
(3)使用逻辑笔和示波器测试各逻辑门电路的输出,观察并记录实验现象。
2. 实验二:(1)根据实验要求,设计组合逻辑电路。
(2)列出真值表,画出逻辑电路图。
(3)根据逻辑电路图连接实验电路,包括所需逻辑门电路等。
数字逻辑电路实验报告数字逻辑电路实验报告引言:数字逻辑电路是现代电子科技中的重要组成部分,它广泛应用于计算机、通信、控制系统等领域。
本实验旨在通过实际操作,加深对数字逻辑电路原理的理解,并通过实验结果验证其正确性和可靠性。
实验一:基本逻辑门的实验在本实验中,我们首先学习了数字逻辑电路的基本组成部分——逻辑门。
逻辑门是数字电路的基本构建单元,它能够根据输入信号的逻辑关系,产生相应的输出信号。
我们通过实验验证了与门、或门、非门、异或门的工作原理和真值表。
以与门为例,当且仅当所有输入信号都为高电平时,与门的输出信号才为高电平。
实验中,我们通过连接开关和LED灯,观察了与门的输出变化。
实验结果与预期相符,验证了与门的正确性。
实验二:多位加法器的设计与实验在本实验中,我们学习了多位加法器的设计和实现。
多位加法器是一种能够对多位二进制数进行加法运算的数字逻辑电路。
我们通过实验设计了一个4位全加器,它能够对两个4位二进制数进行相加,并给出正确的进位和和结果。
实验中,我们使用逻辑门和触发器等元件,按照电路图进行布线和连接。
通过输入不同的二进制数,观察了加法器的输出结果。
实验结果表明,多位加法器能够正确地进行二进制数相加,验证了其可靠性。
实验三:时序电路的实验在本实验中,我们学习了时序电路的设计和实验。
时序电路是一种能够根据输入信号的时间顺序产生相应输出信号的数字逻辑电路。
我们通过实验设计了一个简单的时序电路,它能够产生一个周期性的脉冲信号。
实验中,我们使用计数器和触发器等元件,按照电路图进行布线和连接。
通过改变计数器的计数值,观察了脉冲信号的频率和周期。
实验结果表明,时序电路能够按照设计要求产生周期性的脉冲信号,验证了其正确性。
实验四:存储器的设计与实验在本实验中,我们学习了存储器的设计和实现。
存储器是一种能够存储和读取数据的数字逻辑电路,它在计算机系统中起到重要的作用。
我们通过实验设计了一个简单的存储器,它能够存储和读取一个4位二进制数。
实验报告实验一基本门电路功能验证实验实验目的:验证与非门74LS00(或74HC00)、或非门74LS02)以及非门74LS04(或74HC04)逻辑功能1.验证与非门的逻辑功能实验器材:数字逻辑实验箱一个;数字万用表一个;5V电源一个;导线若干;实验原理:74LS00(或74HC00)为四个二输入端的与非门,74LS04(或74HC04)是六反相器。
其引脚分别如图1、2所示。
实验过程:参照引脚分布图,连接电路图,在电路图连接完成之前要断开电源。
1,2两个端口为输入端,1,2两个输入端接在控制端,通过波动上下开关来改变输入电阻的大小,通过控制2个输入端电平的高低。
3为输出端,接在信号显示管上,通过显示管来确定输出信号是否有效。
,用万能表测量出输出端的电平大小,并及时记录下实验结果。
图2 74LS00引脚分布图图1 74LS00引脚分布图实验结果:得到如下四组数据,根据数据得出真值表A(V) B(V) C(V)0.31 0.31 4.134.65 0.35 4.110.35 4.65 4.124.66 4.65 0.19实验结论:实验结果验证了与非门逻辑电路的功能,可以用一个图和真值表表示:2.验证或非门的逻辑功能实验器材:数字逻辑实验箱一个;数字万用表一个;5V电源一个;导线若干;实验原理:74LS02为四个二输入端的与非门,74LS04(或74HC04)是六反相器。
实验过程:参照引脚分布图,连接电路图,在电路图连接完成之前要断开电源。
1,2两个端口为输入端,1,2两个输入端接在控制端,通过波动上下开关来改变输入电阻的大小,通过控制2个输入端电平的高低。
3为输出端,接在信号显示管上,通过显示管来确定输出信号是否有效。
,用万能表测量出输出端的电平大小,并及时记录下实验结果。
实验结果:A(V) B(V) C(V)0.02 0.02 4.290.16 4.35 0.154.16 4.50 0.164.52 0.14 0.13实验结论:实验结果验证了或非门逻辑电路的功能,可以用一个图和真值表表示:3.验证非门的逻辑功能实验器材:数字逻辑实验箱一个;数字万用表一个;5V电源一个;导线若干;实验原理:74LS04(或74HC04)为四个二输入端的与非门,74LS04(或74HC04)是六反相器。
一、实验名称逻辑电路实验二、实验目的1. 掌握基本的数字逻辑电路设计方法。
2. 理解并掌握常用的逻辑门及其组合电路。
3. 提高实验操作技能和观察能力。
4. 培养团队协作精神。
三、实验原理数字逻辑电路是构成数字系统的基本单元,主要由逻辑门、触发器等基本元件组成。
逻辑门是数字电路的基本单元,它按照一定的逻辑规则实现基本的逻辑运算。
本实验主要涉及以下逻辑门及其组合电路:1. 与门(AND):当所有输入信号都为高电平时,输出信号才为高电平。
2. 或门(OR):当至少一个输入信号为高电平时,输出信号才为高电平。
3. 非门(NOT):将输入信号取反。
4. 异或门(XOR):当输入信号不同时,输出信号为高电平。
四、实验器材1. 逻辑门实验板2. 逻辑笔3. 万用表4. 逻辑分析仪5. 示波器6. 计时器五、实验内容1. 与门、或门、非门、异或门的逻辑功能测试2. 组合逻辑电路设计3. 电路仿真与验证六、实验步骤1. 与门、或门、非门、异或门的逻辑功能测试(1)按照实验指导书,连接与门、或门、非门、异或门实验板。
(2)使用逻辑笔和万用表,测试各个逻辑门的输入、输出信号。
(3)记录测试结果,与理论值进行对比,分析实验误差。
2. 组合逻辑电路设计(1)根据设计要求,选择合适的逻辑门,绘制电路图。
(2)使用实验板,搭建组合逻辑电路。
(3)测试电路功能,验证设计是否正确。
3. 电路仿真与验证(1)使用逻辑分析仪或示波器,观察电路的输入、输出信号波形。
(2)分析波形,验证电路功能是否符合预期。
七、实验结果与分析1. 与门、或门、非门、异或门的逻辑功能测试实验结果如下:与门:当所有输入信号都为高电平时,输出信号才为高电平。
或门:当至少一个输入信号为高电平时,输出信号才为高电平。
非门:将输入信号取反。
异或门:当输入信号不同时,输出信号为高电平。
2. 组合逻辑电路设计(1)设计一个4位二进制加法器,包括两个输入端(A、B)和两个输出端(S、C)。
数字逻辑电路实验报告指导老师:班级:学号:姓名:时间:第一次试验一、实验名称:组合逻辑电路设计1二、试验目的:掌握组合逻辑电路的功能测试。
1、验证半加器和全加器的逻辑功能。
2、、学会二进制数的运算规律。
3、试验所用的器件和组件:三、74LS00 3片,型号二输入四“与非”门组件74LS20 1片,型号四输入二“与非”门组件74LS86 1片,型号二输入四“异或”门组件实验设计方案及逻辑图:四、/全减法器,如图所示:1、设计一位全加时做减法运时做加法运算,当M=1M决定的,当M=0 电路做加法还是做减法是由SCin分别为加数、被加数和低位来的进位,、B和算。
当作为全加法器时输入信号A分别为被减数,减数Cin、B和为和数,Co为向上的进位;当作为全减法时输入信号A 为向上位的借位。
S为差,Co和低位来的借位,1)输入/(输出观察表如下:(2)求逻辑函数的最简表达式函数S的卡诺图如下:函数Co的卡诺如下:化简后函数S的最简表达式为:Co的最简表达式为:2(3)逻辑电路图如下所示:、舍入与检测电路的设计:2F1码,用所给定的集成电路组件设计一个多输出逻辑电路,该电路的输入为8421为奇偶检测输出信号。
当电路检测到输入的代码大于或F2为“四舍五入”输出信号,的个数为奇数时,电路。
当输入代码中含1F1=1;等于5是,电路的输出其他情况F1=0 F2=0。
该电路的框图如图所示:的输出F2=1,其他情况输出观察表如下:(输入/0 1 0 0 1 01 0 1 0 0 11 1 1 0 0 01 0 1 1 1 11 0 0 1 0 11 0 1 0 0 11 0 0 1 1 01 1 1 0 1 11 0 1 1 0 011111求逻辑函数的最简表达式(2)的卡诺如下:函数F1 F2函数的卡诺图如下:的最简表达式为:化简后函数F2 的最简表达式为:F1)逻辑电路图如下所示;(3课后思考题五、化简包含无关条件的逻辑函数时应注意什么?1、答:当采用最小项之和表达式描述一个包含无关条件的逻辑问题时,函数表达式中,并不影响函数的实际逻辑功能。
一、实验目的本次实验旨在通过实际操作,加深对数字逻辑基本原理和设计方法的理解,提高学生在数字电路设计、仿真和调试方面的实践能力。
通过完成以下实验任务,使学生掌握以下技能:1. 理解数字逻辑电路的基本概念和原理。
2. 掌握数字逻辑电路的设计方法和步骤。
3. 学会使用仿真软件进行电路设计和仿真测试。
4. 掌握数字逻辑电路的调试和优化方法。
二、实验内容本次实验主要包含以下三个部分:1. 组合逻辑电路设计:设计一个四位加法器,并使用Logisim软件进行仿真测试。
2. 时序逻辑电路设计:设计一个简单的计数器,并使用Verilog语言进行描述和仿真。
3. 数字逻辑电路综合应用:设计一个简单的数字信号处理器,实现基本的算术运算。
三、实验步骤1. 组合逻辑电路设计(1)分析题目要求,确定设计目标和输入输出关系。
(2)根据输入输出关系,设计四位加法器的逻辑电路。
(3)使用Logisim软件搭建电路,并设置输入信号。
(4)观察仿真结果,验证电路功能是否正确。
2. 时序逻辑电路设计(1)分析题目要求,确定设计目标和状态转移图。
(2)使用Verilog语言描述计数器电路,包括模块定义、输入输出定义、状态定义和状态转移逻辑。
(3)使用仿真软件进行测试,观察电路在不同状态下的输出波形。
3. 数字逻辑电路综合应用(1)分析题目要求,确定设计目标和功能模块。
(2)设计数字信号处理器电路,包括算术运算单元、控制单元和存储单元等。
(3)使用仿真软件进行测试,验证电路能否实现基本算术运算。
四、实验结果与分析1. 组合逻辑电路设计实验结果:通过仿真测试,四位加法器电路功能正常,能够实现两个四位二进制数的加法运算。
分析:在设计过程中,遵循了组合逻辑电路设计的基本原则,确保了电路的正确性。
2. 时序逻辑电路设计实验结果:通过仿真测试,计数器电路功能正常,能够实现从0到9的计数功能。
分析:在设计过程中,正确描述了状态转移图,并使用Verilog语言实现了电路的功能。
数字电路逻辑实验报告数字电路逻辑实验报告引言:数字电路逻辑实验是电子工程专业学生必修的一门实践课程,通过该实验可以加深对数字电路基本原理和逻辑设计的理解。
本文将对我所进行的数字电路逻辑实验进行详细报告,包括实验目的、实验原理、实验步骤、实验结果以及实验总结等内容。
实验目的:本次实验的主要目的是通过设计和实现一些基本的数字逻辑电路,如门电路、触发器电路等,加深对数字电路原理的理解。
同时,通过实验操作,掌握数字电路的搭建过程、信号的传输规律以及故障排除等技能。
实验原理:数字电路是由逻辑门组成的,逻辑门是根据布尔代数的运算规则实现逻辑运算的基本元件。
常见的逻辑门有与门、或门、非门等。
在实验中,我们将通过搭建逻辑门电路,实现不同的逻辑运算。
实验步骤:1. 实验前准备:检查实验设备的连接是否正确,确保电源和接地正常。
2. 搭建与门电路:根据逻辑与门的真值表,按照电路图连接与门电路。
3. 搭建或门电路:根据逻辑或门的真值表,按照电路图连接或门电路。
4. 搭建非门电路:根据逻辑非门的真值表,按照电路图连接非门电路。
5. 搭建触发器电路:根据触发器的真值表,按照电路图连接触发器电路。
6. 进行实验测试:将不同的输入信号输入电路,观察输出信号的变化。
实验结果:经过实验测试,我们得到了以下结果:1. 与门电路:当输入信号A和B同时为高电平时,输出信号为高电平;否则输出信号为低电平。
2. 或门电路:当输入信号A和B中至少有一个为高电平时,输出信号为高电平;否则输出信号为低电平。
3. 非门电路:当输入信号为高电平时,输出信号为低电平;当输入信号为低电平时,输出信号为高电平。
4. 触发器电路:触发器电路可以实现存储功能,当输入信号满足特定条件时,输出信号的状态会发生改变。
实验总结:通过本次实验,我对数字电路逻辑的原理和设计有了更深入的理解。
通过搭建不同的逻辑门电路和触发器电路,我熟悉了数字电路的搭建过程,并掌握了信号的传输规律。
一、实验目的1. 理解数字逻辑的基本概念和原理。
2. 掌握逻辑门电路的基本功能和应用。
3. 学会使用逻辑门电路设计简单的组合逻辑电路。
4. 培养实际动手能力和分析问题、解决问题的能力。
二、实验原理数字逻辑是研究数字电路的基本原理和设计方法的一门学科。
数字电路是由逻辑门电路组成的,逻辑门电路是实现逻辑运算的基本单元。
常见的逻辑门电路有与门、或门、非门、异或门等。
组合逻辑电路是由逻辑门电路组成的,其输出仅与当前的输入有关,而与电路的历史状态无关。
组合逻辑电路的设计方法主要有真值表法、逻辑函数法、卡诺图法等。
三、实验仪器与设备1. 数字逻辑实验箱2. 移动电源3. 连接线4. 逻辑门电路模块5. 计算器四、实验内容1. 逻辑门电路测试(1)测试与门、或门、非门、异或门的功能。
(2)测试逻辑门电路的输出波形。
2. 组合逻辑电路设计(1)设计一个4位二进制加法器。
(2)设计一个4位二进制减法器。
(3)设计一个4位二进制乘法器。
(4)设计一个4位二进制除法器。
五、实验步骤1. 逻辑门电路测试(1)将实验箱上相应的逻辑门电路模块插入实验板。
(2)根据实验要求,连接输入端和输出端。
(3)打开移动电源,将输入端接入逻辑信号发生器。
(4)观察输出波形,记录实验结果。
2. 组合逻辑电路设计(1)根据实验要求,设计组合逻辑电路的原理图。
(2)根据原理图,将逻辑门电路模块插入实验板。
(3)连接输入端和输出端。
(4)打开移动电源,将输入端接入逻辑信号发生器。
(5)观察输出波形,记录实验结果。
六、实验结果与分析1. 逻辑门电路测试实验结果如下:(1)与门:当两个输入端都为高电平时,输出为高电平。
(2)或门:当两个输入端至少有一个为高电平时,输出为高电平。
(3)非门:输入端为高电平时,输出为低电平;输入端为低电平时,输出为高电平。
(4)异或门:当两个输入端不同时,输出为高电平。
2. 组合逻辑电路设计实验结果如下:(1)4位二进制加法器:能够实现两个4位二进制数的加法运算。
一、实验目的1. 熟悉数字逻辑电路的基本原理和基本分析方法。
2. 掌握常用逻辑门电路的原理、功能及实现方法。
3. 学会使用数字逻辑电路实验箱进行实验操作,提高动手能力。
二、实验原理数字逻辑电路是现代电子技术的基础,它由逻辑门电路、触发器、计数器等基本单元组成。
本实验主要涉及以下内容:1. 逻辑门电路:与门、或门、非门、异或门等。
2. 组合逻辑电路:半加器、全加器、译码器、编码器等。
3. 时序逻辑电路:触发器、计数器、寄存器等。
三、实验仪器与设备1. 数字逻辑电路实验箱2. 示波器3. 信号发生器4. 万用表5. 逻辑笔四、实验内容及步骤1. 逻辑门电路实验(1)与门、或门、非门、异或门原理实验步骤:1)按实验箱上的逻辑门电路原理图连接电路;2)使用信号发生器产生输入信号,用逻辑笔观察输出信号;3)分析实验结果,验证逻辑门电路的原理。
(2)组合逻辑电路实验步骤:1)按实验箱上的组合逻辑电路原理图连接电路;2)使用信号发生器产生输入信号,用逻辑笔观察输出信号;3)分析实验结果,验证组合逻辑电路的原理。
2. 时序逻辑电路实验(1)触发器实验步骤:1)按实验箱上的触发器原理图连接电路;2)使用信号发生器产生输入信号,用示波器观察输出信号;3)分析实验结果,验证触发器的原理。
(2)计数器实验步骤:1)按实验箱上的计数器原理图连接电路;2)使用信号发生器产生输入信号,用示波器观察输出信号;3)分析实验结果,验证计数器的原理。
五、实验结果与分析1. 逻辑门电路实验实验结果:通过实验,我们验证了与门、或门、非门、异或门的原理,观察到了输入信号与输出信号之间的逻辑关系。
2. 组合逻辑电路实验实验结果:通过实验,我们验证了半加器、全加器、译码器、编码器的原理,观察到了输入信号与输出信号之间的逻辑关系。
3. 时序逻辑电路实验实验结果:通过实验,我们验证了触发器、计数器的原理,观察到了输入信号与输出信号之间的时序关系。
一、实验背景数字逻辑是计算机科学和电子工程领域的基础学科,研究数字系统的设计和分析。
本次大实验旨在通过实际操作,加深对数字逻辑电路原理的理解,掌握逻辑门电路、组合逻辑电路和时序逻辑电路的设计与实现方法。
二、实验目的1. 理解并掌握数字逻辑电路的基本原理和设计方法。
2. 掌握常用逻辑门电路的功能和应用。
3. 熟悉组合逻辑电路和时序逻辑电路的设计与实现。
4. 提高实验操作能力和问题解决能力。
三、实验内容本次实验共分为三个部分:1. 逻辑门电路实验(1)实验目的:验证常用逻辑门电路的逻辑功能,熟悉各种门电路的逻辑符号。
(2)实验内容:- 测试与非门、或门、与门、异或门、同或门、非门等逻辑门电路的逻辑功能。
- 利用Multisim软件绘制逻辑门电路仿真图,验证逻辑功能。
2. 组合逻辑电路实验(1)实验目的:掌握组合逻辑电路的设计与实现方法。
(2)实验内容:- 设计并实现一个4位二进制加法器。
- 设计并实现一个4位二进制乘法器。
- 利用Multisim软件对设计结果进行仿真验证。
3. 时序逻辑电路实验(1)实验目的:掌握时序逻辑电路的设计与实现方法。
(2)实验内容:- 设计并实现一个异步复位计数器。
- 设计并实现一个同步复位计数器。
- 利用Multisim软件对设计结果进行仿真验证。
四、实验步骤1. 熟悉实验设备,了解实验原理。
2. 根据实验要求,设计电路图。
3. 利用Multisim软件绘制电路图,并进行仿真验证。
4. 将设计好的电路图下载到实验板上,进行实际操作。
5. 观察实验结果,分析实验数据。
五、实验结果与分析1. 逻辑门电路实验:实验结果显示,所有逻辑门电路的逻辑功能均符合预期,验证了实验原理的正确性。
2. 组合逻辑电路实验:- 4位二进制加法器实验:实验结果显示,加法器能够正确实现两个4位二进制数的加法运算。
- 4位二进制乘法器实验:实验结果显示,乘法器能够正确实现两个4位二进制数的乘法运算。
. .. 数字逻辑电路设计--多功能数字钟学院:计算机科学与通信工程专业::学号:指导老师:多功能数字钟一、设计任务及要求(1)拥有正常的时、分、秒计时功能。
(2)能利用实验板上的按键实现校时、校分及清零功能。
(3)能利用实验板上的扬声器做整点报时。
(4)闹钟功能(5)在MAXPLUS II 中采用层次化设计方法进行设计。
(6)在完成全部电路设计后在实验板上下载,验证设计课题的正确性。
二、多功能数字钟的总体设计和顶层原理图作为根据总体设计框图,可以将整个系统分为六个模块来实现,分别是计时模块、校时模块、整点报时模块、分频模块、动态显示模块及闹钟模块。
(1)计时模块该模块使用74LS160构成的一个二十四进制和两个六十进制计数器级联,构成数字钟的基本框架。
二十四进制计数器用于计时,六十进制计数器用于计分和秒。
只要给秒计数器一个1HZ的时钟脉冲,则可以进行正常计时。
分计数器以秒计数器的进位作为计数脉冲。
用两个74160连成24进制的计数器,原图及生成的器件如下:生成的二十四进制计数器注:利用使能端,时钟信号,清零以及预置数功能连成24进制。
用两个74160连成的60进制计数器,原图及生成的器件如下:生成的六十进制计数器(2)校时模块校时模块设计要求实现校时,校分以及清零功能。
*按下校时键,小时计数器迅速递增以调至所需要的小时位。
*按下校分键,分计数器迅速递增以调至所需要的分位。
*按下清零键,将秒计数器清零。
注意事项:①在校分时,分计数器的计数不应对小时位产生影响,因而需要屏蔽此时分计数器的进位信号以防止小时计数器计数。
②利用D触发器进行按键抖动的消除,因为D触发器是边沿触发,在除去时钟边沿到来前一瞬间之外的绝大部分时间都不接受输入,可以消除抖动。
③计时采用1HZ的脉冲驱动计数器计数,而校时则需要较高频率的信号驱动以达到快速校时的目的。
因此这两种脉冲信号就需要两路选择器进行选择,条件即为是否按键。
注:D触发器用于按键的消抖,接更高的频率用于校时和校分,二路选择器用于区分是正常计时还是校时。
(3)整点报时模块计时到59分50秒时,每两秒一次低音报时,整点时进行高音报时。
以不同频率的脉冲信号区分低音和高音报时。
报时的条件是计数器计数至所需要的时间点,因而需要一个比较模块,将分计数器和秒计数器的输出连至比较模块输入端完成比较过程。
注:F1表示计数器分的高位,F0表示分的低位;M1表示秒的高位,M0表示秒的低位。
当时间为59分00,02,04,06,08进行低音报时,当为整点时进行高音报时。
SIGA为1时低音报时,SIGB为1时高音报时。
(4)分频模块在这个系统中需要很多种不同频率的脉冲信号,这些均可以通过一个基准频率分频器生成。
分频器就是一个进制很大的计数器,利用计数器的分频功能,从不同的输出位得到所需要的脉冲信号。
(4)动态显示模块在6个不同的时间段分别将每组时间经过七段译码后输出到6个数码管,当某一组时间的七段码到达时,只点亮对应位置上的数码管,显示相应的数字,6次一个循环,形成一个扫描序列。
利用人眼的视觉暂留则可以同步显示6个数字。
注:CLK 为时钟信号,S 为计数器的小时,F 为分,M 为秒,SELOUT为六路选择器,选择哪个数码管工作,SEGOUT 为七段译码器,使数码管显示数字。
(6)闹钟模块注意事项:① 设定的闹钟的时间应使用新的计数器进行存储,与正常的计时互不干扰。
生成的分频器注: 由于clk 的频率为1024hz ,所以可以定义一个std_logic_vector(9 downto 0),使它不停地从0000000000加到1111111111然后又返回0000000000,由于最低位在clk 脉冲到来时从0变为1,然后又在下一个脉冲变回0,因此最低位的时钟周期为clk 的时钟周期的两倍,它的频率就为clk 频率的确1/2即512hz 。
同理,次高位的频率就为clk 频率的1/2 * 1/2= 1/4,用这种方法就可以得到各种能整除1024的频率,从而实现分频。
器件②与正常计时状态的显示切换。
可以设定一个按键,用于选择是将计时时间还是将闹钟时间送至动态显示模块。
③应实现一个比较模块,当计时到与闹钟时间相等时,则驱动扬声器鸣叫。
④闹钟响声应限定在一定时间内,且在这段时间内应随时可以通过按键取消闹时状态。
闹钟调时和分以及正常计时与闹钟定时之间的选择原图及生成的器件如下:注:输入端CLK为时钟信号,SD清零,NAOZHONG是使计数器正常计时和闹钟定时界面的切换,SE调闹钟的小时,SD调闹钟的分,输出端即为闹钟的小时和分。
闹钟界面和正常计时界面的转换器件如下:注:S表示计时器的时,F表示计时器的分,M表示计数器的秒;SS表示闹钟的时,FF表示闹钟的分;Q为计时和闹钟两个界面的切换开关,ABC为输出的时间。
正常计时时间和设定闹钟时间的比较器件如下:注:S 表示正常计时的小时,F表示闹钟的分;SS表示闹钟的小时,FF表示闹钟的分;Q为闹钟的开关,D当Q为1时,并且正常计时的时间和闹钟时间相等时输出为1,否则为0。
三、心得和体会经过一个星期对数字时钟实践的制作,从中学到了很多。
首先是对EDA 的VHDL语言的更深层次认识,本来觉得EDA编程语言比较麻烦,可是接触了以后也就觉得它还是有它方便的地方,尤其是和图形编程结合的特点。
其次,这个实践其实到目前为止应该还不是一个成功的作品,还是有很多的仿真没有完成,原因可能也是自己的技术不到位。
但是整个制作的过程中,它促进了同学之间的相互沟通,也让我在自己的专业知识的学习过程中,更多的,更好的学习一门知识,用于以后的实践应用中,做这个数字钟的设计中包含了很多不同功能的程序,让我在其中学到了一些程序的中的思路,特别一步一步去把错误的程序改正确是一种很有成就感的事!这样让我学到了更多的知识!特别是在做数字时钟闹钟的那个模块时,我在网上查了好多程序,证实了好多错误的程序并从中更改出正确的程序!相信,现在只是一个起步,以后,我会更好的努力,学习,对EDA孰能生巧。
附录:用VHDL语言写的六十进制计数器如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entityt60_06 isport (clk:in std_logic;clear:in std_logic;c:out std_logic;k1,k0:out std_logic_vector(3 downto 0));endt60_06;architecturet oft60_06 issignal q1,q0:std_logic_vector(3 downto 0);beginprocess(clk,clear)beginif(clear='1')thenq1<="0000";q0<="0000";c<='0';elseif(clk'event and clk='1')thenif(q1="0101" and q0="1001")then-----到59q1<="0000";q0<="0000";c<='1';elsif(q1<"0101" and q0="1001")thenq0<="0000";q1<=q1+'1';c<='0';elsif(q0<"1001") thenq0<=q0+'1';end if;end if;end if;k1<=q1;k0<=q0;end process;endt;用VHDL语言写的报时器源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity alert_06 isport(f1,f0,m1,m0:in std_logic_vector(3 downto 0);siga,sigb:out std_logic);end alert_06;architecture a of alert_06 isbeginsiga<='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 a;用VHDL语言写的分频器的源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin_06 isport (clk:in std_logic;hz512,hz256,hz64,hz4,hz1:out std_logic);end fenpin_06 ;architecture f of fenpin_06 issignal cc: std_logic_vector(9 downto 0);beginprocess(clk)beginif(clk'event and clk='1') thenif(cc="1111111111")thencc<="0000000000";elsecc<=cc+1;end if;end if;end process;hz512<=cc(0);hz256<=cc(1);hz64<=cc(3);hz4<=cc(7);hz1<=cc(9);end f;用VHDL语言写的动态扫描的源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity display_06 isport(clk:in std_logic;s :in std_logic_vector(7 downto 0);f :in std_logic_vector(7 downto 0);m :in std_logic_vector(7 downto 0);selout:out std_logic_vector(5 downto 0);segout:out std_logic_vector(6 downto 0));end display_06 ;architecture a of display_06 issignal number:std_logic_vector(3 downto 0);signal sel :std_logic_vector(5 downto 0);signal seg :std_logic_vector(6 downto 0);signal q :std_logic_vector(2 downto 0);begina:process(clk)beginif(clk'event and clk='1')thenq<=q+1;end if;end process a;process(q)begincase q iswhen"000"=>sel<="000001"; when"001"=>sel<="000010"; when"010"=>sel<="000100"; when"011"=>sel<="001000"; when"100"=>sel<="010000"; when"101"=>sel<="100000";when others=>sel<="000000";end case;end process;processbeginif sel ="000001"thennumber<=m(3 downto 0); elsif sel="000010"thennumber<=m(7 downto 4); elsif sel="000100"thennumber<=f(3 downto 0); elsif sel="001000"thennumber<=f(7 downto 4); elsif sel="010000"thennumber<=s(3 downto 0); elsif sel="100000"thennumber<=s(7 downto 4); elsenumber<="1111";end if;end process;process(number)begincase number iswhen"0000"=>seg<="0111111";when"0001"=>seg<="0000110";when"0010"=>seg<="1011011";when"0011"=>seg<="1001111";when"0100"=>seg<="1100110";when"0101"=>seg<="1101101";when"0110"=>seg<="1111101";when"0111"=>seg<="0000111";when"1000"=>seg<="1111111";when"1001"=>seg<="1101111";when others=>seg<="0000000";end case;end process;selout<=sel;segout<=seg;end a;闹钟界面和正常计时界面之间的切换源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity switch_06 isport(s:in std_logic_vector(7 downto 0);ss:in std_logic_vector(7 downto 0);f:in std_logic_vector(7 downto 0);ff:in std_logic_vector(7 downto 0);m:in std_logic_vector(7 downto 0);Q:in std_logic;A:out std_logic_vector(7 downto 0);B:out std_logic_vector(7 downto 0);C:out std_logic_vector(7 downto 0));end switch_06;architecture a of switch_06 isbeginprocess(Q,s,ss,f,ff,m)Beginif(Q='1') thenA<=ss;B<=ff;C<="00000000";elseA<=s;B<=f;C<=m;end if;end process;end a;正常计时时间和设定的闹钟时间之间的比较的源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity comp_06 is port(s,ss,f,ff:in std_logic_vector(7 downto 0);d:out std_logic;Q:in std_logic);end comp_06;architecture behavior of comp_06 is beginprocess(Q,s,ss,f,ff)beginif(rising_edge(Q))thenif(s=ss and f=ff)thend<='1';else d<='0';end if;end if;end process;end behavior;。