EDA技术与VHDL实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA技术与VHDL实验
实验4-1. 组合电路的设计
实验目的:熟悉Quartus Ⅱ的VHDL文本设计流程全过程,学习简单组合
电路的设计、多层次电路设计、仿真和硬件测试。
实验任务1
利用Quartus完成2选1多路选择器,并进行编译、仿真、管脚下载。实验代码
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;
仿真波形
从波形看出,仿真结果正确,当s=0时,y=a,反之等于b
管脚下载
管脚测试:s=0------{a=0则y=0},{a=1则y=1}
s=1------{b=0则y=0},{b=1则y=1}
实验任务2
将此多路选择器看成是一个元件mux21a,利用元件例化
语句描述图3-18,并将此文件放在同一目录中。
以下是部分参考程序:
...
COMPONENT MUX21A
PORT ( a,b,s : IN STD_LOGIC;
y : OUT STD_LOGIC);
END COMPONENT ;...
u1 : MUX21A PORT MAP(a=>a2,b=>a3,s=>s0,y=>tmp);
u2 : MUX21A PORT MAP(a=>a1,b=>tmp,s=>s1,y=>outy);
END ARCHITECTURE BHV ;
按照本章给出的步骤对上例分别进行编译、综合、仿真。并对其仿真波形作出分析说明。
实验代码
entity muxk is
port(a1,a2,a3,s0,s1:in bit;
outy:out bit);
end muxk;
architecture one of muxk is
component mux21a
port(a,b,s:in bit;
y:out bit);
end component;
signal tmp :bit;
begin
u1:mux21a port map(a=>a2,b=>a3,s=>s0,y=>tmp);
u2:mux21a port map(a=>a1,b=>tmp,s=>s1,y=>outy);
end architecture one;
仿真波形
从仿真波形可以看出s0.s1分别为00,01,10,11时,y分别为a1,a2,a1,a3. 管脚下载
管脚测试:s=00-----y=a1;s=01-----y=b;
s=10-----y=a1;s=11------y=a3;
实验习题:
以1位二进制全加器为基本元件,用例化语句写出8位并行二进制全加器的顶层文件,并讨论此加法器的电路特性。
实验代码
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY f_adder_8b IS
PORT( a,b:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
ci:in STD_LOGIC;
co:OUT STD_LOGIC;
s:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END ENTITY f_adder_8b;
ARCHITECTURE one OF f_adder_8b IS
COMPONENT f_adder IS
PORT(ain,bin,cin:IN STD_LOGIC;
cout,sum:OUT STD_LOGIC);
END COMPONENT f_adder;
SIGNAL d,e,f,g,h,i,j:STD_LOGIC;
BEGIN
u1:f_adder PORT
MAP(ain=>a(0),bin=>b(0),cin=>ci,cout=>d,sum=>s(0));
u2:f_adder PORT
MAP(ain=>a(1),bin=>b(1),cin=>d,cout=>e,sum=>s(1));
u3:f_adder PORT
MAP(ain=>a(2),bin=>b(2),cin=>e,cout=>f,sum=>s(2));
u4:f_adder PORT
MAP(ain=>a(3),bin=>b(3),cin=>f,cout=>g,sum=>s(3));
u5:f_adder PORT
MAP(ain=>a(4),bin=>b(4),cin=>g,cout=>h,sum=>s(4));
u6:f_adder PORT
MAP(ain=>a(5),bin=>b(5),cin=>h,cout=>i,sum=>s(5));
u7:f_adder PORT MAP(ain=>a(6),bin=>b(6),cin=>i,cout=>j,sum=>s(6));
u8:f_adder PORT