四位全加器设计.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

_______ + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档