数电实验报告
数电实验报告触发器及其应用(共10篇)
数电实验报告触发器及其应用(共10篇)1、实验目的:掌握触发器的原理和使用方法,学会利用触发器进行计数、存储等应用。
2、实验原理:触发器是一种多稳态数字电路,具有存储、计数、分频、时序控制等功能。
常见的触发器有RS触发器、D触发器、T触发器、JK触发器等。
RS触发器是由两个交叉互连的反相器组成的,它具有两个输入端R(复位)和S(置位),一个输出端Q。
当输入R=1,S=0时,Q=0;当输入R=0,S=1时,Q=1;当R=S=1时,无法确定Q的状态,称为禁态。
JK触发器是将RS触发器的两个输入端合并在一起而成,即J=S,K=R,当J=1,K=0时,Q=1;当J=0,K=1时,Q=0;当J=K=1时,Q反转。
JK触发器具有启动、停止、颠倒相位等功能。
D触发器是由单个输入端D、输出端Q和时钟脉冲输入端组成的,当时钟信号上升沿出现时,D触发器的状态发生改变,如果D=1,Q=1;如果D=0,Q=0。
T触发器只有一个输入端T和一个输出端Q,在每个时钟脉冲到来时,T触发器执行T→Q操作,即若T=1,则Q取反;若T=0,则Q保持不变。
触发器可以组成计数器、分频器、存储器、状态机等各种数字电路,被广泛用于计算机、控制系统等领域。
3、实验器材:数码万用表、示波器、逻辑分析仪、CD4013B触发器芯片、几个电阻、电容、开关、信号发生器等。
4、实验内容:4.1 RS触发器测试利用CD4013B芯片来测试RS触发器的功能,在实验中将RS触发器的输入端分别接入CD4013B芯片的端子,用示波器观察输出端的波形变化,并记录下输入输出关系表格,来验证RS触发器的工作原理。
具体实验步骤如下:将CD4013B芯片的端子按如下接线方式连接:RST1,2脚接入+5V电源,C1个100nF的电容与单位时间5 ns的外部时钟信号交替输入接口CLK,以模拟器件为master时,向器件提供单个时钟脉冲。
测试时选择适宜的数据输入,R1和S2另一端程+5V,S1和R2另一端连接接地GND,用万用表测量各端电压,电容缓存的电压。
数电_实验报告
一、实验目的1. 理解数字电路的基本组成和工作原理;2. 掌握常用数字电路元器件的识别和测试方法;3. 培养数字电路设计和分析能力;4. 熟悉数字电路实验仪器的使用方法。
二、实验内容1. 逻辑门电路实验:包括与门、或门、非门、异或门等;2. 组合逻辑电路实验:包括编码器、译码器、数据选择器等;3. 时序逻辑电路实验:包括触发器、计数器、寄存器等;4. 数字电路仿真实验:使用Multisim软件进行数字电路仿真。
三、实验原理1. 逻辑门电路:逻辑门电路是数字电路的基本单元,根据输入信号的逻辑关系,输出相应的逻辑信号。
常见的逻辑门电路有与门、或门、非门、异或门等。
2. 组合逻辑电路:组合逻辑电路由逻辑门电路组成,其输出仅与当前输入信号有关,与电路历史状态无关。
常见的组合逻辑电路有编码器、译码器、数据选择器等。
3. 时序逻辑电路:时序逻辑电路由触发器组成,其输出不仅与当前输入信号有关,还与电路历史状态有关。
常见的时序逻辑电路有触发器、计数器、寄存器等。
四、实验步骤1. 逻辑门电路实验:(1)搭建与门、或门、非门、异或门等逻辑门电路;(2)观察输入信号与输出信号之间的关系,验证逻辑门电路的功能;(3)测试逻辑门电路的延迟时间。
2. 组合逻辑电路实验:(1)搭建编码器、译码器、数据选择器等组合逻辑电路;(2)观察输入信号与输出信号之间的关系,验证组合逻辑电路的功能;(3)测试组合逻辑电路的延迟时间。
3. 时序逻辑电路实验:(1)搭建触发器、计数器、寄存器等时序逻辑电路;(2)观察输入信号、时钟信号与输出信号之间的关系,验证时序逻辑电路的功能;(3)测试时序逻辑电路的延迟时间。
4. 数字电路仿真实验:(1)使用Multisim软件搭建数字电路;(2)设置输入信号和时钟信号,观察输出信号的变化;(3)分析仿真结果,验证数字电路的功能。
五、实验结果与分析1. 逻辑门电路实验:实验结果表明,与门、或门、非门、异或门等逻辑门电路能够实现预期的逻辑功能。
数字电子技术 实验报告
实验一组合逻辑电路设计与分析1.实验目的(1)学会组合逻辑电路的特点;(2)利用逻辑转换仪对组合逻辑电路进行分析与设计。
2.实验原理组合逻辑电路是一种重要的数字逻辑电路:特点是任何时刻的输出仅仅取决于同一时刻输入信号的取值组合。
根据电路确定功能,是分析组合逻辑电路的过程,一般按图1-1所示步骤进行分析。
图1-1 组合逻辑电路的分析步骤根据要求求解电路,是设计组合逻辑电路的过程,一般按图1-2所示步骤进行设计。
图1-2 组合逻辑电路的设计步骤3.实验电路及步骤(1)利用逻辑转换仪对已知逻辑电路进行分析。
a.按图1-3所示连接电路。
b.在逻辑转换仪面板上单击由逻辑电路转换为真值表的按钮和由真值表导出简化表达式后,得到如图1-4所示结果。
观察真值表,我们发现:当四个输入变量A,B,C,D中1的个数为奇数时,输出为0,而当四个输入变量A,B,C,D 中1的个数为偶数时,输出为1。
因此这是一个四位输入信号的奇偶校验电路。
图1-4 经分析得到的真值表和表达式(2)根据要求利用逻辑转换仪进行逻辑电路的设计。
a.问题提出:有一火灾报警系统,设有烟感、温感和紫外线三种类型不同的火灾探测器。
为了防止误报警,只有当其中有两种或两种以上的探测器发出火灾探测信号时,报警系统才产生报警控制信号,试设计报警控制信号的电路。
b.在逻辑转换仪面板上根据下列分析出真值表如图1-5所示:由于探测器发出的火灾探测信号也只有两种可能,一种是高电平(1),表示有火灾报警;一种是低电平(0),表示正常无火灾报警。
因此,令A、B、C分别表示烟感、温感、紫外线三种探测器的探测输出信号,为报警控制电路的输入、令F 为报警控制电路的输出。
图1-5 经分析得到的真值表(3)在逻辑转换仪面板上单击由真值表到处简化表达式的按钮后得到最简化表达式AC+AB+BC。
4.实验心得通过本次实验的学习,我们复习了数电课本关于组合逻辑电路分析与设计的相关知识,掌握了逻辑转换仪的功能及其使用方法。
数电实验报告【武大电气】
数字电路实验报告专业:电气工程与自动化实验一:组合逻辑电路分析一.实验目的1.熟悉大体逻辑电路的特点。
2.熟悉各类门的实物元件和元件的利用和线路连接。
3.学会分析电路功能.二.实验原理1.利用单刀双掷开关的双接点,别离连接高电平和低电平,开关的掷点不同,门电路输入的电平也不同。
2.门电路的输出端连接逻辑指示灯,灯亮则输出为高电平,灯灭则输出低电平。
3.依次通过门电路的输入电平与输出电平,分析门电路的逻辑关系和实现的逻辑功能。
三.实验元件1.74LS00D2.74LS20D四.实验内容(1)实验内容一:a.实验电路图:由上述实验电路图接线,在开关A B C D选择不同组合的高低电平时,通过对灯X1亮暗的观察,可得出上图的逻辑真值表。
b、逻辑电路真值表:实验分析:•=AB+CD ,一样,由真值表也能推出此由实验逻辑电路图可知:输出X1=AB CD方程,说明此逻辑电路具有与或功能。
(2)实验内容2:密码锁a.实验电路图:D 接着通过实验,改变A B C D 的电平,观察灯泡亮暗,得出真值表如下: b.真值表:实验分析:由真值表(表)可知:当ABCD为1001时,灯X1亮,灯X2灭;其他情况下,灯X1灭,灯X2亮。
由此可见,该密码锁的密码ABCD为1001.因此,可以取得:X1=ABCD,X2=1X。
五.实验体会:1. 这次实验应该说是比较简单,只用到了两种不同的与非门组成一些大体的逻辑电路。
2. 分析组合逻辑电路时,可以通过逻辑表达式,电路图和真值表之间的彼此转换已抵达实验所要求的目的结果。
3. 咱们组在这次实验进程中出现过连线正确但没出现相应的实验结果的情况。
后经分析发现由于实验器材利用的次数较多,有些器材有所损坏,如一些导线表面是好的,其实内部损坏,因此意识到了连接线路时一是要注意器材的选取,二是在接线前必然注意检查各元件的好坏。
实验二:组合逻辑实验(一)半加器和全加器一.实验目的:熟悉几种元器件所带的门电路,掌握用这些门电路设计一些简单的逻辑组合电路的方式。
数电实验报告数码管显示控制电路设计
数电实验报告数码管显示控制电路设计一、实验目的1.学习数码管介绍和使用;2.熟悉数码管控制电路设计思路和方法;3.掌握数码管显示控制电路的实验过程和步骤。
二、实验原理数码管是数字显示器件,具有低功耗、体积小、寿命长等优点。
常见的数码管有共阳极和共阴极两种。
共阳极数码管的阳极端口是一个共用的端口,通过将不同的阴极端口接地来控制数码管的发光情况。
共阴极数码管的阴极端口是一个共用的端口,通过将不同的阳极端口接地来控制数码管的发光情况。
数码管的控制电路可以使用逻辑门电路或微控制器来实现。
本实验采用逻辑门电路来设计数码管显示控制电路。
三、实验器材和器件1.实验板一块;2.74LS47数码管译码器一颗;3.共阴极数码管四个;4.逻辑门IC:7404、7408、7432各一个;5.杜邦线若干。
四、实验步骤1.将74LS47数码管译码器插入实验板上的相应位置,并用杜邦线连接74LS47和逻辑门IC的引脚:1)将74LS47的A、B、C和D引脚依次连接到7408的输入端;2)将74LS47的LE引脚连接到VCC(高电平,表示使能有效);3)将74LS47的BI/RBO引脚连接到GND(低电平,表示译码输出);4)将7408的输出端依次连接到7432的输入端;5)将7432的输出端依次连接到数码管的阴极端口。
2.将四个数码管的阳极端口分别连接到4个控制开关上,并将开关接地。
3.将实验电路接入电源,调整电压和电流,观察数码管的显示情况。
五、实验结果和分析实验结果显示,控制开关的状态可以控制数码管的显示内容。
当其中一控制开关接地时,对应的数码管会显示相应的数字。
通过调整开关的状态,可以实现不同数字的显示。
六、实验总结通过这次实验,我学会了数码管的基本使用方法和控制电路的设计思路。
数码管作为一种数字显示元件,广泛应用于各种电子产品中,掌握其控制方法对于电子工程师来说非常重要。
在今后的学习和工作中,我将继续深入研究数码管的相关知识和应用,提高自己的技术水平。
数电实验报告实验一心得
数电实验报告实验一心得引言本实验是数字电路课程的第一次实验,旨在通过实际操作和观察,加深对数字电路基础知识的理解和掌握。
本次实验主要涉及布尔代数、逻辑门、模拟开关和数字显示等内容。
在实验过程中,我对数字电路的原理和实际应用有了更深入的了解。
实验一:逻辑门电路的实验实验原理逻辑门是数字电路中的基本组件,它能够根据输入的布尔值输出相应的结果。
常见的逻辑门有与门、或门、非门等。
本次实验主要是通过搭建逻辑门电路实现布尔函数的运算。
实验过程1. 首先,我按照实验指导书上的电路图,使用示波器搭建了一个简单的与门电路。
并将输入端连接到两个开关,输出端连接到示波器,以观察电路的输入和输出信号变化。
2. 其次,我打开示波器,观察了两个开关分别为0和1时的输出结果。
当两个输入均为1时,示波器上的信号为高电平,否则为低电平。
3. 我进一步观察了两个开关都为1时的输出信号波形。
通过示波器上的脉冲信号可以清晰地看出与门的实际运行过程,验证了实验原理的正确性。
实验结果和分析通过本次实验,我成功地搭建了一个与门电路,并观察了输入和输出之间的关系。
通过示波器上的信号波形,我更加直观地了解了数字电路中布尔函数的运算过程。
根据实验结果和分析,我可以总结出:1. 逻辑门电路可以根据布尔函数进行输入信号的运算,输出相应的结果。
2. 在与门电路中,当输入信号均为1时,输出信号为1,否则为0。
3. 示例器可以实时显示电路的输入和输出信号波形,方便实验者观察和分析。
结论通过本次实验,我对数字电路的基本原理和逻辑门电路有了更深刻的理解。
我学会了如何搭建逻辑门电路,并通过示波器观察和分析输入和输出信号的变化。
这对我进一步理解数字电路的设计和应用具有重要意义。
通过实验,我还锻炼了动手操作、实际观察和分析问题的能力。
实验过程中,需要认真对待并细致观察电路的运行情况,及时发现和解决问题。
这些能力对于今后的学习和研究都非常重要。
总之,本次实验让我更好地理解了数字电路的基本原理和应用,提高了我的实验能力和观察分析能力。
数电实验报告答案
实验名称:数字电路基础实验实验目的:1. 熟悉数字电路的基本原理和基本分析方法。
2. 掌握数字电路实验设备的使用方法。
3. 培养动手实践能力和分析问题、解决问题的能力。
实验时间:2023年X月X日实验地点:实验室XX室实验仪器:1. 数字电路实验箱2. 万用表3. 双踪示波器4. 数字信号发生器5. 短路线实验内容:一、实验一:基本逻辑门电路实验1. 实验目的- 熟悉与门、或门、非门的基本原理和特性。
- 学习逻辑门电路的测试方法。
2. 实验步骤- 连接实验箱,设置输入端。
- 使用万用表测量输出端电压。
- 记录不同输入组合下的输出结果。
- 分析实验结果,验证逻辑门电路的特性。
3. 实验结果与分析- 实验结果与理论预期一致,验证了与门、或门、非门的基本原理。
- 通过实验,加深了对逻辑门电路特性的理解。
二、实验二:组合逻辑电路实验1. 实验目的- 理解组合逻辑电路的设计方法。
- 学习使用逻辑门电路实现组合逻辑电路。
2. 实验步骤- 根据设计要求,绘制组合逻辑电路图。
- 连接实验箱,设置输入端。
- 测量输出端电压。
- 记录不同输入组合下的输出结果。
- 分析实验结果,验证组合逻辑电路的功能。
3. 实验结果与分析- 实验结果符合设计要求,验证了组合逻辑电路的功能。
- 通过实验,掌握了组合逻辑电路的设计方法。
三、实验三:时序逻辑电路实验1. 实验目的- 理解时序逻辑电路的基本原理和特性。
- 学习使用触发器实现时序逻辑电路。
2. 实验步骤- 根据设计要求,绘制时序逻辑电路图。
- 连接实验箱,设置输入端和时钟信号。
- 使用示波器观察输出波形。
- 记录不同输入组合和时钟信号下的输出结果。
- 分析实验结果,验证时序逻辑电路的功能。
3. 实验结果与分析- 实验结果符合设计要求,验证了时序逻辑电路的功能。
- 通过实验,加深了对时序逻辑电路特性的理解。
四、实验四:数字电路仿真实验1. 实验目的- 学习使用数字电路仿真软件进行电路设计。
数电实验报告
数电实验报告实验目的:本实验旨在通过实际操作,加深对数电原理的理解,掌握数字电子技术的基本原理和方法,培养学生的动手能力和实际应用能力。
实验仪器和设备:1. 示波器。
2. 信号发生器。
3. 逻辑分析仪。
4. 电源。
5. 万用表。
6. 示教板。
7. 电路元件。
实验原理:数电实验是以数字电子技术为基础,通过实验操作来验证理论知识的正确性。
数字电子技术是一种以数字信号为工作对象,利用电子器件实现逻辑运算、数字存储、数字传输等功能的技术。
本次实验主要涉及数字逻辑电路的设计与实现,包括基本逻辑门的组合、时序逻辑电路、触发器等。
实验内容:1. 实验一,基本逻辑门的实验。
在示教板上搭建与非门、或门、与门、异或门等基本逻辑门电路,通过输入不同的逻辑信号,观察输出的变化情况,并记录实验数据。
2. 实验二,时序逻辑电路的实验。
利用触发器、计数器等元件,设计并搭建一个简单的时序逻辑电路,通过改变输入信号,验证电路的功能和正确性。
3. 实验三,逻辑分析仪的应用。
利用逻辑分析仪对实验中的数字信号进行观测和分析,掌握逻辑分析仪的使用方法,提高实验数据的准确性。
实验步骤:1. 按照实验指导书的要求,准备好实验仪器和设备,检查电路连接是否正确。
2. 依次进行各个实验内容的操作,记录实验数据和观察现象。
3. 对实验结果进行分析和总结,查找可能存在的问题并加以解决。
实验结果与分析:通过本次实验,我们成功搭建了基本逻辑门电路,观察到了不同输入信号对输出的影响,验证了逻辑门的功能和正确性。
在时序逻辑电路实验中,我们设计并搭建了一个简单的计数器电路,通过实验数据的记录和分析,验证了电路的正常工作。
逻辑分析仪的应用也使我们对数字信号的观测和分析有了更深入的了解。
实验总结:本次数电实验不仅加深了我们对数字电子技术的理解,还培养了我们的动手能力和实际应用能力。
在实验过程中,我们遇到了一些问题,但通过认真分析和思考,最终都得到了解决。
这次实验让我们深刻体会到了理论与实践相结合的重要性,也让我们对数字电子技术有了更加深入的认识。
数电实验报告 数据选择器及其应用
实验2实验报告数据选择器及其应用一、实验目的1.了解组合逻辑电路的设计步骤、分析方法和测试方法;2.掌握数据选择器的工作原理与逻辑功能;3.掌握双四选一数据选择器74LS153的应用。
二、实验设备1.数字电路实验箱2 、数字双踪示波器3.集成电路: 74LS004、集成电路: 74LS153三、实验内容1.测试双四选一数据选择器74LS153的逻辑功能;2、设某一导弹发射控制机构有两名司令员A.B和两名操作员C.D, 只有当两名司令员均同意发射导弹攻击目标且有操作员操作, 则发射导弹F;3.用74LS00与74LS153设计一位全加器。
四、实验结果1、测试双四选一数据选择器74LS153的逻辑功能。
如图S5和S6分别接A和B, 负责输入地址;S1.S2.S3.S4为上面选择器的四个输入;S7、S8、S9、S10为下面选择器的四个输入。
举例说明:如图所示, 当S5和S6都输入高电平时, 选择输出1C3和2C3的内容, 即S4和S10的输入均为高电平, 小灯亮。
设某一导弹发射控制机构有两名司令员A.B和两名操作员C.D, 只有当两名司令员均同意发射导弹攻击目标且有操作员操作, 则发射导弹F。
由题意可得出逻辑表达式如下:F=AB(C+D)分析: 由于只有A.B都为高电平时F才有可能输出高电平, 所以让A和B作为地址输入端。
而当A.B均为高电平时, C和D任意一个为高电平则F为高电平。
所以用74LS00实现C和电路图如下:S1、S2接地址选择端, S3、S4先做或运算再接1C3端。
2、用74LS00和可以通B S CI过降维将输入位A和B作为地址选择位,进位位和以及0和1作为被选择数据输入,表示S和CO。
真值表如下:A0 0 CI 低0 1 CI非CI1 0 CI非CI1 1 CI 高五、故障排除在做第二个实验内容的时候, 发现A.B值不是高电平的时候小灯也会亮。
经过检查电路发现1C0, 1C1, 1C2悬空了, 相当于接了高电平。
数电设计实验报告
一、实验目的1. 熟悉数字电路的基本组成和设计方法。
2. 学习组合逻辑电路和时序逻辑电路的设计与实现。
3. 掌握Verilog HDL语言进行数字电路的设计与仿真。
4. 提高数字电路分析与设计能力。
二、实验内容本次实验主要设计一个数字钟电路,要求实现以下功能:1. 显示时、分、秒,时间周期为24小时。
2. 时间基准为1秒对应1Hz的时钟信号。
3. 可通过按键进行校时。
三、实验原理数字钟电路主要由以下部分组成:1. 振荡器:产生基准时钟信号。
2. 分频器:将基准时钟信号分频,得到1Hz的时钟信号。
3. 计数器:对1Hz的时钟信号进行计数,实现秒、分、时的计时。
4. 显示器:将计时结果显示出来。
5. 校时电路:通过按键进行校时操作。
四、实验步骤1. 使用Verilog HDL语言编写数字钟电路的代码。
2. 使用ModelSim进行仿真,验证电路功能。
3. 将代码编译并下载到FPGA芯片上。
4. 在FPGA开发板上进行实验,测试电路功能。
五、实验代码```verilogmodule digital_clock(input clk, // 基准时钟信号input rst_n, // 复位信号,低电平有效 input set, // 校时按键output [5:0] h, // 时output [5:0] m, // 分output [5:0] s // 秒);reg [23:0] counter; // 计数器reg [23:0] h_counter; // 时计数器reg [23:0] m_counter; // 分计数器reg [23:0] s_counter; // 秒计数器// 时计数器always @(posedge clk or negedge rst_n) beginif (!rst_n) beginh_counter <= 24'd0;end else beginif (counter >= 24'd86400) beginh_counter <= h_counter + 24'd1;counter <= 24'd0;end else begincounter <= counter + 24'd1;endendend// 分计数器always @(posedge clk or negedge rst_n) begin if (!rst_n) beginm_counter <= 24'd0;end else beginif (h_counter >= 24'd24) beginm_counter <= m_counter + 24'd1; h_counter <= 24'd0;end else beginm_counter <= m_counter + 24'd1; endendend// 秒计数器always @(posedge clk or negedge rst_n) begin if (!rst_n) begins_counter <= 24'd0;end else beginif (m_counter >= 24'd59) begins_counter <= s_counter + 24'd1;m_counter <= 24'd0;end else begins_counter <= s_counter + 24'd1;endendend// 时、分、秒输出assign h = h_counter[5:0];assign m = m_counter[5:0];assign s = s_counter[5:0];endmodule```六、实验结果1. 仿真结果:使用ModelSim对代码进行仿真,验证电路功能。
数电实验报告东大
一、实验目的1. 理解数字电路的基本组成和基本原理。
2. 掌握常用数字电路的分析和设计方法。
3. 提高动手实践能力,加深对数字电路理论知识的理解。
二、实验内容本次实验主要包含以下内容:1. 数字电路基础实验2. 组合逻辑电路实验3. 时序逻辑电路实验三、实验仪器与设备1. 数字电路实验箱2. 数字信号发生器3. 示波器4. 计算器5. 实验指导书四、实验原理1. 数字电路基础实验:通过实验了解数字电路的基本组成和基本原理,包括逻辑门、编码器、译码器等。
2. 组合逻辑电路实验:通过实验掌握组合逻辑电路的分析和设计方法,包括加法器、编码器、译码器、数据选择器等。
3. 时序逻辑电路实验:通过实验掌握时序逻辑电路的分析和设计方法,包括触发器、计数器、寄存器等。
五、实验步骤1. 数字电路基础实验- 连接实验箱,检查电路连接是否正确。
- 按照实验指导书的要求,进行逻辑门、编码器、译码器等电路的实验。
- 观察实验结果,分析实验现象,并记录实验数据。
2. 组合逻辑电路实验- 连接实验箱,检查电路连接是否正确。
- 按照实验指导书的要求,进行加法器、编码器、译码器、数据选择器等电路的实验。
- 观察实验结果,分析实验现象,并记录实验数据。
3. 时序逻辑电路实验- 连接实验箱,检查电路连接是否正确。
- 按照实验指导书的要求,进行触发器、计数器、寄存器等电路的实验。
- 观察实验结果,分析实验现象,并记录实验数据。
六、实验结果与分析1. 数字电路基础实验- 通过实验,验证了逻辑门、编码器、译码器等电路的基本原理和功能。
- 实验结果符合理论预期,验证了数字电路的基本组成和基本原理。
2. 组合逻辑电路实验- 通过实验,掌握了组合逻辑电路的分析和设计方法。
- 实验结果符合理论预期,验证了组合逻辑电路的基本原理。
3. 时序逻辑电路实验- 通过实验,掌握了时序逻辑电路的分析和设计方法。
- 实验结果符合理论预期,验证了时序逻辑电路的基本原理。
数电实验报告
(1)加法器实现2位乘法电路原理?利用的是2位二进制乘法的展开式来设计电路的,先用与门做二进制的与运算,再把与结果高位对高地址,低位对低地址相加就可以设计出电路。
(2)4位可控加/减法电路控制模块关键是什么?关键模块在于BCD加法器,在利用补码进行累加计算的过程中需要修正电路。
(3)DACo832工作方式有哪些?直通型方式、单缓冲方式和双缓冲方式。
①当I1E为高电平,CS和WRI位高电平时,1E1信号是的8位输入数据锁存器有效,输入的数据存入输入锁存器。
当需要DA转换时,使WR2和XFER位高电平,1E2信号使得8位DA锁存器有效,将数据置入DA锁存器中,并进行DA转换,这是双缓冲工作方式。
②在DAC0832中,使两个锁存器中的一个常处于开通状态,只控制一个锁存器的锁存或者使两个锁存器同时工作,这是单缓冲工作方式。
③使两个锁存器完全处于开通状态,锁存器输出随数字变化而变化,称为直通工作方式。
(5)引入竞争与冒险现象,探究其产生原因。
在电路设计中使用多种逻辑门如:与非门、或非门等,将一个门电路多个输入端信号同时跳变,或者一个信号经由不同的路径传到同一个门的输入端致使信号到达的时间不同,从而在电路输出端产生尖峰脉冲,这种现象称为竞争一一冒险。
(6)测量输出信号失真方法有哪些?失真度是用一个未经放大器放大前的信号与放大后的信号作比较的差别,其单位为百分比,在这里表征一个信号偏离纯正弦信号的程度。
信号处理方法大致可分为两类:模拟法和数字化方法。
模拟法:指测量中直接应用模拟电路对信号处理测量失真度的方法。
基于模拟法的失真度测量仪由于前级电路有源器件的非线形,因此对小信号的测量不够准确。
具体包含基波抑制法和谐波分析法。
数字化方法:是指首先通过数据采集卡将被测信号量化,再对测量数据处理计算出失真度的测量方法。
按照量程分为一般失真度测量0.1%~100%、小失真度测量0.01%~30%和超低失真度测量0.001%-10%,按照自动化的程度可分为半自动失真度测量和自动失真度测量;信号处理方法大致可分为两类:(7)估算或测量【发挥部分】输入到输出的时间?ADC0809转换时间为130μs(时钟为SOOKHz时)。
数电项目实验报告(3篇)
第1篇一、实验目的1. 理解数字电路的基本概念和组成原理。
2. 掌握常用数字电路的分析方法。
3. 培养动手能力和实验技能。
4. 提高对数字电路应用的认识。
二、实验器材1. 数字电路实验箱2. 数字信号发生器3. 示波器4. 短路线5. 电阻、电容等元器件6. 连接线三、实验原理数字电路是利用数字信号进行信息处理的电路,主要包括逻辑门、触发器、计数器、寄存器等基本单元。
本实验通过搭建简单的数字电路,验证其功能,并学习数字电路的分析方法。
四、实验内容及步骤1. 逻辑门实验(1)搭建与门、或门、非门等基本逻辑门电路。
(2)使用数字信号发生器产生不同逻辑电平的信号,通过示波器观察输出波形。
(3)分析输出波形,验证逻辑门电路的正确性。
2. 触发器实验(1)搭建D触发器、JK触发器、T触发器等基本触发器电路。
(2)使用数字信号发生器产生时钟信号,通过示波器观察触发器的输出波形。
(3)分析输出波形,验证触发器电路的正确性。
3. 计数器实验(1)搭建异步计数器、同步计数器等基本计数器电路。
(2)使用数字信号发生器产生时钟信号,通过示波器观察计数器的输出波形。
(3)分析输出波形,验证计数器电路的正确性。
4. 寄存器实验(1)搭建移位寄存器、同步寄存器等基本寄存器电路。
(2)使用数字信号发生器产生时钟信号和输入信号,通过示波器观察寄存器的输出波形。
(3)分析输出波形,验证寄存器电路的正确性。
五、实验结果与分析1. 逻辑门实验通过实验,验证了与门、或门、非门等基本逻辑门电路的正确性。
实验结果表明,当输入信号满足逻辑关系时,输出信号符合预期。
2. 触发器实验通过实验,验证了D触发器、JK触发器、T触发器等基本触发器电路的正确性。
实验结果表明,触发器电路能够根据输入信号和时钟信号产生稳定的输出波形。
3. 计数器实验通过实验,验证了异步计数器、同步计数器等基本计数器电路的正确性。
实验结果表明,计数器电路能够根据输入时钟信号进行计数,并输出相应的输出波形。
数电实验报告
一、实验目的1. 理解数字电路的基本组成和工作原理。
2. 掌握常用数字电路的设计方法和应用。
3. 熟悉数字电路实验设备和工具的使用。
4. 培养实际操作能力和创新思维。
二、实验原理数字电路是利用数字信号进行信息处理和传输的电路。
它主要由逻辑门、触发器、计数器、译码器等基本单元组成。
本实验主要涉及以下几种数字电路:1. 逻辑门:实现基本的逻辑运算,如与、或、非、异或等。
2. 触发器:存储一位二进制信息,是实现时序逻辑的基础。
3. 计数器:对输入脉冲进行计数,广泛应用于计时、分频等领域。
4. 译码器:将二进制代码转换为其他形式的信号。
三、实验内容1. 逻辑门电路实验:验证基本逻辑门的功能,包括与门、或门、非门、异或门等。
2. 触发器电路实验:验证D触发器、JK触发器、SR触发器等的功能。
3. 计数器电路实验:设计并验证二进制计数器、十进制计数器、可逆计数器等。
4. 译码器电路实验:设计并验证二进制译码器、七段显示译码器等。
四、实验步骤1. 逻辑门电路实验:- 将基本逻辑门电路连接到实验板上。
- 输入不同的逻辑信号,观察输出结果。
- 验证基本逻辑门的功能。
2. 触发器电路实验:- 将D触发器、JK触发器、SR触发器等电路连接到实验板上。
- 输入不同的时钟信号和输入信号,观察输出结果。
- 验证触发器的功能。
3. 计数器电路实验:- 设计并搭建二进制计数器、十进制计数器、可逆计数器等电路。
- 输入不同的时钟信号,观察计数器的输出结果。
- 验证计数器的功能。
4. 译码器电路实验:- 设计并搭建二进制译码器、七段显示译码器等电路。
- 输入不同的二进制代码,观察译码器的输出结果。
- 验证译码器的功能。
五、实验结果与分析1. 逻辑门电路实验:通过实验验证了基本逻辑门的功能,如与门、或门、非门、异或门等。
2. 触发器电路实验:通过实验验证了D触发器、JK触发器、SR触发器等的功能,掌握了触发器的基本工作原理。
3. 计数器电路实验:通过实验设计并验证了二进制计数器、十进制计数器、可逆计数器等,掌握了计数器的设计方法和应用。
数电实验实验报告四译码器和数据选择器
数电实验实验报告四译码器和数据选择器引言:本实验旨在了解和掌握四译码器和数据选择器的原理和应用。
四译码器是数字电子电路中常见的器件,它将一个四位的二进制输入信号转换为一个十六位的输出信号。
数据选择器是另外一种常见的数字电路设备,它根据一个控制信号选择多个输入信号中的其中一个输出。
通过本实验,我们将深入学习和理解这些器件的工作原理和应用。
一、实验内容1.实验仪器和器件的使用本实验使用了以下工具和器材:数字万用表、集成电路74LS138、74LS151和74LS1532.实验步骤(1)将74LS138、74LS151和74LS153集成电路插入实验台的插座中。
(2)根据实验电路图连接电路。
(3)使用数字万用表检查电路连接的正确性。
(4)接通电源,观察四译码器和数据选择器的工作情况。
(5)根据实验要求,进行不同的输入输出组合测试。
(6)记录实验结果并分析。
二、实验原理1.四译码器四译码器是一种数字电路器件,它将一个四位的二进制输入信号转换为一个十六位的输出信号。
常见的四译码器有74LS138、74LS138采用电平译码的方式实现,当满足选择条件时,一个指定的输出信号会变为低电平,其他输出信号为高电平。
具体的工作原理如下:输入信号A、B、C用于选择要输出的信号。
当输入信号满足以下条件时,对应的输出Y变为低电平,其他输出Y为高电平:Y0=ABCY1=ABCY2=ABCY3=ABCY4=ABCY5=ABCY6=ABCY7=ABC数据选择器是另外一种常见的数字电路设备,它根据一个控制信号选择多个输入信号中的其中一个输出。
常见的数据选择器有74LS151和74LS153、74LS151是一个8位数据选择器,它有三个2位选择信号,根据选择信号选择要输出的数据。
74LS153是一个4位数据选择器,它有两个2位选择信号。
具体的工作原理如下:选择信号A、B用于选择要输出的数据。
当选择信号满足以下条件时,对应的数据输出:对于74LS151:Y0=D0Y1=D1Y2=D2Y3=D3Y4=D4Y5=D5Y6=D6Y7=D7对于74LS153:Y0=S0Y1=S1Y2=S1Y3=S1三、实验结果和分析在本次实验中,我们连接了74LS138、74LS151和74LS153三个集成电路,并根据实验要求进行了不同的输入输出组合测试。
北邮数电综合实验报告
北邮数电综合实验报告北邮数电综合实验报告一、实验目的与背景数电综合实验是北邮电子信息工程专业的重要实践环节,旨在通过实际操作,巩固和应用学生在数字电路、模拟电路、通信原理等相关课程中所学到的理论知识。
本实验报告将对数电综合实验的内容、过程和结果进行详细描述和分析。
二、实验内容本次数电综合实验的主要内容为设计一个数字电子钟。
该电子钟具备显示时间、日期、闹钟功能,并能实现闹钟的设置、开关控制等基本操作。
实验中,我们需要使用数字集成电路、显示模块、按键开关、时钟模块等元件进行电路设计和搭建。
三、实验过程1. 硬件设计与连接根据实验要求,我们首先进行电路设计。
根据数字电子钟的功能需求,我们需要选取适当的集成电路和模块。
通过分析电路原理图,我们将各个模块进行连接,保证信号的正确传递和控制。
2. 软件编程与调试在硬件连接完成后,我们需要进行软件编程。
通过使用C语言或者Verilog等编程语言,我们可以实现数字电子钟的各项功能。
在编程过程中,我们需要考虑到时钟频率、显示模块的控制、按键开关的响应等因素。
3. 实验调试与测试完成软件编程后,我们需要进行实验调试和测试。
通过连接电源,观察电子钟的各项功能是否正常工作。
如果发现问题,我们需要进行调试,找出问题所在,并进行修复。
四、实验结果与分析经过实验调试和测试,我们成功实现了数字电子钟的设计和搭建。
该电子钟能够准确显示时间和日期,并能根据用户的设置进行闹钟的开关和响铃。
通过实验过程,我们对数字电路的原理和应用有了更深入的理解。
五、实验心得与收获通过参与数电综合实验,我深刻体会到了理论与实践的结合的重要性。
在实验中,我们需要将课堂上所学的知识应用到实际中,通过实际操作来巩固和加深对知识的理解。
同时,实验中也锻炼了我们的动手能力和解决问题的能力。
在实验过程中,我们还学会了团队合作的重要性。
在设计和搭建电路的过程中,我们需要相互配合,互相帮助,共同解决问题。
通过与同学们的合作,我们不仅解决了实验中遇到的各种问题,还加深了与同学们的交流和友谊。
数电 实验报告
数电实验报告数电实验报告引言:数电实验是电子信息类专业的基础实验之一,通过实践操作,加深学生对数字电路的理解和应用能力。
本文将结合实际实验,对数电实验进行详细的报告。
一、实验目的本次实验的主要目的是通过设计、搭建并测试数字电路,加深对数字电路基本原理的理解,并掌握数字电路的设计和调试方法。
二、实验器材和原理本次实验所需的器材包括数字逻辑实验箱、示波器、函数信号发生器等。
实验原理主要涉及数字逻辑门电路、触发器、计数器等。
三、实验步骤与结果1. 实验一:基本逻辑门电路的设计与测试在实验一中,我们根据所学的逻辑门电路的知识,设计了与门、或门和非门电路,并使用实验箱搭建电路。
通过输入不同的信号,观察输出结果,验证电路的正确性。
实验结果显示,逻辑门电路能够根据输入信号的不同进行逻辑运算,并输出相应的结果。
2. 实验二:触发器的设计与测试在实验二中,我们学习了触发器的基本原理和应用。
通过搭建RS触发器和D触发器电路,并使用函数信号发生器输入时钟信号和触发信号,观察触发器的输出。
实验结果表明,触发器能够根据输入的时钟信号和触发信号,在特定条件下改变输出状态。
3. 实验三:计数器的设计与测试在实验三中,我们学习了计数器的基本原理和应用。
通过搭建二进制计数器电路,使用示波器观察计数器的输出波形,并验证计数器的功能。
实验结果显示,计数器能够根据输入的时钟信号,按照一定规律进行计数,并输出相应的结果。
四、实验总结与心得体会通过本次数电实验,我深刻理解了数字电路的基本原理和设计方法。
在实验过程中,我不仅学会了使用实验器材进行电路搭建和测试,还掌握了数字电路的调试技巧。
通过不断的实践操作,我对数字电路的理论知识有了更加深入的理解。
在今后的学习和工作中,我将继续加强对数字电路的学习和应用,不断提高自己的实践能力。
同时,我也明白了实验中的每一个细节都非常重要,只有严格按照实验步骤进行操作,才能保证实验结果的准确性和可靠性。
总之,本次数电实验是我在数字电路领域的一次重要实践,通过实验的过程,我不仅巩固了理论知识,还培养了自己的动手操作和问题解决能力。
数电综合实验报告(3篇)
第1篇一、实验目的1. 巩固和加深对数字电路基本原理和电路分析方法的理解。
2. 掌握数字电路仿真工具的使用,提高设计能力和问题解决能力。
3. 通过综合实验,培养团队合作精神和实践操作能力。
二、实验内容本次实验主要分为以下几个部分:1. 组合逻辑电路设计:设计一个4位二进制加法器,并使用仿真软件进行验证。
2. 时序逻辑电路设计:设计一个4位计数器,并使用仿真软件进行验证。
3. 数字电路综合应用:设计一个数字时钟,包括秒、分、时显示,并使用仿真软件进行验证。
三、实验步骤1. 组合逻辑电路设计:(1)根据题目要求,设计一个4位二进制加法器。
(2)使用Verilog HDL语言编写代码,实现4位二进制加法器。
(3)使用ModelSim软件对加法器进行仿真,验证其功能。
2. 时序逻辑电路设计:(1)根据题目要求,设计一个4位计数器。
(2)使用Verilog HDL语言编写代码,实现4位计数器。
(3)使用ModelSim软件对计数器进行仿真,验证其功能。
3. 数字电路综合应用:(1)根据题目要求,设计一个数字时钟,包括秒、分、时显示。
(2)使用Verilog HDL语言编写代码,实现数字时钟功能。
(3)使用ModelSim软件对数字时钟进行仿真,验证其功能。
四、实验结果与分析1. 组合逻辑电路设计:通过仿真验证,所设计的4位二进制加法器能够正确实现4位二进制加法运算。
2. 时序逻辑电路设计:通过仿真验证,所设计的4位计数器能够正确实现4位计数功能。
3. 数字电路综合应用:通过仿真验证,所设计的数字时钟能够正确实现秒、分、时显示功能。
五、实验心得1. 通过本次实验,加深了对数字电路基本原理和电路分析方法的理解。
2. 掌握了数字电路仿真工具的使用,提高了设计能力和问题解决能力。
3. 培养了团队合作精神和实践操作能力。
六、实验改进建议1. 在设计组合逻辑电路时,可以考虑使用更优的电路结构,以降低功耗。
2. 在设计时序逻辑电路时,可以尝试使用不同的时序电路结构,以实现更复杂的逻辑功能。
数电实验报告_触发器
一、实验目的1. 理解触发器的概念和基本原理;2. 掌握触发器的逻辑功能和应用;3. 熟悉触发器电路的搭建和调试方法;4. 通过实验验证触发器的功能和应用。
二、实验原理触发器是一种具有记忆功能的电子电路,能够存储一个二进制信息。
它根据输入信号的变化,在一定的条件下可以改变其输出状态,从而实现数据的存储和传递。
触发器是数字电路中的基本单元,广泛应用于计数器、寄存器、存储器等数字系统中。
触发器主要分为两大类:电平触发器和边沿触发器。
电平触发器在输入信号保持一定电平期间,输出状态才会发生变化;而边沿触发器仅在输入信号的跳变沿处改变输出状态。
常见的触发器有RS触发器、D触发器、JK触发器和T触发器等。
以下分别介绍这些触发器的原理和逻辑功能。
1. RS触发器:由两个与非门交叉耦合而成,具有两个输入端(S、R)和两个输出端(Q、Q')。
当S=0,R=1时,触发器置1;当S=1,R=0时,触发器置0;当S=0,R=0时,触发器保持原状态;当S=1,R=1时,触发器处于不确定状态。
2. D触发器:由一个与非门和两个反相器组成,具有一个输入端(D)和两个输出端(Q、Q')。
当输入信号D变化时,触发器的输出状态随之变化,即D=1时,Q=1;D=0时,Q=0。
3. JK触发器:由两个与非门交叉耦合而成,具有两个输入端(J、K)和两个输出端(Q、Q')。
当J=K=0时,触发器保持原状态;当J=1,K=0时,触发器置1;当J=0,K=1时,触发器置0;当J=K=1时,触发器翻转。
4. T触发器:由一个与非门和两个反相器组成,具有一个输入端(T)和两个输出端(Q、Q')。
当T=1时,触发器翻转;当T=0时,触发器保持原状态。
三、实验内容及步骤1. 触发器电路搭建:根据实验原理,搭建RS触发器、D触发器、JK触发器和T触发器电路。
2. 触发器功能测试:通过改变输入信号,观察输出端Q的逻辑信号及其下一逻辑状态,验证触发器的逻辑功能。
数电实验五触发器实验报告
数电实验五触发器实验报告一、实验目的二、实验原理三、实验器材四、实验步骤五、实验结果分析六、实验总结一、实验目的本次数电实验旨在通过触发器实验,加深学生对于触发器的理解和应用,掌握触发器的工作原理及其在电路中的应用。
二、实验原理1. 触发器概述触发器是一种存储器件,可以将输入信号转换成稳定的输出信号,并且能够记住先前输入过的状态。
触发器有两个稳态(高电平或低电平),并且只有在时钟信号到来时才会改变状态。
2. SR锁存器SR锁存器是最简单的触发器之一,由两个交叉耦合反相输出(NOR或NAND)门构成。
当S=1,R=0时,Q=1;当S=0,R=1时,Q=0;当S=R=0时,保持上一个状态不变。
但是SR锁存器存在一个致命缺陷——SET和RESET不能同时为1。
3. D锁存器D锁存器是由一个数据输入口和一个时钟输入口组成。
当D为1且时钟信号到来时,Q会被置为1;当D为0且时钟信号到来时,Q会被置为0。
D锁存器可以看做是SR锁存器的一种特殊情况,即S=D,R=not D。
4. JK锁存器JK锁存器是由J、K、时钟和输出端Q组成的。
当J=1,K=0时,Q=1;当J=0,K=1时,Q=0;当J=K=1时,Q状态取反;当J=K=0时,保持上一个状态不变。
JK锁存器可以看做是SR锁存器的一种改进型。
5. T锁存器T锁存器是由T、时钟和输出端Q组成的。
当T为1且时钟信号到来时,Q状态取反;当T为0且时钟信号到来时,保持上一个状态不变。
T锁存器可以看做是JK锁存器的一种特殊情况,即J=T,K=not T。
三、实验器材本次实验所需材料如下:- 数字电路实验箱- 74LS73触发器芯片- 电源线、万用表等四、实验步骤1. 按照电路图连接74LS73芯片。
2. 打开电源并接通电路。
3. 分别将CLK输入高低电平,并记录输出结果。
4. 将D输入高低电平,并记录输出结果。
5. 将J、K输入高低电平,并记录输出结果。
6. 将T输入高低电平,并记录输出结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京邮电大学数字电路与逻辑设计实验简易电子琴演奏器班级:学号:姓名:一.设计课题的任务要求题目五简易电子琴演奏器原理概述:根据声乐知识,产生音乐的两个因素是音乐频率的持续时间,音乐的十二平均率规定,每两个八音度之间的频率相差一倍,在两个八音度之间,又可分为12个半音。
每两个半音的频率比为4。
另外,音名A(乐谱中的低音6)的频率为440HZ,音名B到C之间,E到F之间为半音,其余为全音。
由此可以计算出乐谱中从低音1到高音1之间每个音名的频率如下表所示。
基本要求:1、用8×8点阵显示“1 2 3 4 5 6 7”七个音符构成的电子琴键盘。
其中点阵的第一列用一个LED点亮表示音符“1”,第二列用二个LED点亮表示音符“2”,依此类推,如下图所示。
图1 点阵显示的电子琴键盘2、用BTN1~BTN7七个按键模拟电子琴手动演奏时的“1 2 3 4 5 6 7”七个音符。
当某个按键按下时,数码管显示相应的音符,点阵上与之对应的音符显示列全灭,同时蜂鸣器演奏相应的声音;当按键弹开时数码管显示的音符灭掉,点阵显示恢复,蜂鸣器停止声音的输出。
下图所示为按下BTN3按键时点阵的显示情况。
图2 按键按下后的点阵显示3、由拨码开关切换选择高、中、低音,并用数码管进行相应的显示。
4、通过按键BTN0进行复位,控制点阵显示图1的初始状态。
提高要求:1、可通过一个拨码开关进行手动/自动演奏的切换,并与点阵显示配合增加自动演奏乐曲的功能。
2、增加手动演奏的音符存储、播放功能。
二、系统设计(包括设计思路、总体框图、分块设计)设计思路电子琴的设计主要包括了显示与发声部分,发声部分主要分为三个不同的音阶,每个音阶包括了七个音,发生部分可以通过对50M晶振的分频,通过改变分频系数,得到响应频率的时钟脉冲,以这个脉冲控制蜂鸣器发出声音;显示部分则包括了数码管的音阶显示与点阵的琴键显示。
数码管可以动态显示出音阶与当前音符,点阵则模拟显示琴键,动态显示实现了一个三角阵,并对应到音符琴键,这两个显示模块可以通过动态显示来实现显示显示不同的内容,配合按键可以实现基本功能。
不同的音阶可以通过相应拨码开关的选择来调节,至于显示的复位,则不需要专门设置键位来完成,因为每个转台结束后就会自动转入等待状态。
对于音调,乐曲的12平均率规定:每2个八度音之间的频率相差1倍。
在2个八度音之间,又可分为12个半音,每2个半音的频率比为12√2。
另外,音符A 的频率为440Hz,音符B到C之间、E到F之间为半音,其余为全音。
由此可以计算出简谱中从低音1到高音1之间每个音符的频率。
而对于节拍,如果将一拍的长度定为1秒,则1/4拍的时间为1/4秒,为其提供一个4Hz的时钟频率即可产生出1/4拍的效果了。
若需要半拍,只需将该音符记录两次就可以了。
总体框图3、分块设计程序使用了分块思想,一共两个文件,包括发声与显示部分以及自动播放程序。
发声部分:【分频器】由50M晶振,通过事先得知的频率,得到分频系数,可以控制系数得到不同的发音。
由于存在三个音阶,所以设置了三组分频系数。
【蜂鸣器】由分频后的时钟频率控制,在触发按键后由蜂鸣器发出声音。
【音阶选择】设置三个不同的拨码开关,分别控制高中低音的选择,拨动相应开关,进入相应的状态。
显示部分:【扫描分频】用一个较高频率的时钟控制对数码管选通的扫描以及对于点阵的行扫描。
【译码器】同多一个八位的二进制数,完成对数字音符及字幕音阶的编码,点阵的编码较为简单,在行扫描的状态下,控制每列显示的内容。
【点阵】动态扫描显示出基本要求中的状态,从左至右分别在每一列点亮一个,两个至多个。
【数码管】使用了两个数码管,动态扫描显示出了音符与音阶。
输入部分:【键盘】键盘在两部分中都有涉及,控制相应点阵灭掉以及蜂鸣器发声。
自动播放部分主要涉及一个音符存储的文件,但在这部分由于我使用了一个整数数组对音符编码。
所以又在发声与显示部分重复了部分代码。
三、仿真波形及波形分析仿真波形存在一定问题,首先是毛刺,不同进程间最容易出现类似问题,对于琴键的输入控制的不是很好,因为程序设定为在同一时刻只能有一个音符有效,如果在同一个上升沿到来时,存在多个琴键输入,那么就不存在有效输出,所以蜂鸣器的电平存在大段为零的情况,点阵输入采用了行扫描的情况,所以行的显示是分段出现低电平,且一段时间内只选通一位,所以为7个‘1’,1个‘0’。
列显示基本正常。
数码管情况类似。
四、源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY music ISPORT (CAT: OUT STD_LOGIC_VECTOR(5 DOWNTO 0); --六个数码管DIGITAL:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); --七小段数码管CLK: IN STD_LOGIC;BTN: IN STD_LOGIC_VECTOR(7 DOWNTO 0); --8个按键LED_R: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --点阵横着的8个管教LED_C: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --点阵竖着的8个管脚BEEP: OUT STD_LOGIC; --蜂鸣器KEY_SW:IN STD_LOGIC_VECTOR(1 DOWNTO 0); --选择低、中、高音AUTO_SW: IN STD_LOGIC --自动播放开关);END music;ARCHITECTURE music_body OF music ISSIGNAL TEMP_CAT: STD_LOGIC_VECTOR(5 DOWNTO 0); --六个数码管SIGNAL TEMP_DIGITAL:STD_LOGIC_VECTOR(6 DOWNTO 0); --七小段数码管SIGNAL TEMP_R: STD_LOGIC_VECTOR(7 DOWNTO 0); --点阵横列SIGNAL TEMP_C:STD_LOGIC_VECTOR(7 DOWNTO 0); --点阵数列SIGNAL LED_CLK:STD_LOGIC;SIGNAL LED_COUNT:INTEGER RANGE 0 TO 100; --点阵分频时用来计数SIGNAL MUSIC_COUNT:INTEGER RANGE 0 TO 200000; --音符分频时用来计数SIGNAL MUSIC_FRE:INTEGER RANGE 0 TO 200000; --音符分频比SIGNAL AUTO_COUNT1:INTEGER RANGE 0 TO 12500000; --50M除以12500000就等于4HZSIGNAL AUTO_COUNT2:INTEGER RANGE 0 TO 100; --AUTO_COUNT1加到12500000 AUTO_COUNT2就加1,相当于一个AUTO_COUNT2就等于0.25sSIGNAL TEMP_KEY_SW:STD_LOGIC_VECTOR(1 DOWNTO 0); --自动播放开关的临时变量SIGNAL TEMP_KEY_AUTO: STD_LOGIC_VECTOR(7 DOWNTO 0); --按键临时变量,用于自动播放SIGNAL TEMP_KEY: STD_LOGIC_VECTOR(7 DOWNTO 0); --按键临时变量,用于手动播放,即BTN的输入BEGINP1:PROCESS(BTN,KEY_SW) --一直把BTN的值付给临时变量TEAM_KEYBEGINTEMP_KEY <=BTN;TEMP_KEY_SW <=KEY_SW;END PROCESS P1;P2:PROCESS(CLK,MUSIC_FRE) --对应音符分频BEGINIF CLK'EVENT AND CLK='1' THENIF MUSIC_COUNT=MUSIC_FRE THEN --对于每个音符对应不同的分频比MUSIC_FREMUSIC_COUNT<=0;ELSEMUSIC_COUNT<=MUSIC_COUNT+1;END IF;END IF;END PROCESS P2;P3:PROCESS(MUSIC_COUNT,MUSIC_FRE) --经测试需要再把频率二分频一下,实验书上的频率不准,当达到此频率时蜂鸣器响BEGINIF MUSIC_COUNT<= MUSIC_FRE/2 THENBEEP<='0';ELSEBEEP<='1';END IF;END PROCESS P3;P4:PROCESS (CLK) --点阵分频进程,点阵扫描频率为250000HZ BEGINIF(CLK'EVENT AND CLK = '1') THENIF LED_COUNT=100 THENLED_COUNT<=0;LED_CLK<= NOT LED_CLK;ELSELED_COUNT <= LED_COUNT+1;END IF;END IF;END PROCESS P4;P5:PROCESS(LED_CLK) --点阵循环扫描BEGINIF LED_CLK'EVENT AND LED_CLK ='1' THENCASE TEMP_C ISWHEN "00000001" => TEMP_C <= "00000010";WHEN "00000010" => TEMP_C <= "00000100";WHEN "00000100" => TEMP_C <= "00001000";WHEN "00001000" => TEMP_C <= "00010000";WHEN "00010000" => TEMP_C <= "00100000";WHEN "00100000" => TEMP_C <= "01000000";WHEN OTHERS => TEMP_C <= "00000001";END CASE;END IF;END PROCESS P5;P6:PROCESS(TEMP_C,TEMP_KEY,TEMP_KEY_AUTO,TEMP_KEY_SW) --对不同按键及高低音的不同的反应VARIABLE TEMP_FRE:INTEGER RANGE 0 TO 200000;BEGINCASE TEMP_KEY_SW IS --切换低、中、高音WHEN "00" => MUSIC_FRE <= TEMP_FRE*2; --低WHEN "10" => MUSIC_FRE <= TEMP_FRE/2; --高WHEN OTHERS => MUSIC_FRE <=TEMP_FRE; --中END CASE;CASE TEMP_C ISWHEN "00000001" => TEMP_R <= "11111110"; --点阵第一列亮WHEN "00000010" => TEMP_R <= "11111100"; --点阵第二列亮WHEN "00000100" => TEMP_R <= "11111000"; --点阵第三列亮WHEN "00001000" => TEMP_R <= "11110000"; --点阵第四列亮WHEN "00010000" => TEMP_R <= "11100000"; --点阵第五列亮WHEN "00100000" => TEMP_R <= "11000000"; --点阵第六列亮WHEN OTHERS => TEMP_R <= "10000000"; --点阵第七列亮END CASE;IF (AUTO_SW='1') THEN -- 这个if语句块和下面一个语句块,一个用于自动播放,一个用于手动CASE TEMP_KEY_AUTO ISWHEN "00000010" =>TEMP_FRE:=95557;IF TEMP_C="00000001" THEN TEMP_R<="11111111"; END IF;WHEN "00000100" =>TEMP_FRE:=85131;IF TEMP_C="00000010" THEN TEMP_R<="11111111"; END IF;WHEN "00001000" =>TEMP_FRE:=75844;IF TEMP_C="00000100" THEN TEMP_R<="11111111"; END IF;WHEN "00010000" =>TEMP_FRE:=71586;IF TEMP_C="00001000" THEN TEMP_R<="11111111"; END IF;WHEN "00100000" =>TEMP_FRE:=63776;IF TEMP_C="00010000" THEN TEMP_R<="11111111"; END IF;WHEN "01000000" =>TEMP_FRE:=56818;IF TEMP_C="00100000" THEN TEMP_R<="11111111"; END IF;WHEN "10000000" =>TEMP_FRE:=50620;IF TEMP_C="01000000" THEN TEMP_R<="11111111"; END IF;WHEN OTHERS =>TEMP_FRE:=0;END CASE ;END IF;IF (AUTO_SW='0') THENCASE TEMP_KEY ISWHEN "00000010" =>TEMP_FRE:=95557;IF TEMP_C="00000001" THEN TEMP_R<="11111111"; END IF; --当按BTN1时跳过第一列,及第一列不亮WHEN "00000100" =>TEMP_FRE:=85131;IF TEMP_C="00000010" THEN TEMP_R<="11111111"; END IF; --当按BTN1时跳过第二列,及第二列不亮WHEN "00001000" =>TEMP_FRE:=75844;IF TEMP_C="00000100" THENTEMP_R<="11111111"; END IF; --当按BTN1时跳过第三列,及第三列不亮WHEN "00010000" =>TEMP_FRE:=71586;IF TEMP_C="00001000" THEN TEMP_R<="11111111"; END IF; --当按BTN1时跳过第四列,及第四列不亮WHEN "00100000" =>TEMP_FRE:=63776;IF TEMP_C="00010000" THEN TEMP_R<="11111111"; END IF; --当按BTN1时跳过第五列,及第五列不亮WHEN "01000000" =>TEMP_FRE:=56818;IF TEMP_C="00100000" THEN TEMP_R<="11111111"; END IF; --当按BTN1时跳过第六列,及第六列不亮WHEN "10000000" =>TEMP_FRE:=50620;IF TEMP_C="01000000" THEN TEMP_R<="11111111"; END IF; --当按BTN1时跳过第七列,及第七列不亮WHEN OTHERS =>TEMP_FRE:=0;--当没按键时全部都不亮END CASE ;END IF;END PROCESS P6;P7:PROCESS(TEMP_KEY,KEY_SW) --数码管显示进程BEGINCASE TEMP_KEY_SW ISWHEN "00" => TEMP_CAT <= "111110"; --低音CAT0接通WHEN "10" => TEMP_CAT <= "111000"; --高音CAT0,CAT1,CAT2都接通WHEN OTHERS => TEMP_CAT <= "111100"; --中音CAT0,CAT1接通END CASE;CASE TEMP_KEY ISWHEN "00000000" => TEMP_DIGITAL <= "0000000"; --不按键不显示WHEN "00000001" => TEMP_DIGITAL <= "0000000";WHEN "00000010" => TEMP_DIGITAL <= "0110000"; --按BTN1键显示1WHEN "00000100" => TEMP_DIGITAL <= "1101101"; --按BTN2键显示2WHEN "00001000" => TEMP_DIGITAL <= "1111001"; --按BTN3键显示3WHEN "00010000" => TEMP_DIGITAL <= "0110011"; --按BTN4键显示4WHEN "00100000" => TEMP_DIGITAL <= "1011011"; --按BTN5键显示5WHEN "01000000" => TEMP_DIGITAL <= "1011111"; --按BTN6键显示6WHEN OTHERS => TEMP_DIGITAL <= "1110000"; --按BTN7键显示7 END CASE;END PROCESS P7;P8:PROCESS (CLK,AUTO_SW) --自动播放分频BEGINIF(CLK'EVENT AND CLK = '1') THENIF AUTO_COUNT1=12500000 THENAUTO_COUNT1<=0;AUTO_COUNT2 <= AUTO_COUNT2+1;ELSEAUTO_COUNT1 <= AUTO_COUNT1+1;END IF;IF AUTO_COUNT2=60 THENAUTO_COUNT2 <= 0;END IF;END IF;IF (AUTO_SW='0') THEN --只要是手动播放就把AUTO_COUNT2赋为0AUTO_COUNT2 <= 0;END IF;END PROCESS P8;P9:PROCESS(AUTO_SW,AUTO_COUNT2)BEGINIF (AUTO_SW='1') THENCASE AUTO_COUNT2 ISWHEN 1 =>TEMP_KEY_AUTO <= "00000010"; --yinfu 1WHEN 2 =>TEMP_KEY_AUTO <= "00000010"; --yinfu 1WHEN 3 =>TEMP_KEY_AUTO <= "00000100"; --yinfu 2WHEN 4 =>TEMP_KEY_AUTO <= "00000100"; --yinfu 2WHEN 5 =>TEMP_KEY_AUTO <= "00001000"; --yinfu 3WHEN 6 =>TEMP_KEY_AUTO <= "00001000"; --yinfu 3WHEN 7 =>TEMP_KEY_AUTO <= "00000010"; --yinfu 1WHEN 8 =>TEMP_KEY_AUTO <= "00000010"; --yinfu 1WHEN 9 =>TEMP_KEY_AUTO <= "00000010"; --yinfu 1WHEN 10 =>TEMP_KEY_AUTO <= "00000010"; --yinfu 1WHEN 11 =>TEMP_KEY_AUTO <= "00000100"; --yinfu 2WHEN 12 =>TEMP_KEY_AUTO <= "00000100"; --yinfu 2WHEN 13 =>TEMP_KEY_AUTO <= "00001000"; --yinfu 3WHEN 14 =>TEMP_KEY_AUTO <= "00001000"; --yinfu 3WHEN 15 =>TEMP_KEY_AUTO <= "00000010"; --yinfu 1WHEN 16 =>TEMP_KEY_AUTO <= "00000010"; --yinfu 1WHEN 17 =>TEMP_KEY_AUTO <= "00001000"; --yinfu 3WHEN 18 =>TEMP_KEY_AUTO <= "00001000"; --yinfu 3WHEN 19 =>TEMP_KEY_AUTO <= "00010000"; --yinfu 4WHEN 20 =>TEMP_KEY_AUTO <= "00010000"; --yinfu 4WHEN 21 =>TEMP_KEY_AUTO <= "00100000"; --yinfu 5WHEN 22 =>TEMP_KEY_AUTO <= "00100000"; --yinfu 5WHEN 23 =>TEMP_KEY_AUTO <= "00001000"; --yinfu 3WHEN 24 =>TEMP_KEY_AUTO <= "00001000"; --yinfu 3WHEN 25 =>TEMP_KEY_AUTO <= "00010000"; --yinfu 4WHEN 26 =>TEMP_KEY_AUTO <= "00010000"; --yinfu 4WHEN 27 =>TEMP_KEY_AUTO <= "00100000"; --yinfu 5WHEN 28 =>TEMP_KEY_AUTO <= "00100000"; --yinfu 5WHEN 29 =>TEMP_KEY_AUTO <= "00100000"; --yinfu 5WHEN 30 =>TEMP_KEY_AUTO <= "01000000"; --yinfu 6WHEN 31 =>TEMP_KEY_AUTO <= "00100000"; --yinfu 5WHEN 32 =>TEMP_KEY_AUTO <= "00010000"; --yinfu 4WHEN 33 =>TEMP_KEY_AUTO <= "00001000"; --yinfu 3WHEN 34 =>TEMP_KEY_AUTO <= "00001000"; --yinfu 3WHEN 35 =>TEMP_KEY_AUTO <= "00000010"; --yinfu 1WHEN 36 =>TEMP_KEY_AUTO <= "00000010"; --yinfu 1WHEN 37 =>TEMP_KEY_AUTO <= "00100000"; --yinfu 5WHEN 38 =>TEMP_KEY_AUTO <= "01000000"; --yinfu 6WHEN 39 =>TEMP_KEY_AUTO <= "00100000"; --yinfu 5WHEN 40 =>TEMP_KEY_AUTO <= "00010000"; --yinfu 4WHEN 41 =>TEMP_KEY_AUTO <= "00001000"; --yinfu 3WHEN 42 =>TEMP_KEY_AUTO <= "00001000"; --yinfu 3WHEN 43 =>TEMP_KEY_AUTO <= "00000010"; --yinfu 1WHEN 44 =>TEMP_KEY_AUTO <= "00000010"; --yinfu 1WHEN 45 =>TEMP_KEY_AUTO <= "00000100"; --yinfu 2WHEN 46 =>TEMP_KEY_AUTO <= "00000100"; --yinfu 2WHEN 47 =>TEMP_KEY_AUTO <= "00100000"; --yinfu 5WHEN 48 =>TEMP_KEY_AUTO <= "00100000"; --yinfu 5WHEN 49 =>TEMP_KEY_AUTO <= "00000010"; --yinfu 1WHEN 50 =>TEMP_KEY_AUTO <= "00000010"; --yinfu 1WHEN 51 =>TEMP_KEY_AUTO <= "00000100"; --yinfu 2WHEN 52 =>TEMP_KEY_AUTO <= "00000100"; --yinfu 2WHEN 53 =>TEMP_KEY_AUTO <= "00100000"; --yinfu 5WHEN 54 =>TEMP_KEY_AUTO <= "00100000"; --yinfu 5WHEN 55 =>TEMP_KEY_AUTO <= "00000010"; --yinfu 1WHEN 56 =>TEMP_KEY_AUTO <= "00000010"; --yinfu 1WHEN OTHERS =>TEMP_KEY_AUTO <= "00000000";END CASE;END IF;END PROCESS P9;LED_R <= TEMP_R; --最后将临时变量赋给输出口LED_C <= TEMP_C;CAT <= TEMP_CAT;DIGITAL <= TEMP_DIGITAL;END music_body;五、功能说明实现了全部的基本功能,包括发声,键盘显示。