北邮数电实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京邮电大学
实验报告实验名称:数电电路与逻辑设计实验
学院:信息与通信工程学院
班级:
姓名:
学号:
班内序号:
日期:
一. 实验一:Quartus II 原理图输入法设计
1. 实验名称和实验任务要求
(1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块 元。
(2)用(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号入信号。
(3)用3线-8线译码器(74LS138)和逻辑门设计实现函数
F=A B C +A B C +A
B C +
A B C 。
2. 实验原理图及波形图
(1)半加器
(2)全加器
(3)74LS38
3.仿真波形图分析
(1)半加器:
输入为a,b,输出S,CO(进位)。
当ab都为0时,半加和s=0,进位端co=0。
当ab都为1时,半加和s=0,进位端co=1。
当a=1,b=0或a=0,b=1时,半加和s=1,进位端co=0。
(2)全加器:
输入a,b,输出S,CO(进位),ci(低进位)。
当a=0,b=0,ci=0,输出s=0,co=0。
当a=0,b=1或a=1,b=0又 ci=0,输出s=1,co=0。
当a=0,b=0,ci=1,输出s=1,co=0。
(3)74LS138
输入A,B,C,输出为3。
四个输出对应F中的四个最小项,Y0、Y2、Y4、Y7,以实现函数功能。
二.实验二:用 VHDL 设计与实现组合逻辑电路
1.实验名称和实验任务要求
(1)用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能。要求用拨码开关设定输入信号,7段数码管显示输出信号。
(2) 用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能。要求用拨码开关设定输入信号,发光二极管显示输出信号。
(3) 用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个’1’时,输出为’1’,否则输出’0’,仿真验证其功能。要求用拨码开关设定输入信号,发光二极管显示输出信号。
2.实验代码及波形图
(1)共阴极7段数码管译码器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY GUAN IS
PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
B:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
C:OUT STD_LOGIC_VECTOR(5 DOWNTO 0));
END GUAN;
ARCHITECTURE encoder_arch OF GUAN IS
BEGIN
PROCESS(A)
BEGIN
C<="011111";
CASE A IS
WHEN"0000"=> B<="1111110";--0
WHEN"0001"=> B<="0110000";--1
WHEN"0010"=> B<="1101101";--2
WHEN"0011"=> B<="1111001";--3
WHEN"0100"=> B<="0110011";--4
WHEN"0101"=> B<="1011011";--5
WHEN"0110"=> B<="1011111";--6
WHEN"0111"=> B<="1110000";--7
WHEN"1000"=> B<="1111111";--8
WHEN"1001"=> B<="1111011";--9
WHEN OTHERS=> B<="ZZZZZZZ";
END CASE;
END PROCESS;
END encoder_arch;
(2)8421码转换为余3码
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY YUSAN IS
PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
B:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END YUSAN;
ARCHITECTURE trans_ex3 OF YUSAN IS
BEGIN
PROCESS(A)
BEGIN
CASE A IS
WHEN"0000"=> B<="0011"; WHEN"0001"=> B<="0100"; WHEN"0010"=> B<="0101"; WHEN"0011"=> B<="0110"; WHEN"0100"=> B<="0111"; WHEN"0101"=> B<="1000"; WHEN"0110"=> B<="1001"; WHEN"0111"=> B<="1010"; WHEN"1000"=> B<="1011"; WHEN"1001"=> B<="1100";
WHEN OTHERS=> B<="ZZZZ";