《数字系统设计》实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字系统设计
指导老师:孙统风
2011年10月
实验一组合电路设计
一、实验目的
熟悉Quartus II的VHDL文本设计流程全过程,学习简单的组合电路的设计、多层次电路设计、仿真和硬件测试。
二、实验内容
1.首先利用Quartus II完成2选1多路选择器的文本编辑输入和仿真测试等步骤,给出图3-3所示的仿真波形。最后在实验系统上进行硬件测试,验证本项设计的功能。
2.将此多路选择器看成是一个元件mux21a,利用元件例化描述图3-31,并将此文件放在同一目录中。
三、实验程序及仿真结果
1.2选1多路选择器源程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY mux21a IS
PORT ( a,b,s: IN BIT;
y : OUT BIT);
END ENTITY mux21a;
ARCHITECTURE one OF mux21a IS
BEGIN
PROCESS(a,b,s)
BEGIN
IF s = '0' THEN
y <= a; ELSE
y <= b;
END IF;
END PROCESS;
END ARCHITECTURE one;
RTL图如下:
2.元件mux21a源程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MUXK IS
PORT (a1,a2,a3,s0,s1:IN STD_LOGIC;
y:OUT STD_LOGIC);
END ENTITY MUXK;
ARCHITECTURE one OF MUXK IS
COMPONENT mux21a
PORT(a,b,s:IN STD_LOGIC;
y:OUT STD_LOGIC);
END COMPONENT;
SIGNAL tmp:STD_LOGIC;
BEGIN
U1: mux21a PORT MAP(a=>a2,b=>a3,s=>s0,y=>tmp);
U2: mux21a PORT MAP(a=>a1,b=>tmp,s=>s1,y=>y);
END ARCHITECTURE one;
仿真波形如下:
器件RTL电路
实验二时序电路的设计
一、实验目的
熟悉Quartus II的VHDL文本设计过程,学习简单的时序电路的设计、仿真和测试。
二、实验内容
1.设计触发器(使用例3-6),给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。
2.设计锁存器(使用例3-14),同样给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。
3.只用一个1位二进制全加器为基本元件和一些辅助的时序电路,设计一个8位串行二进制全加器。提示:此加法器有并/串和串/并移位寄存器各一。
三、实验程序及仿真结果
1. 触发器设计源程序
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY DFF1 IS
PORT (CLK, D : IN STD_LOGIC ;
Q :OUT STD_LOGIC);
END;
ARCHITECTURE bhv OF DFF1 IS
SIGNAL Q1 : STD_LOGIC ;
BEGIN
PROCESS (CLK)
BEGIN
IF CLK'EVENT AND CLK ='1'
THEN Q1 <= D;
END IF;
END PROCESS ;
Q<=Q1;
END bhv;
仿真波形如下:
仿真分析:从仿真的波形可以看出,当clk 为上升沿时,输出随着输入的变化而变化,即实现了一个D触发器的功能。
2.锁存器设计源程序
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY SUO IS
PORT (CLK, D : IN STD_LOGIC ;
Q :OUT STD_LOGIC);
END;
ARCHITECTURE bhv OF SUO IS
SIGNAL Q1 : STD_LOGIC ;
BEGIN
PROCESS (CLK,D)
BEGIN
IF CLK ='1'
THEN Q <= D;
END IF;
END PROCESS ;
END bhv;
仿真波形如下:
3.八位二进制全加器的设计
实验原理:
一个8位全加器可以由8个1位全加器构成,加法器间的进位可以串行方式实现,即将地位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin想接。
(1)1位二进制全加器实验原理图
1位二进制全加器实验仿真图
(2)八位全加器实验原理图
八位全加器实验仿真图
(3)一位二进制全加器实验源程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY F_ADDER IS
PORT (AIN, BIN, CIN : IN STD_LOGIC;
COUT, SUM : OUT STD_LOGIC );
END ENTITY F_ADDER;
ARCHITECTURE FD1 OF F_ADDER IS
COMPONENT H_ADDER IS
PORT (A, B : IN STD_LOGIC;
CO, SO : OUT STD_LOGIC );
END COMPONENT;
SIGNAL D, E, F : STD_LOGIC;
BEGIN
U1 : H_ADDER PORT MAP(A => AIN, B => BIN, CO => D, SO => E);
U2 : H_ADDER PORT MAP(A => E, B => CIN, CO => F, SO => SUM);
COUT <= D OR F;
END ARCHITECTURE FD1;
(4)八位二进制全加器源程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY PRODUCT_ADDER_SUBTRACTER IS
PORT(
A,B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
S:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));
END;
ARCHITECTURE BEHAVIORAL OF PRODUCT_ADDER_SUBTRACTER IS
BEGIN
BEHAVIOR:PROCESS(A,B) IS
VARIABLE CARRY_IN:STD_LOGIC;
VARIABLE CARRY_OUT:STD_LOGIC;
VARIABLE OP2:STD_LOGIC_VECTOR(B'RANGE);
BEGIN
OP2:=B;
END IF;
FOR INDEX IN 0 TO 7 LOOP
CARRY_IN:=CARRY_OUT;
S(INDEX)<=A(INDEX) XOR OP2(INDEX)XOR CARRY_IN ;
CARRY_OUT:=(A(INDEX)AND OP2(INDEX))
OR(CARRY_IN AND (A(INDEX) XOR OP2(INDEX)));
END LOOP;