- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验四:全加器的设计
通信0704 王晓琳 01XXXXXXXXXX5
实验目的
通过本次实验,对结构体不同描述方式的理解与应用有更深的了解。
实验要求
对于给定的4个用不同描述方式写的VHDL程序进行理解并调试,注意程序的异同和优缺点。
用1位的全加器做4位(或者2位)的全加器。要用VHDL语言实现。
实验过程
调试程序:(具体程序见附录)
行为描述方式:行为描述输入与输出间转换的行为,不需包含任何结构信息,它对设计实体按算法的路径来描述。
数据流描述方式:表示行为,也隐含表示结构,它描述了数据流的运动路线、运动方向和运动结果。
结构化描述方式:是在多层次的设计中,高层次的设计可以调用低层次的设计模块,或直接用门电路设计单元来构成一个复杂逻辑电路的方法。
分析可知,对于一个复杂的电子系统,可以将其分解为若干个子系统,每个子系统再分解成模块,形成多层次设计。这样,可以使更多的设计者同时进行合作。在多层次设计中,每个层次都可以作为一个元件,再构成一个模块或系统,可以先分别仿真每个元件,然后再整体调试。
混合描述方式:在实际设计工作中,可以采用上述三种描述方式的任意组合。
小结:用四种不同描述方式设计全加器,分析可知,不同的描述方式有各自的特点,在实际设计中,应该依据实际课题和要求,选用或综合利用不同的描述方式。
(2)2位全加器的设计
系统整体组装原理图如下图1。将一位全加器的程序进行编辑、设置工程仿真,再处理顶层文件。(本次设计采用的是第四个程序f_adder.vhd来设计2为的全加器),自己写出顶层设计程序,用一位全加器实现二位全加器。
图1 2位全加器的系统整体组装原理图
二位全加器顶层设计的VHDL源程序(two_adder.vhd)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY two_adder IS
GENERIC(tpd:TIME: 10 ns);
PORT(a0,b0,a1,b1,y,ci: IN STD_LOGIC;
s0,s1, co: OUT STD_LOGIC ;
END two_adder;
ARCHITECTURE art OF two_adder IS
COMPONENT f_adder
PORT(ain, bin,cin: IN STD_LOGIC;
sum,cout: OUT STD_LOGIC ;
END COMPONENT;
SIGNAL c01 :STD_LOGIC;
BEGIN
u1: f_adder PORT MAP a0, b0,ci, s0,co1 ;
u2: xor_gate PORT MAP a1, b1,co1,s1, sum ;
END ARCHITECTURE art;
仿真结果如下图2,比对2位全加器真值表,验证仿真波形的正确性。观察波形可以看出,输出信号与输入信号有一定的延迟。并且在输出信号s0有多次毛刺,多是电路特性引起的。
图2 2位全加器仿真波形
图3是传输延迟分析,可以看出输入信号和输出信号之间的传输延迟是比较大的。
图3 传输延迟分析
附录:
1、行为描述方式
(基于全加器真值表采用行为描述方式设计的全加器(1位二进制数全加器))
程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY full_adder IS
GENERIC(tpd : TIME : 10 ns);
PORT(x,y,c_in : IN STD_LOGIC;
Sum, c_out : OUT STD_LOGIC ;
END full_adder;
ARCHITECTURE behav OF full_adder IS
BEGIN
PROCESS x, y, c_in
VARIABLE n: INTEGER;
CONSTANT sum_vector: STD_LOGIC_VECTOR 0 TO 3 : “0101”;
CONSTANT carry_vector: STD_LOGIC_VECTOR 0 TO 3 : “0011”;
BEGIN
n : 0;
IF x ’1’ THEN
n : n+1;
END IF;
IF y ’1’ THEN
n: n+1;
END IF;
IF c_in ’1’ THEN
n: n+1;
END IF;
文档评论(0)