《数字系统设计》实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档