VHDL硬件描述语言四位加法器实验报告.docx
《VHDL硬件描述语言四位加法器实验报告.docx》由会员分享,可在线阅读,更多相关《VHDL硬件描述语言四位加法器实验报告.docx(7页珍藏版)》请在冰豆网上搜索。
![VHDL硬件描述语言四位加法器实验报告.docx](https://file1.bdocx.com/fileroot1/2022-11/26/a8cc5065-cdf3-43f5-982b-273a4545a470/a8cc5065-cdf3-43f5-982b-273a4545a4701.gif)
VHDL硬件描述语言四位加法器实验报告
题目:
硬件描述语言实验四:
四位加法器
姓名:
*****学号:
******
地点:
主楼402时间:
3月21日
一、实验目的:
进一步练习VHDL语言设计工程的建立与仿真的步骤和方法、熟悉VHDL语言基本设计实体的编写方法。
二、实验环境:
PC个人计算机、WindowsXP操作系统、QuartusII集成开发环境软件。
三、设计要求:
采用三种方式设计一个四位加法器,实体名称分别为“adder4”、“adder4_2”、和“adder_3”,四位加法器的引脚与功能如下表。
端口模式
端口名
数据类型
说明
in
(输入)
a
std_logic_vector(3downto0)
加数
b
加数
ci
std_logic
低位进位
out
(输出)
s
std_logic_vector(3downto0)
和
co
std_logic
高位进位
四、实验步骤:
1、采用寄存器传输的描述方式:
首先新建一个工程,命名为“adder4”,然后编辑代码。
注意在模块内部(构造体说明部分)需要定义三个连接线,定义语句为:
signalc0,c1,c2:
std_logic
代码如下:
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);
endrtl;
仿真波形图如下:
仿真电路图如下:
由上图可知设计是正确的。
2、采用行为描述方式:
首先新建一个工程,命名为“adder4_2”,然后编辑代码。
在编写代码过程中应注意以下几个要点:
1、VHDL语言可以进行高层次抽象的行为描述,而不用描述硬件电路的具体逻辑关系。
例如在描述加法器时,可以用如下语句:
s<=a+b+ci;
上述描述方法需要用到ieee库中的ieee.std_logic_unsigned.all。
2、为了能够生成进位,四位加法器在内部应得到五位的和,因此两个加数也应扩充为五位。
扩充字长可应用并置运算完成。
如下语句将四位信号a在最高端并置一个’0’而成为五位信号aa:
aa<=‘0’&a;
将五位信号ss的低四位赋值给四位信号s的语句如下:
s<=ss(3downto0);
和的最高位作为加法器的进位输出。
代码如下:
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);
endrtl;
仿真波形图如下:
仿真电路图如下:
由上图可知设计是正确的。
3、采用构造体的结构描述方式:
首先新建一个工程,命名为“adder4_3”,然后编辑代码。
(附加要求:
应用一位全加器按如下电路图通过结构描述方式构造四位加法器)
代码如下:
libraryieee;
useieee.std_logic_1164.all;
entityfull_adderis
port
(
a:
instd_logic;
b:
instd_logic;
ci:
instd_logic;
s:
outstd_logic;
co:
outstd_logic
);
endentity;
architecturertloffull_adderis
begin
s<=axorbxorci;
co<=(aandb)or(aandci)or(bandci);
endrtl;
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityadder4_3is
port
(
A,B:
instd_logic_vector(3downto0);
Ci:
instd_logic;
S:
outstd_logic_vector(3downto0);
Co:
outstd_logic
);
endentity;
architecturertlofadder4_3is
signalC0,C1,C2:
std_logic;
componentfull_adderis
port
(
a,b:
instd_logic;
ci:
instd_logic;
s:
outstd_logic;
co:
outstd_logic
);
endcomponentfull_adder;
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;
仿真波形图如下:
仿真电路图如下:
由上图可知设计是正确的。
5、三种描述方式的比较:
这三种描述方式是从不同的角度对硬件系统进行行为和功能的描述。
行为方式描述是对整个系统数学模型的描述,并不真正考虑其实际的操作,用行为方式描述的系统结构的程序其抽象程度高,很难直接映射到具体的逻辑元件的实现。
要想得到具体的元件实现,必须将行为描述的VHDL语言程序改写为RTL方式描述的程序。
采用RTL方式描述才能导出系统的逻辑表达式,才能直接得到逻辑元件之间的链接关系。
构造体的结构描述方式是RTL方式描述的一种特殊的形式,它可以将已有的设计成果应用到新的设计中,提高了设计的效率。