计算器的设计Word格式文档下载.docx

上传人:b****5 文档编号:19488184 上传时间:2023-01-06 格式:DOCX 页数:34 大小:513.62KB
下载 相关 举报
计算器的设计Word格式文档下载.docx_第1页
第1页 / 共34页
计算器的设计Word格式文档下载.docx_第2页
第2页 / 共34页
计算器的设计Word格式文档下载.docx_第3页
第3页 / 共34页
计算器的设计Word格式文档下载.docx_第4页
第4页 / 共34页
计算器的设计Word格式文档下载.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

计算器的设计Word格式文档下载.docx

《计算器的设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《计算器的设计Word格式文档下载.docx(34页珍藏版)》请在冰豆网上搜索。

计算器的设计Word格式文档下载.docx

要大力推进制造业信息化,积极开展计算机辅助设计(CAD)、计算机辅助工程(CAE)、计算机辅助工艺(CAPP)、计算机机辅助制造(CAM)、产品数据管理(PDM)、制造资源计划(MRPII)及企业资源管理(ERP)等。

有条件的企业可开展“网络制造”,便于合作设计、合作制造,参与国内和国际竞争。

开展“数控化”工程和“数字化”工程。

自动化仪表的技术发展趋势的测试技术、控制技术与计算机技术、通信技术进一步融合,形成测量、控制、通信与计算机(M3C)结构。

在ASIC和PLD设计方面,向超高速、高密度、低功耗、低电压方向发展。

外设技术与EDA工程相结合的市场前景看好,如组合超大屏幕的相关连接,多屏幕技术也有所发展。

中国自1995年以来加速开发半导体产业,先后建立了几所设计中心,推动系列设计活动以应对亚太地区其它EDA市场的竞争。

在EDA软件开发方面,目前主要集中在美国。

但各国也正在努力开发相应的工具。

日本、韩国都有ASIC设计工具,但不对外开放。

中国华大集成电路设计中心,也提供IC设计软件,但性能不是很强。

相信在不久的将来会有更多更好的设计工具有各地开花并结果。

据最新统计显示,中国和印度正在成为电子设计自动化领域发展最快的两个市场,年复合增长率分别达到了50%和30%。

EDA技术发展迅猛,完全可以用日新月异来描述。

EDA技术的应用广泛,现在已涉及到各行各业。

EDA水平不断提高,设计工具趋于完美的地步。

EDA市场日趋成熟,但我国的研发水平沿很有限,需迎头赶上。

第二章

VHDL语言

2.1VHDL语言

VHDL语言全称是“超高速集成电路硬件描述语言(VeryHighSpeedIntergatedCircuitHardwreDescriptionLnguage)”,它是随着集成电路系统化和高度集成化的发展而逐步发展起来的,是一种用于数字系统的设计和测试的硬件描述语言。

对于小规模的数字集成电路,通常可以用传统的设计输入方法(如原理图输入)来完成,并进行模拟仿真。

但纯原理图输入方式对于大型、复杂的系统,由于种种条件和环境的制约,其工作效率低,而且容易出错,暴露出多种弊端。

在信息技术高速发展的今天,对集成电路提出了高集成度、系统化、微尺寸、微功耗的要求,因此,高密度可编程逻辑器件和VHDL便应运而生。

2.2VHDL语言的特点

VHDL语言作为一种标准的硬件描述语言,具有结构严谨、描述能力强的特点[2],支持从系统级到逻辑门级电路所有层次的设计,适合于复杂逻辑电路和系统的设计。

作为一种高级硬件描述语言,VHDL语言有如下特点。

(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力。

强大的行为描述能力是避开具体的器件结构、从逻辑行为上描述和设计大规模电子系统的重要保证。

(2)VHDL具有丰富的仿真语句和库函数,使得在任何大系统的设计早期,就能检查系统的功能可行性,随时可对系统进行仿真模拟,使设计者对整个工程的结构和功能的可行性做出判断。

(3)用VHDL完成一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动把VHDL描述设计转变成门级网表(根据不同的实现芯片)[3]。

这种方式突破了门级设计的瓶颈,极大地减少了电路设计的时间和可能发生地错误,降低了开发成本。

利用EDA工具的逻辑优化功能,可以自动地把一个综合后的设计变成一个更小、更高速的电路系统。

反过来,设计者还可以容易地从综合和优化的电路中获得设计信息,返回去更新修改VHDL设计描述,使之更加完善。

(4)VHDL对设计的描述具有相对独立性。

设计者可以不懂硬件的结构,也不必顾及最终设计的目标器件是什么,而进行独立的设计。

正因为VHDL得硬件描述与具体的工艺技术和硬件结构无关,所以VHDL设计程序的硬件实现目标器件有广阔的选择范围。

(5)由于VHDL具有类属描述语句和子程序调用等功能,对于完成的设计,在不改变源程序的条件下,只需改变类属参量或函数,就能轻而易举地改变设计的规模和结构[4]。

(6)VHDL本身的生命周期长。

因为VHDL得硬件描述与工艺无关,不会因工艺变化而使描述过时。

而与工艺技术有关的参数可通过VHDL提供的属性加以描述,当生产工艺改变时,只需要修改相应程序中的属性参数即可。

2.3VHDL语言设计实体的基本结构

VHDL语言是一种强数据类型语言,它有三种数据对象,即常数、信号和变量,每一种数据对象都要指定数据类型。

VHDL的数据类型丰富[5],既有数值数据类型和逻辑数据类型,又有位型和位向量型。

既支持预定义的数据类型,又支持自定义的数据类型。

这样就给硬件描述带来较大的自由度,使设计人员能够方便地使用VHDL创建高层次的系统模型。

VHDL语言将所设计的电路系统均看作一个设计实体,它可以是任意复杂的系统,也可以是一块电路板、一个芯片、一个电路单元甚至一个门电路。

如果将一个系统自上而下分层,划分模块,则各层的设计模块都可以作为一个设计实体。

不论是简单的数字电路,还是复杂的数字系统,其基本构成是一致的,它们都是由实体说明(Entity)和结构体(Architecture)两个最基本的部分组成。

实体说明部分用来描述该模块或系统的接口信息,包括端口的数目、方向和类型,其作用相当于传统设计方法中所使用的元件符号。

结构体部分则描述该模块的内部电路,对应于原理图、逻辑方程[6]和模块的输入/输出特性。

两者相结合就可以组成VHDL设计文件。

一个设计试题可以包括一个或多个结构体,用于描述其逻辑结构和逻辑功能。

2.4VHDL语言的实体

实体说明语句的格式如下:

ENITTY实体名IS

[PORT(端口表);

]

END[ENTITY]实体名;

实体说明是VHDL程序设计中最基本的组成部分,主要用来描述设计实体[7]的外部接口信号,定义设计单元的输入/输出端口,是设计实体对外的一个通信界面,为可视部分。

但它并不描述设计的具体功能。

端口名是赋予每个外部引脚的名称,通常用一个或几个英文字母,或者用英文字母加数字命名。

端口模式(或端口方向)用来定义外部引脚的信号方向。

在端口说明中,共有五种模式,分别为IN(输入端口)、OUT(输出端口)、INOUT(双向端口)、BUFFER(缓冲端口)和LINKAGE(链接端口)。

2.5VHDL语言的结构体

结构体[8]是设计实体的核心,它具有指明了设计实体的行为、元件及内部连接关系。

如果将实体说明看成一个元件或电路的外部符号,则结构体就是这个元件或电路的内部原理图。

通过结构体构造设计实体的硬件结构、元件之间的连接,实现数据传输和变换,完成设计实体功能的具体实施。

结构体的格式如下:

ARCHITECTURE结构体名OF实体名IS

[结构体说明语句;

BEGIN

[功能描述语句;

END[ARCHITECTURE][结构体名];

结构体名是给予结构体的名称,它是该结构体唯一的名字,位于引导语句和OF语句之间。

OF后面紧随实体名,表明该结构体隶属于哪个实体,并用IS来结束结构体的命名。

结构体名原则上可以是任意合法的标识符,但为了便于程序的阅读,通常都是根据该结构体所采用的描述方式对其命名,如Behavior(行为描述)、Dataflow(数据流描述)、Structure(结构描述)等。

结构体说明语句位于ARCHITCTURE和BEGIN之间,用于定义结构体中所用的数据对象和子程序,并对所引用的元件加以说明,即对结构体的功能描述语句中所用到的信号(SIGNAL)、类型(TAPY)、常数(CONSTANT)、元件(COMPONENT)、函数(FUNCTION)和过程(PROCEDURE)等加以说明和定义,但不能定义变量。

应当注意,这些定义只能用于这个结构体中,如果要将这些定义用于其他实体或结构体,则需要将其作为程序包处理。

2.6VHDL程序设计约定

为了便于程序的阅读,此设计对VHDL程序设计特作如下约定:

(1)语句结构描述中方括号“[]”内的内容为可选内容。

(2)对于VHDL的编译器和综合器来说,程序文字的大小写是不加区分的。

本文中,VHDL中使用的关键词用大写,对于由用户自己定义的名称等用小写。

(3)程序中的注释使用横线“——”,横线“——”后的文字都不参加编译和综合。

(4)为了便于程序的阅读与调试,书写和输入程序时,使用层次缩进格式,同一层次的对齐,低层次的描述较高层次的描述缩进两个字符。

(5)考虑到MAX+PLUSⅡ要求源程序文件的名字与实体名必须一致,因此为了使同一个VHDL源程序文件能适应各个EDA开发软件上的使用要求,各个源程序文件的命名均与其实体名一致。

 

第三章基于EDA技术的计算器的设计

3.1计算器的设计思路

将计算器分为四个部分:

计算部分、存储部分、显示部分和输入部分。

合理设计这四部分将有利于资源的合理应用。

其中计算部分分为加减乘除法器,分别设计底层程序。

显示部分为设计一个四位二进制数与七段译码相互转换的程序。

输入部分为设计有0到9数字按键与加减乘除运算符号,以及等于号及清零键。

3.2系统组成框图

图3-1

3.3计算部分的设计和实现

计算部分就是运算的过程,此设计中主要包含的运算有加减乘除法。

3.3.1加法器的设计

先构思一下加法器的流程图,如图3-2所示。

根据流程图,可以确定一个加法器要有被加数、加数和进位位的输入端口。

故设a端口为被加数,b端口为加数,ci为输入进位。

此加法器还有两个输出端口,分别是加法运算的最终结果输出和进位位的输出,故设s为结果的输出端口,co为进位的输出端口。

图3-2加法器的流程图

根据流程图可以看出,当输入被加数与加数后,两个8位二进制数开始相加,之后,再与输入进位位相加,这样得到的最终结果就是加法器加法运算的最终结果。

加法器[9]是基于EDA的计算器的设计中的基本逻辑器件,这里设计的8位二进制数的加法器,它是属于多位加法器的范畴的。

多位加法器按其进位方式的不同可以分为两类:

串行进位加法器和并行进位进位加法器。

串行进位加法器是将多个一位全加级联,低位全加器的进位输出送给相邻高位全加器作为进位输入,以此构成多位加法器。

这种设计思路简单明了且占用资源少,但运算速度较慢。

并行进位方式则是在各位的加法环节之外,另外设有进位产生逻辑电路,各位的进位输入信号同时产生,从而各位可以同时完成全加运算,输出最后结果。

并行进位方式具有较快的运算速度,但是相对于串行进位方式来说,却往往占用更多的资源。

尤其是当运算位数增加的时候,相同位数的并行进位和串行进位加法器的资源占用差距也越来越大。

因此,常常需要设计者在运算速度和资源占用量之间做出折中平衡。

实践证明,4位二进制并行进位加法器和串行级联加法器占用的资源几乎相同。

因此,可以用两个4位二进制并行加法器级联以构成8位二进制加法器,这是一种较为合理的选择。

4位二进制并行进位加法器的源程序ADDER4B.VHD如下:

LIBRARYIEEE;

——库

以上这部分是设计中的全加器的VHDL语言的第一部分——库。

一种用来存放预先已设计好的程序包[10]、数据集合体、元件的仓库。

库存放的信息供用户进行VHDL设计时调用,以提高设计效率。

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

以上这些是此加法器所要调用的程序包,是VHDL语言的第二部分。

用VHDL语言编写的共享文件[11],定义了在设计结构体和实体说明中将要使用的常数、数据类型、子程序和设计好的电路单元等。

ENTITYADDER4BIS——4位二进制数的加法器的实体

PORT(ci:

INSTD_LOGIC;

——进位位的输入端口

a:

INSTD_LOGIC_VECTOR(3DOWNTO0);

——一个4位二进制数的输入

——端口(被加数)

b:

——端口(加数)

s:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

——加法运算的结果输出端口

co:

OUTSTD_LOGIC——进位位的输出端口

);

ENDADDER4B;

这部分是此加法器的VHDL语言的第三部分——实体说明。

定义电路单元的输入、输出引脚信号。

程序的实体名称可任意取名[12](这里我取的是ADDER4B),但必须与VHDL程序的文件名称相同(保存时的文件名)。

实体说明以标示符ENTITY开始,以END结束。

ARCHITECTUREbehaveOFADDER4BIS——4位二进制数的加法器的结构体

SIGNALSINT:

STD_LOGIC_VECTOR(4DOWNTO0);

——类似于在芯片[15]内

——部定义的一个数据

SIGNALaa,bb:

aa<

='

0'

&

a;

——拓展位数,使其成为最高位

bb<

b;

SINT<

=aa+bb+ci;

——相加

s<

=SINT(3DOWNTO0);

co<

=SINT(4);

——最高位为输出进位位

ENDbehave;

这是加法器的VHDL语言的第四部分——结构体。

用来描述电路内部和逻辑功能。

结构体的名称可任意取名(这里取的是behave),并以标示符ARCHITECTURE开头,以END结尾。

(注.以下的程序是部分的VHDL语言)

根据以上设计的两个4位二进制数的加法器,来设计两个8位二进制数的加法器。

顶层模块:

8位二进制并行进位加法器的部分程序ADDER4B.VHD如下:

SIGNALCARRY_OUT:

STD_LOGIC;

U1:

ADDER4B

PORTMAP(ci=>

ci,a=>

a(3DOWNTO0),b=>

b(3DOWNTO0),s=>

s(3DOWNTO0),co=>

CARRY_OUT);

U2:

CARRY_OUT,a=>

a(7DOWNTO4),b=>

b(7DOWNTO4),s=>

s(7DOWNTO4),co=>

co);

调用两个4位二进制数加法的模块。

引脚分布图如下图3-3所示:

图3-38位加法器电路的引脚分布图

仿真波形图(图3-4):

图3-48位加法器的仿真波形

从以上仿真波形中可以作出总结(“0”为低电平,“1”为高电平):

若a为“8”,b为“9”时,a+b=“17”,这时的ci为高电平,所以在此基础之上还要再加“1”,得到s=“18”,这时最终的结果。

因为最高位没有进位,所以co为“0”即为低电平。

3.3.2减法器的设计

首先设计一个两个4位二进制数的减法器。

根据以下图3-5的4位全减器的流程图可以看出,此减法器共需要两个输入端口和一个输出端口。

减法器的设计可以引用加法器,即通过对减数的求补[16],再与被减数相加得到最终的,所以还要增设一个进位位输入端口和进位位的输出端口。

所以可以设a端口为被减数,b端口为减数,ci为输入借位位,s为结果的输出端口,co为借位的输出端口。

减法器的运算过程中首先要引用加法器(上面的加法器的程序中很详细地介绍了加法器的设计,故减法器中加法器的描述部分在这里就省略了)。

图3-54位全减器的流程图

减法器的部分VHDL语言描述:

BEGIN

btem(3DOWNTO0)<

=NOTb(3DOWNTO0);

——先把减数求反

ctem(0)<

=NOTci;

——输入进位也求反,从而对减数求补码

g1:

FORiIN0TO3GENERATE——连用四位全加器[17]

add:

adderPORTMAP(a(i),btem(i),ctem(i),stem(i),ctem(i+1));

ENDGENERATE;

s(3downto0)<

=stem(3downto0);

——把中间变量所得到的值赋给s,因

——为s是减法器运算出来的结果的输

——出端口,通过s把计算结果输出

co<

=NOTctem(4);

——求反输出进位

然后将4位全减器级联起来,就可得到两个8位二进制数的减法器。

图3-5是其原理图:

图3-6减法器的原理图

减法器的仿真波形:

图3-7减法器的仿真波形图

从以上仿真波形图3-7中可以作出总结(“0”为低电平,“1”为高电平):

两个数做减法,采用的是4位4位一减,若a为“00111000”,b为“00100010”时,首先将它们各自的低4位先做运算,先将b的第四位求补,之后与a的第四位相加后得到第四位的运算结果“0110”,最高位有进位,但输出时取反就为“0”,再用同样的方法计算出高四位的运算结果,得“0001”,之后还得加上一个低4位向高4位的进位“0”,所以最终结果s为“00010110”。

3.3.3乘法器的设计

乘法器是数字系统中的基本逻辑器件,在很多应用中都会出现如各种滤波器的设计、矩阵的运算等。

这里设计的是一个4×

4的乘法器。

根据乘法器的原理,可以绘出其流程图(图3-8),从流程图中又可以看出可设a端口为被乘数(一个4位二进制数),b端口为乘数(一个4位二进制数),y为乘法运算的结果的输出端口。

图3-8乘法器的流程图

乘法器的部分VHDL语言描述:

ENTITYmulIS

PORT(

a,b:

INSTD_LOGIC_VECTOR(3DOWNTO0);

——被乘数与乘数的输入

y:

OUTSTD_LOGIC_VECTOR(7DOWNTO0)——乘积的输出端口

);

ENDmul;

ARCHITECTUREarchOFmulIS

y(7DOWNTO0)<

=a(3DOWNTO0)*b(3DOWNTO0);

——y=a×

b

ENDarch;

乘法器的引脚图:

图3-9乘法器的引脚图

从乘法器的引脚图中也可以看出,乘法器有两个输入引脚,分别来输入乘数和被乘数,一个用来输出运算结果的输出端口,在封装好的乘法器的器件中,就是来实现乘法运算的算法的。

乘法器的仿真波形:

图3-10乘法器的仿真波形

从乘法器的仿真图3-10中可以看出,y的输出就是a与b的相乘后的结果。

例如:

若a为“0001”,b为“0010”,则根据左移原理可得出最终结果s,为“00000010”。

结果完全正确。

这里也可以证实两个4位二进制数的乘积为一个8位二进制数。

3.3.4除法器的设计

整个除法器是基于连减和移位操作的,连减实际上就是基于数学上除法的基本原理。

例如,a÷

b=c余数是d,就等价于a-c个b后得到d而且d<

b;

之所以可以使用移位操作,是因为所有运算的数都用二进制表示。

所设计的除法器主要部分为一个控制移位的控制器,另有一个由全加器组成的4位减法器(可引用上面的减法器的设计)。

又因为规定了结果为4位,控制器首先比较被除数的高4位与除数的大小,判断是否溢出,溢出则退出,否则就做4位移位和减法得到结果。

在每次做完减法以后都要判断是否够减,即判断是否有借位,不够得话,就恢复被减数,移一位再减。

除法器的流程图如下图3-11所示:

图3-11除法器的流程图

设a端口为被除数,b端口为除数,clk为时钟信号的输入端口,str为启动信号的输入端口,此端口的作用是当启动信号为高电平的时候有效,表示启动了除法器开始作除法运算。

s为除法运算所得到的商的输出端口,y为除法运算中所得到的余数的输出端口。

该除法器的设计中使用了状态机,它有5个状态:

start为开始状态,one为第一次移位状态,two为第二次移位状态,three为第三次移位状态(正常运算结果的输出状态),error为溢出出错状态。

在除法器的设计中引用了减法器。

ain用来寄存被除数,bin用来寄存除数,atem为减法器的被减数输入,btem为减法器的减数输入,stem用来计算内存结果,citem为减法器的借位输入,cotem为减法器的借位输出。

除法器的VHDL语言描述的部分程序:

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1