北邮大二下数电实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北邮大二下数电实验报告
北京邮电大学数字电路与逻辑设计实验
学院:
班级:
姓名:
学号:
班内序号:
实验一
一、实验名称
Quartus II 原理图输出法设计
(一)半加器
二、实验任务要求
用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。
三、设计思路和过程
◎设计思路
半加器电路是指对两个输入数据位进行加法,输出一个结果位和进位,不产生进位输入的加法器电路,是实现两个一位二进制数的加法运算电路。
数据输入:被加数AI、加数BI
数据输出:半加和SO、进位CO
◎ 设计过程
(1)列出真值表
输入输出
AI BI SO CO
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
*表中两个输入是加数AI和BI,输出有一个是和SO,另一个是进位CO。 (2)根据真值表写出输出逻辑表达式
该电路有两个输出端,属于多输出组合数字电路,电路的逻辑表达式如
下:SO,AI,BICO,AI,BI,。所以,可以用一个两输入异或门和一个两输入与门实现。
◎实验原理图
四、仿真波形图及分析
根据仿真波形对比半加器真值表,可以确定电路实现了半加器的功能。但我们也可以发现输出SO出现了静态功能冒险,要消除该冒险可以加入相应的选通脉冲。
(二)全加器
二、实验任务要求
用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。
三、设计思路和过程
◎设计思路
全加器与半加器的区别在于全加器有一个低进位CI,从外部特性来看,它是一个三输入两输出的器件。
◎设计过程
(1)全加器的真值表如下
输入输出
AI BI CI SO CO
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
*其中AI为被加数,BI为加数,CI为相邻低位来的进位数。输出本位和为SO,向相邻高位进位数为CO。
(2)根据真值表写出逻辑表达式:
SO,AI,BI,CI, CO,(AI,BI),CI,AI,BI
根据逻辑表达式,可以知道只要在半加器的基础上再加入一个异或门、一个两输入与门和两输入或门即可实现全加器。
◎实验原理图
四、仿真波形图及分析
根据仿真波形对比全加器真值表,可以确定电路实现了全加器的功能。
(三)3线—8线译码器
二、实验任务要求
8线译码器(74LS138)和逻辑门设计实现函数用3线—
F,CBA,CBA,CBA,CBA,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。
三、设计思路和过程
◎设计思路
74LS138是一个3线—8线的译码器,其输出为低电平有效,使能端G1为高电平有效,G2、G3为低电平有效,当其中一个为高电平,输出端全部为1。在中规模集成电路中译码器的几种型号里,74LS138使用最广泛。
要实现的函数用最小项表示如下:
F(C,B,A)=?m(0,2,4,7) 只要将相应输出用一个四输入与非门实现即可。
◎注意
(1)74LS138的输出是低电平有效,故实现逻辑功能时,输出端不可接或门及或非门(因为每次仅一个为低电平,其余皆为高电平);
(2)74LS138与前面不同的是,其有使能端,故使能端必须加以处理,否则无法实现需要的逻辑功能。
◎实验原理图
四、仿真波形图及分析
当且仅当ABC输入为000、010、100、111时,F=1;可知电路实现了函数。F,CBA,CBA,CBA,CBA
实验二
一、实验名称
VHDL组合逻辑电路设计
(一)奇校验器
二、实验任务要求
用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个‘1’时,输出为‘1’,否则输出为‘0’,仿真实现验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。
三、设计思路和过程
输入元素:a3,a2,a1,a0
输出元素:b
输入输出
a3 a2 a1 a0 b
0 0 0 0 0
0 0 0 1 1
0 0 1 0 1
0 0 1 1 0
0 1 0 0 1
0 1 0 1 0
0 1 1 0 0
0 1 1 1 1
1 0 0 0 1
1 0 0 1 0
1 0 1 0 0
1 0 1 1 1
1 1 0 0 0
1 1 0 1 1
1 1 1 0 1
1 1 1 1 0
四、VHDL程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY hy_check IS PORT(
a: IN STD_LOGIC_VECTOR (3 downto 0);
b: OUT STD_LOGIC
);
end hy_check;
ARCHITECTURE hy_arch OF hy_check IS
BEGIN
PROCESS(a)
BEGIN
CASE a IS
WHEN"0000" => b <='0';
WHEN"0001" => b <='1';
WHEN"0010" => b <='1';
WHEN"0011" => b <='0';
WHEN"0100" => b <='1';
WHEN"0101" => b <='0';
WHEN"0110" => b <='0';
WHEN"0111" => b <='1';
WHEN"1000" => b <='1';
WHEN"1001" => b <='0';