硬件描述语言实验五.docx

上传人:b****8 文档编号:9377005 上传时间:2023-05-18 格式:DOCX 页数:12 大小:235.41KB
下载 相关 举报
硬件描述语言实验五.docx_第1页
第1页 / 共12页
硬件描述语言实验五.docx_第2页
第2页 / 共12页
硬件描述语言实验五.docx_第3页
第3页 / 共12页
硬件描述语言实验五.docx_第4页
第4页 / 共12页
硬件描述语言实验五.docx_第5页
第5页 / 共12页
硬件描述语言实验五.docx_第6页
第6页 / 共12页
硬件描述语言实验五.docx_第7页
第7页 / 共12页
硬件描述语言实验五.docx_第8页
第8页 / 共12页
硬件描述语言实验五.docx_第9页
第9页 / 共12页
硬件描述语言实验五.docx_第10页
第10页 / 共12页
硬件描述语言实验五.docx_第11页
第11页 / 共12页
硬件描述语言实验五.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

硬件描述语言实验五.docx

《硬件描述语言实验五.docx》由会员分享,可在线阅读,更多相关《硬件描述语言实验五.docx(12页珍藏版)》请在冰点文库上搜索。

硬件描述语言实验五.docx

硬件描述语言实验五

 

硬件描述语言实验

 

题目:

四位加法器实验

 

学院计算机科学与技术

学科门类xxxxxxxxxx

专业xxxxxxxxxx

学号xxxxxxxxxx

姓名宁剑

指导教师xxxx

20xx年x月x日

硬件描述语言

一、实验题目:

四位加法器

二、实验目的和要求

实验目的:

进一步练习VHDL语言设计工程的建立与仿真的步骤和方法、熟悉VHDL语言三种描述方法。

实验要求:

设计一个四位加法器,实体名称为“adder4_3”,其引脚及其功能如下表。

端口模式

端口名

数据类型

说明

in

(输入)

A

std_logic_vector(3downto0)

加数

B

加数

Ci

std_logic

低位进位

out

(输出)

S

std_logic_vector(3downto0)

Co

std_logic

高位进位

要求应用一位全加器(实验二中所实现的)按如下电路图通过结构描述方式构造四位加法器。

本实验用实验二“full_adder”的实体作为元件,用portmap语句描述出来将下图的电路,实现四位加法器,并与实验三、实验四的加法器进行比较。

三、实验内容

1、打开altera软件,建立一个名为adder4_3的vhdl工程。

2、要求调用实验二中的一位加法器,按照如下电路图通过结构描述方式构造一个四位加法器。

3、编译及修改错误。

4、建立波形并仿真。

5、根据仿真结果分析设计是否正确。

附录:

实验二中一位加法器的引脚及功能如下图:

设计一个一位加法器,实体名称为“full_adder”,其引脚与功能如下表。

端口模式

端口名

数据类型

功能逻辑表达式

说明

in(输入)

a

std_logic

加数

b

加数

ci

低位进位

out(输出)

s

s<=axorbxorci

co

co<=(aandb)or(aandci)or(bandci)

高位进位

附录:

实验三中四位加法器的引脚及功能如下图:

设计一个四位加法器,实体名称为“adder4”,其引脚与功能如下表。

端口模式

端口名

数据类型

功能逻辑表达式

说明

in

输入

a

std_logic_vector

(3downto0)

加数

b

加数

ci

std_logic

来自低位进位

out

输出

s

std_logic_vector

(3downto0)

s(0)<=a(0)xorb(0)xorci

c0<=(a(0)andb(0))or(a(0)andci)or(b(0)andci)

co

std_logic

co<=(a(3)andb(3))or(a(3)andc2)or(b(3)andc2)

向高位的进位

附录:

实验四中四位加法器的引脚及功能如下图:

设计一个四位加法器,实体名称为“adder4_2”,其引脚与功能如下表。

端口模式

端口名

数据类型

说明

in

(输入)

a

std_logic_vector(3downto0)

加数

b

加数

ci

std_logic

自低位进位

out

(输出)

s

std_logic_vector(3downto0)

co

std_logic

向高位进位

四、实验结果

部分代码截图:

通过此图我们得知编写的代码全部通过编译。

实验的RTL结构图:

由编译器所绘出的RTL结构图与实验所示的结构图完全吻合,达到了实验要求。

波形图及仿真结果:

可以看到,在两个加数A、B不超过15的情况下,共测试了13组数据,四位加法器的计算正确,实验得以验证。

附录:

实验三仿真图(波形仿真图略)

附录:

实验四仿真图(波形仿真图略)

五、实验总结

通过此次实验,我们运用了COMPONENT语句和PORTMAP语句调用实验二中的full_adder逻辑描述模块,无需在本次实验的构造体中再次对其进行定义和描述,大大缩短了实验周期,提高了效率,同时保证了实验结果的准确性。

VHDL语言对硬件系统的描述可以用3种不同风格的描述方式进行描述,即行为描述方式、寄存器传输(RTL)描述方式和结构描述方式。

这3种描述方式从不同的角度对硬件系统的行为和功能进行了描述。

其中,RTL和结构描述下的程序可进行逻辑综合,而行为描述程序大多用于系统仿真。

我们对这3种方式各自的特点总结如下:

(1)行为描述方式:

①行为描述方式是对系统数学模型的描述,其抽象程度比其他两种描述方式都高。

②在这种高层次抽象的行为描述中,不需要描述硬件电路的具体逻辑关系,而是采用算术运算、关系运算等类数学公式的语句来描述器件行为。

但是这些语句大都难以进行逻辑综合,因此行为描述方式不能进行逻辑综合。

③这种描述方式主要用于系统数学模型的仿真和系统工作原理的仿真。

(2)寄存器传输(RTL)描述方式:

①RTL描述方式是一种明确规定寄存器描述的方法。

②RTL描述方式是真正可以进行逻辑综合的描述方式。

③在采用该方式进行编程时,所使用的VHDL语句有一定的限制。

(3)结构体描述方式:

①结构体描述方式可较方便地进行多层次的结构设计,增加了代码的重用性。

②这种描述方式能提高设计效率,并将已有的设计成果方便的用到新的设计中。

六、附录

本次实验(四)的代码部分:

libraryieee;

useieee.std_logic_1164.all;

useieee.numeric_std.all;

entityfull_adderis

port

a,b,ci:

inSTD_LOGIC;

s,co:

outSTD_LOGIC

);

endentity;

architecturertloffull_adderis

begin

s<=axorbxorci;

co<=(aandb)or(aandci)or(bandci);

endrtl;

 

libraryieee;

useieee.std_logic_1164.all;

useieee.numeric_std.all;

entityadder4_3is

port

A,B:

instd_logic_vector(3downto0);

Ci:

instd_logic;

S:

outstd_logic_vector(3downto0);

Co:

outstd_logic

);

endentity;

architecturertlofadder4_3is

COMPONENTfull_adderIS

port

a,b,ci:

inSTD_LOGIC;

s,co:

outSTD_LOGIC

);

ENDCOMPONENT;

SIGNALC0,C1,C2:

STD_LOGIC;

begin

u0:

full_adderportmap(A(0),B(0),Ci,S(0),C0);

u1:

full_adderportmap(A

(1),B

(1),C0,S

(1),C1);

u2:

full_adderportmap(A

(2),B

(2),C1,S

(2),C2);

u3:

full_adderportmap(A(3),B(3),C2,S(3),Co);

endrtl;

实验二中一位加法器full_adder的代码如下:

libraryieee;

useieee.std_logic_1164.all;

entityfull_adderis

port

a,b,ci:

inSTD_LOGIC;

s,co:

outSTD_LOGIC

);

endentity;

architecturertloffull_adderis

begin

s<=axorbxorci;

co<=(aandb)or(aandci)or(bandci);

endrtl;

实验三中四位加法器adder4代码:

libraryieee;

useieee.std_logic_1164.all;

entityadder4is

port(a,b:

instd_logic_vector(3downto0);

ci:

instd_logic;

s:

outstd_logic_vector(3downto0);

co:

outstd_logic);

endentity;

architecturertlofadder4is

signalc0,c1,c2:

std_logic;

begin

s(0)<=a(0)xorb(0)xorci;

c0<=(a(0)andb(0))or(a(0)andci)or(b(0)andci);

s

(1)<=a

(1)xorb

(1)xorc0;

c1<=(a

(1)andb

(1))or(a

(1)andc0)or(b

(1)andc0);

s

(2)<=a

(2)xorb

(2)xorc1;

c2<=(a

(2)andb

(2))or(a

(2)andc1)or(b

(2)andc1);

s(3)<=a(3)xorb(3)xorc2;

co<=(a(3)andb(3))or(a(3)andc2)or(b(3)andc2);

endarchitecturertl;

实验四中四位加法器adder4_2代码:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityadder4_2is

port

(a,b:

instd_logic_vector(3downto0);

ci:

instd_logic;

s:

outstd_logic_vector(3downto0);

co:

outstd_logic);

endentity;

architecturertlofadder4_2is

signalaa,bb,ss:

std_logic_vector(4downto0);

begin

aa<='0'&a;

bb<='0'&b;

ss<=aa+bb+ci;

s<=ss(3downto0);

co<=ss(4);

endarchitecturertl;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2