四位二进制加法器与乘法器Word格式.docx
- 文档编号:18645912
- 上传时间:2022-12-30
- 格式:DOCX
- 页数:17
- 大小:120.42KB
四位二进制加法器与乘法器Word格式.docx
《四位二进制加法器与乘法器Word格式.docx》由会员分享,可在线阅读,更多相关《四位二进制加法器与乘法器Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
2.2.1VHDL简介
VHDL语言是一种用于电路设计的高级语言。
它在80年代的后期出现。
最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。
但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为AI/IEEE的标准(IEEESTD1076-1987)。
1993年更进一步修订,变得更加完备,成为AI/IEEE的AI/IEEESTD1076-1993标准。
目前,大多数的CAD厂商出品的EDA软件都兼容了这种标准。
VHDL的英文全写是:
VHSIC(VeryHigheedIntegratedCircuit)HardwareDescriptiongLanguage.翻译成中文就是超高速集成电路硬件描述语言。
因此它的应用主要是应用在数字电路的设计中。
目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。
当然在一些实力较为雄厚的单位,它也被用来设计ASIC。
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
VHDL比其它硬件描述语言相比有以下优点:
(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。
强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。
符合市场需求的大规模系统高效,
高速的完成必须有多人甚至多个代发组共同并行工作才能实现。
(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。
(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
2.2.2VHDL语言特点
应用VHDL进行系统设计,有以下几方面的特点。
(一)功能强大
VHDL具有功能强大的语言结构。
它可以用明确的代码描述复杂的控制逻辑设计。
并且具有多层次的设计描述功能,支持设计库和可重复使用的元件生成。
VHDL是一种设计、仿真和综合的标准硬件描述语言。
(二)可移植性
VHDL语言是一个标准语言,其设计描述可以为不同的EDA工具支持。
它可以从一个仿真工具移植到另一个仿真工具,从一个综合工具移植到另一个综合工具,从一个工作平台移植到另一个工作平台。
此外,通过更换库再重新综合很容易移植为ASIC设计。
(三)独立性
VHDL的硬件描述与具体的工艺技术和硬件结构无关。
设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。
程序设计的硬件目标器件有广阔的选择范围,可以是各系列的CPLD、FPGA及各种门阵列器件。
(四)可操作性
由于VHDL具有类属描述语句和子程序调用等功能,对于已完成的设计,在不改变源程序的条件下,只需改变端口类属参量或函数,就能轻易地改变设计的规模和结构。
(五)灵活性
VHDL最初是作为一种仿真标准格式出现的,有着丰富的仿真语句和库函数。
使其在任何大系统的设计中,随时可对设计进行仿真模拟。
所以,即使在远离门级的高层次(即使设计尚未完成时),设计者就能够对整个工程设计的结构和功能的可行性进行查验,并做出决策。
3设计规划过程
3.1加法器与乘法器的原理
3.1.1四位二进制加法器的组成原理
加法器是运算电路的核心。
计算机中实现减法、乘法和除法都要最终转化成加法来运算。
本实验才没有用VHDL语言中的加法运算符。
而是用基本门电路来实现的。
一方面可以提高运算速度,另一方面可以使我们加深对数字电路的认识。
图3.1所示是四位二进制加法器的原理框图。
图3.1加法器系统框图
3.1.2四位二进制乘法器的组成原理
本实验学习VHDL中乘法的使用。
在VHDL语言中,一般有c(7downto0)=a(3downto0)*b(3downto0)。
所以4位二进制数的乘积是8位二进制数,为了更符合习惯,我们把结果转化成了十进制。
所以结果范围是0—225,即0—15*15。
本实验采用的三位数在数码管上显示的方法是:
分别确定百位、十位和个位。
送数码管动态显示。
采用与各个数逐一比较的方法确定。
如百位的确定可以将结果与200和100比较,若比200大则百位为2,在100到200之间则百位为1,小于100则百位为0,不显示。
十位的确定可以将结果去掉百位,然后与10,20,….90比较而得。
本文设计的四位二进制乘法器系统框图如图3.2所示。
图3.2乘法器系统框图
3.2加法器与乘法器的设计
四位二进制加法器和乘法器由VHDL实现后,利用EDA工具对各模块进行了时序仿真(TimingSimulation),其目的是通过时序可以更清楚的了解程序的工作过程。
3.2.1加法器的设计
1位全加器的VHDL程序:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityadd1is--1位全加器
port(a,b:
instd_logic;
cin:
cout:
outstd_logic;
s:
outstd_logic
);
endadd1;
architecturertlofadd1is
begin
process(a,b,cin)--列举所有情况对应的输出
variabletemp,temp1:
std_logic;
begin
temp:
=axorb;
temp1:
=tempxorcin;
cout<
=(tempandcin)or(aandb);
s<
=temp1;
endprocess;
endrtl;
--以上是对add1的定义
以上是对一位全加器的定义,运用一位全加器构成四位全加器。
其中引脚分配如下:
备注:
cin接地。
四位二进制加法器仿真图如下所示:
仿真分析:
cin为输入信号,表示上一次的进位,b,a为输入信号,表示两个相加的数,s为输出信号,表示本次运算的结果,cout为进位输出信号,表示本次运算的进位,如图所示:
当cin为0,a,b为1时,输出为:
s=0,cout=1,当cin=1,a=1,b=0时,输出为:
s=0,cout=1,当cin=1,a=1,b=1时候,输出为:
s=1,cout=1。
3.2.2乘法器的设计
乘法器的设计用VHDL乘法运算符实现。
本实验采用的三位数在数码管上显示的方法是:
VHDL语言设计如下:
entitymultiplyis--构造体描述4位乘法器
port(clk:
a,b:
instd_logic_vector(3downto0);
led_data:
outstd_logic_vector(7downto0);
seg_sel:
outstd_logic_vector(2downto0)
endmultiply;
architecturertlofmultiplyis
signalled_data2,led_data1,led_data0:
std_logic_vector(7downto0);
--LED显示代码,寄存十位个位的数
signaldisplayclk:
std_logic;
begin
process(a,b)
variables:
--乘积
variablebai,shiwei,gewei:
std_logic_vector(3downto0);
--乘积的十位个位
s(7downto0):
=a(3downto0)*b(3downto0);
ifs>
="
11001000"
thenbai:
0010"
;
s:
=s-"
--200以上
elsifs>
01100100"
0001"
--100以上
elsebai:
0000"
endif;
01011010"
thenshiwei:
1001"
gewei:
=s(3downto0);
--90以上
01010000"
1000"
--80以上
01000110"
0111"
--70以上
00111100"
0110"
--60以上
00110010"
0101"
--50以上
00101000"
0100"
--40以上
00011110"
0011"
--30以上
00010100"
--20以上
00001010"
--10以上
elsegewei:
shiwei:
casebaiis
when"
=>
led_data2<
11111001"
10100100"
whenothers=>
11111111"
endcase;
caseshiweiis
led_data1<
11000000"
10110000"
10011001"
10010010"
10000010"
11111000"
10000000"
10010000"
casegeweiis
led_data0<
process(clk)
variablecnt:
integerrange0to20000;
--1KHZ扫描显示时钟
begin
ifclk'
eventandclk='
1'
thencnt:
=cnt+1;
ifcnt<
10000thendisplayclk<
='
elsifcnt<
20000thendisplayclk<
0'
elsecnt:
=0;
displayclk<
process(displayclk)--显示两位
variablecnt2:
std_logic_vector(1downto0);
ifdisplayclk'
eventanddisplayclk='
thencnt2:
=cnt2+1;
ifcnt2="
01"
then
seg_sel<
001"
led_data<
=led_data0;
elsifcnt2="
010"
=led_data1;
11"
cnt2:
00"
100"
=led_data2;
实验引脚分配如下:
四位二进制乘法器仿真图如下所示:
仿真分析:
clk为时钟脉冲输入信号,a,b是输出信号表示要参与运算的两个数,
Led_data,seg_set为输出信号,表示计算的结果。
结束语
通过两周的紧张工作,最后完成了我的设计任务——四位二进制加法器和乘法器的设计。
通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性所在。
本次设计课不仅仅培养了我们实际操作能力,也培养了我们灵活运用课本知识完成工作的能力。
加法器和乘法器虽然是比较简单的设计课程,但它给了我一个锻炼的机会和检验的机会,也给我复习计算机组成原理这门课提供了方便。
希望学校以后多安排一些类似的实践环节,让同学们学以致用。
加法器和乘法器的设计让我对门电路更有清楚了解,对VHDL语言也有了一定的了解。
加法器是计算机运算中的重要组成部分,而且是其他运算实现的基础。
在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,感谢肖晓丽老师耐心的给我指出了错误,让我面对错误的检查有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事设计工作会有一定的帮助。
在应用VHDL的过程中让我真正领会到了其并行运行与其他软件顺序执行的差别及其在电路设计上的优越性。
VHDL语言具有多层次描述系统硬件功能的能力,可以从系统的数学模型直到门级电路,用来进行数字系统的设计方便灵活。
致谢
在此次课程设计中,非常感谢肖晓丽老师对我的指导与大力的帮助。
如果没有她严谨细致、一丝不苟地批阅和指正,本文很难在这个短时间(两周)内完成。
在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!
参考文献
[1]DavidA.Patterson.计算机组成和设计[M].清华大学出版社,2003年12月
[2]WilliamStallings.计算机组织与结构[M].高等教育出版社,2001年8月
[3]曾繁泰,陈美金.VHDL程序设计[M].清华大学出版社,2001
[4]潘松.VHDL实用教程[M].电子科技大学出版社,2000
[5]王爱英.计算机组成与结构[M].清华大学出版社.2001年2月
附件:
加法器的VHDL语言设计:
--整体组装
entityadder4is--4位全加器
port(a0,a1,a2,a3:
--四位二进制输出
b0,b1,b2,b3:
--四位二进制输出
--进位输入,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二进制 加法器 乘法器
![提示](https://static.bdocx.com/images/bang_tan.gif)