EDA 实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4-1 组合电路设计
实验目的:熟悉Quartus2的VHDL文本设计流程全过程,学习简单的组合电路的设计,多层次电路设计、仿真、和硬件测试。
实验任务1:利用软件完成二选一多路选择器的文本编辑和仿真测试等步骤,给出仿真波形,最后在实验系统上进行硬件测试,验证功能。然后,利用元件例化语句描述图3-31,并将此文件放在同一目录下。
实验任务2:利用刚刚完成的实验内容,设计完成一位全加器,仿真该全加器,得到仿真结果,并利用一位二进制全加器为基本元件,用例化语句写出八位并行二进制全加器的顶层文件,讨论该加法器的电路特性。
实验代码及仿真结果:
二选一多路选择器:
library ieee;
use ieee.std_logic_1164.all;
entity mux21a is
port(a,b,s: in std_logic;
y:out std_logic );
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;
仿真结果:
分析:
1、s对电路的输出具有决定作用,s为0时输出为a的值,为1时输出为b的值。从仿真
结果可以看出0到10ns内,s为0,此时y的输出为0,是a的值。
2、10到20ns时间内,s为1,输出为b的值,y为1。
图3-31的仿真仿真程序:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity singt is
port(a:in std_logic_vector(3 downto 1);
s:in std_logic_vector(1 downto 0);
outy: out std_logic);
end singt;
architecture bhv of singt 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=>a(2),b=>a(3),s=>s(0),y=>tmp);
u2:mux21a port map(a=>a(1),b=>tmp,s=>s(1),y=>outy);
end architecture bhv;
该部分仿真结果:
分析:
1、3-31中电路的涵义是,s1s0为00时选择outy为a1,s1s0为01时outy为a1,s1s0为10时outy为a2,s1s0为11时outy为a3。
2、从仿真结果来看,s1s0为00时a1为0,所以outy为0,s1s0为01时a1为1,输出也为1,s1s0为10时,a2为1,所以输出也为1 。
一位全加器仿真代码:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity bit1adder is
port(
a,b,ci:in std_logic;
s,co:out std_logic
);
end bit1adder;
architecture func of bit1adder is
signal x,y:std_logic;
begin
x<=a xor b;
y<=x and ci;
s<=x xor ci;
co<=y or (a and b);
end func;
仿真结果:
分析:
1、全加器的作用是将两位加数a,b相加,得到和的低位和进位值,再将进位值与输入的
进位ci相加得到结果的进位值co。本仿真中刚开始,a,b,ci为1,相加应为11(十进制的3),从仿真结果上看,co为1,s为1,可看出结果是正确的。
2、10ns到20ns为0+1+0,结果应该为1,而s为1,co为1,结果仍然正确。
4-2 时序电路的设计
实验目的:熟悉Quartus2的VHDL文本设计流程全过程,学习简单的组合电路的设计,多层次电路设计、仿真、和硬件测试。
实验任务1:设计一个D触发器。
实验代码:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
entity DFF1 is
port(
CLK : in std_logic;
D : in std_logic;
Q : out std_logic
);
end;
architecture beh of DFF1 is
signal Q1:std_logic;
begin
process(CLK,Q1)
begin
if CLK'event and CLK = '1' then
Q1 <=D ;