- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
首都师范大学
信息工程学院 杨星 学号:1081000205 电子设计自动化(EDA)实验
实验四 四位全加器设计
一、实验目的
1、通过两种不同的方式实现加法器,学会比较不同实现方式的异同
2、掌握VHDL层次化的设计思想
3、掌握加法器的基本原理,并尝试改变改变描述方式,领会VHDL语言的不同描述方式的异同
二、实验内容
1、实验前的准备
(1)该实验需要使用七个模块组中的第七个功能单元,所以三个拨码开关处于“110”时,即MODEL_SEL2 和MODEL_SEL3 拨下处于“OFF”状态,MODEL_SEL1 拨下处于“ON”时,选择该模块。
(2)拨码开关MODEL_SEL5-8 全置于“ON ”状态,即MODEL_SEL5-8 拨下处于“ON ”状态时通过USB BLASTER接口下载。
2、实验原理
通过输入两组各 4bit 的二进制数据,同时还有一个单 bit 的进位,把三者按照二进制加法器的原理进行加和,求出和及进位,并通过电路输出显示各部分数据(输入及输出) 。
3、实验内容
1)用 VHDL 语言设计一个 四位全加器;采用 2 种方式去描述(参加例程) ,注意不同的描述方式的差异;
2)用 QuartusII 软件进行编译,仿真,下载到实验平台进行验证;
3)设计清零电路,并把感兴趣的信号进行输出显示。
4、第一种设计方法(直接描述逻辑功能),如图所示:
文本设计:
编译报告如图所示:
仿真图如图所示:
引脚锁定如图所示:
(2)第二种设计方法(层次化设计)
制作方法:
先制作半加器,存储为hafl,之后再改成器件
再作全加器,存储为full,调用half器件,之后再改成器件
最后制作4位全加器,调用full器件,之后再编译,仿真,硬件连接
a、一位半加器的源代码如图所示:
b、一位全加器的源代码如图所示:
c、四位全加器的源代码如图所示:
编译报告如图所示:
仿真图如图所示:
引脚锁定如图所示:
层次化设计的验证图
三、问题回答
1、比较两种设计方法的异同。
1)直接描述逻辑功能法要比层次化设计更加直观,后者需先画出电路图,然后按照图进行端口映射语句的编写,编写容易出错。
2)层次化设计可以调用以前设计好的部分电路,简便,不需再浪费时间设计。
3)直接描述逻辑功能法比层次化设计多调用一个库。
2、如果第二种设计方法的底层文件换成用图形的方法设计,能否完成该实验的设计?
理论上应该能,因为时间原因没能实践。
3、第二种设计方法最顶层的设计换成图形的方法,如何实现?与顶层采用文本的设计方法比较有哪些异同?
建立一个图形文件,之后调用元件,再连接电路图即可。
相同:调用已设计好的元件
不同:文本设计法的连接线是用语言描写的,而图形的方法更加形象,直接连线。
4、如果第二种设计方法也设计清零电路,如何修改设计文本?
library ieee ;
use ieee.std_logic_1164.all ;
entity add4 is
port(a: in std_logic_vector(3 downto 0);
b: in std_logic_vector(3 downto 0);
ci: in std_logic;
CLR_N: in std_logic;
co: out std_logic;
sum: out std_logic_vector(3 downto 0));
end add4;
architecture behavior of add4 is
component full
PORT (a, b,cin : IN std_LOGIC;
s,co : OUT std_LOGIC);
end component;
signal ci_ns : std_logic_vector(2 downto 0);
signal SINT: std_logic_vector (4 downto 0); -- 扩展1 位
signal A,B: std_logic_vector (3 downto 0);
begin
PROCESS(CLR_N)
BEGIN
IF CLR_N=0 THEN --清零
A=0000;
B=0000;
ELSE
A=a; -- 扩展,便于加法
B=b;
END IF;
END PROCESS;
u0:full port map(A(0),B(0),ci,sum(0),ci_ns(0));
u1:full port map(A(1),B(1),ci_ns(0),sum(1),ci_ns(1));
u2:full port map(A(2),B(2),ci_
文档评论(0)