基于硬件描述语言的四位加减法器设计分解.docx

上传人:b****5 文档编号:7229830 上传时间:2023-01-22 格式:DOCX 页数:28 大小:225.69KB
下载 相关 举报
基于硬件描述语言的四位加减法器设计分解.docx_第1页
第1页 / 共28页
基于硬件描述语言的四位加减法器设计分解.docx_第2页
第2页 / 共28页
基于硬件描述语言的四位加减法器设计分解.docx_第3页
第3页 / 共28页
基于硬件描述语言的四位加减法器设计分解.docx_第4页
第4页 / 共28页
基于硬件描述语言的四位加减法器设计分解.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

基于硬件描述语言的四位加减法器设计分解.docx

《基于硬件描述语言的四位加减法器设计分解.docx》由会员分享,可在线阅读,更多相关《基于硬件描述语言的四位加减法器设计分解.docx(28页珍藏版)》请在冰豆网上搜索。

基于硬件描述语言的四位加减法器设计分解.docx

基于硬件描述语言的四位加减法器设计分解

编号:

   

 

本科毕业设计(论文)

 

基于硬件描述语言的四位加减法器设计

Designofafourbitadder-subtracterbasedonhardwaredescriptionlanguage

 

诚信承诺

我谨在此承诺:

本人所写的毕业论文《基于硬件描述语言的四位加减法器设计》均系本人独立完成,没有抄袭行为,凡涉及其他作者的观点和材料,均作了注释,若有不实,后果由本人承担。

承诺人(签名):

2015年4月19日

 

摘要

【摘要】本设计为四位加减法器,使用基本的逻辑门(与门、或门、异或门、与非门等)组成一个完整的电路,实行四位加减法的运算。

本设计用硬件描述语言VHDL来设计程序,在Modelsim工具软件下,运用数据流描述基本逻辑门,采用层次化结构组织完整电路,将逻辑门组合成一个半加器,由半加器组合成一个一位全加器,再通过串行的方式将4个一位全加器级联起来,最后利用一位可选择异或信号位,实现四位二进制数的加减法功能。

【关键词】四位加减法器;硬件描述语言;VHDL;基本逻辑门;串行进位

Abstract

【ABSTRACT】Thedesignforthefourbitadder-subtractorusingbasiclogicgates(AND,OR,XOR,NANDgates,etc.)toformacompletecircuit,theimplementationofthefouroperationsofadditionandsubtraction.ThedesignofhardwaredescriptionlanguageVHDLtodesigntheprogram,undertheModelsimsoftwaretools,theuseofthedatastreamtodescribethebasiclogicgates,usingthehierarchicalstructureoftheorganizationcompletethecircuit,thecombinationallogicgatesintoahalfadder,acombinationofhalf-adderintoaonefulladder,andthenthroughaserialmannerfourafulladdercascadetogethertoproduce.Finally,usingachoosetheXORsignal,additionandsubtractionfunctionstoachievethefourbinarynumbers.

【KEYWORDS】fourbitadder-subtractor;hardwaredescriptionlanguage;VHDL;basiclogicgates;serialcarry

目录

1绪论

微电子技术前进的脚步导致了日益增加的制造ASID的产品,这带来了设计挑战困难,测试方法和工具的复杂性,因此,由硬件描述语言(VHDL)替代示意图,成为数字系统设计的基础。

使用高密度数字系统的设计过程中的主要部分是在验证过程,在很多应用领域设计的验证已经成为项目发展的重要组成部分在时间,成本方面,并将其转化为一种有利资源。

VHDL已经成为行业标准的硬件描述语言系统,在产品开发的过程中,利用VHDL语言来编写设计电路系统已经成为产品设计的关键。

本设计采用了现代最基本硬件描述语言VHDL,它在设计逻辑电路时,不仅可以对门级电路系统进行描述,还可以描述系统行为级电路;支持三种不同的描述风格:

结构描述、行为描述、数据流描述,涉及内容丰富、表述力强,由此其在设计领域愈来愈重要。

ASIC是专用的系统集成电路,是一种可以进行逻辑处理功能的加速处理器。

而FPGA是特殊的ASIC芯片,与其他的ASIC芯片不同的是,它具有设计开发时间短、设计中用到的材料少、开发工具齐全、标准产品无需测试、质量有保障以及可以远距离监测等优点。

本设计的目标是实现一个逻辑电路,使用VHDL用于对硬件设计实现,然后检查在模拟器使用的编译过程,用Modelsim来模拟这逻辑电路。

该电路的功能是通过写VHDL测试平台代码来验证。

Modelsim提供了一个完整的VHDL仿真测试环境,支持程序的功能设计,VHDL源代码验证和时序模型仿真。

1.1选题背景

VHDL是一种全新的硬件描述语言,通常应用于数字电子技术与系统电路的编写、仿真和自动化设计,是当今电子设计自动化(EDA)的关键部分。

1.1.2课题相关技术的发展

现代设计的电子器件的形状越来越小,功能越来越丰富,功率消耗也越来越小。

它与一般意义上的电子器件在结构上的最大不同是使用大规模基本可编程逻辑器件,不但增强了性能,还降低能耗。

同时又大程度地运用现代数字电子技术,提高产品的自动化能力和核心竞争力,减短了产品的开发设计周期。

EDA技术结合很多学科最前沿的科研成果,形成的一门全新技术,来适应现代电子技术的要求[1]。

EDA技术是利用计算机技术将大规模的基本逻辑元件用VHDL语言风格的描述方式,将系统电路从电子系统转变为硬件系统,以程序软件开发系统和EDA软件系统为主要设计工具,通过一系列的逻辑编写,逻辑化简,综合优化,布局布线,时序仿真,最终对设计芯片进行仿真验证,逻辑映射,编译下载等步骤。

因此,EDA技术是一门集成专用器件和电子电路系统的多学科结合的新技术[2]。

本设计利用VHDL硬件描述语言结合基本逻辑门进行的,逻辑门是在集成电路上的基本组件。

简单的逻辑门可由晶体管组成,输入信号通过这些晶体管后能将原来的高低电平进行转化后产生高电平或者低电平的信号。

高、低电平可以相当于数字电路中1和0,从而实现逻辑运算。

常见的逻辑门包括与门,或门,与非门,异或门等等,这些逻辑门可以组合使用实现更为复杂的逻辑运算。

1.1.3课题研究的必要性

随着计算机技术、数字电子技术、大型可编程逻辑器件的发展和VHDL语言的出现,利用软件来完成对硬件系统的设计毫无问题。

VHDL语言和硬件系统没有具体的联系,而对设计平台也没有特殊的要求,并具有极强的电路描述和建立模型能力,能从不同层次对数字系统进行建模和描述,同时对系统进行逻辑综合和优化,从而大程度地简化了硬件设计任务,而且提高了效率和质量,还减少了设计成本。

VHDL已经成为一种非常重要的高层次设计技术,是如今数字电路设计者设计数字硬件时的关键。

1.2课题研究的内容

本设计主要基于VHDL的四位加减法器,要求使用基本逻辑门来组合电路,通过串行进位来设计电路逻辑图。

具有将四位输入进行正确的加减,把结果和进位完整的输出,利用数据流描述方式直接对数据进行高层次运算。

 

2VHDL简介

2.1VHDL描述

VHDL是一种超高速集成电路硬件描述语言。

VHDL是用于说明硬件电路系统的语言,它由1980年美国政府发起的超高速集成电路(VHSIC)计划产生,当时由于国家安全原因,美国军方需要一种描述电子系统的标准化方法。

它是一种基本的硬件描述语言,可用于模型的多层次抽象数字系统,从体系结构级到门级。

被建立模型的系统的复杂性可以从一个简单的门到一个完整的数字电子系统[3]。

VHDL语言可以被视为顺序,并行,网表,波形产生的一个融合和定时规范语言[4]。

VHDL支持开发,验证,综合,和测试硬件。

建模数字硬件设备可在模拟器编写代码,然后代码被合成为一个网列表,其中一个编译器编译这些写入的代码转换成机器代码。

VHDL是迅速被接受为设计通用的通信介质,计算机工程厂商,FPGA供应商和整个行业的ASIC厂商在使用标准化VHDL作为输入和输出,使用其中的工具包括仿真工具,综合工具的,布局布线工具等等。

它支持许多不同的设计方法(自顶向下,自底而上等)和设计技术(同步,异步等)[5]。

VHDL可以用来捕捉在一个大的系统中的每个组件的性能和接口要求,在设计中的每个组件被定义为界面,这也被称为VHDL实体,这些部件的验收要求在测试平台的形式进行说明。

该设计的细节输入或捕获在一个基于计算机的设计系统。

在本设计系统中,设计人员可以输入用VHDL描述,一旦设计被输入到基于计算机的设计中,电路的工作就是进行仿真以检查它是否能够满足设计规范的功能和定时要求,功能仿真将在设计过程中发现最合乎逻辑的错误。

下一阶段是测绘的时序约束,可以由综合工具读取的格式进行说明,如果符合满足定时约束,它产生一个净列表。

VHDL可用于设计和测试的发展。

一个VHDL测试平台可以创建、验证电路,使之符合功能和时序约束。

这些测试设计可以通过使用文本编辑器或输入图形波形来产生。

2.1.1VHDL与FPGA的关联

用VHDL硬件描述语言设计的数字电路系统,再进行简单的逻辑综合与系统优化,布局排线后,直接将其烧录到FPGA上进行结果测试,是现在数字硬件系统设计验证的技术方法之一。

这些基本的可编辑电器元件可以用来组成一些逻辑门电路(比如与门、或门、异或门、与非门等等),再通过这些基本的逻辑门电路设计成更加复杂的电路系统。

现在的电路控制芯片有两种,一种是关于软件的(如单片机,PLC,AVR)还有一种是关于硬件的(如FPGA,PAL,GAL)。

其中的不同之处在于单片机是执行程序来编译电路的,而FPGA用VHDL硬件语言来对其编程,仿真下载编译后不是让FPGA去执行程序,而是编写程序来实现FPGA内部符合设计要求的电路功能。

使这个FPGA转变为我们预期的那种硬件系统,VHDL硬件描述语言不同于C语言,C语言是一种是软件语言,芯片读写语句时是一条条执行,但VHDL是一种硬件语言,在执行程序语句时,所有的语句都是同时执行的,没有先后,也就是是并行的。

VHDL作为一种基本的硬件语言,通过编写程序就可以得到想要的电路原理图。

FPGA是一种半定制电路,里面全是记忆元件,逻辑门电路,只需执行相应的VHDL程序语句就能设计出复杂电路[6]。

2.2VHDL程序基本结构

VHDL在语法上,与基本的编程语言大体相同如C语言,但它作为一种硬件语言,在结构上就和硬件元件有特殊的联系。

VHDL语言一般包括库(Library),实体(Entity),结构体(Architecture),包集合(Package)和配置(Configuration)五个部分。

其中,实体是每种编程语言的关键部分,在VHDL语言中,实体是由结构体和实体说明来构成。

实体声明规定了实体的名称,并列出了一组接口端口。

实体介绍了外部视图,或者数字系统的硬件抽象,端口信号通过该实体与外部环境相互沟通;结构体用于指定一个实体的内部细节,设计中的每个体系结构必须由实体的名称来约束[7]。

在VHDL中,可以创建一个及以上的结构为一个实体,各种类型样式用于通过结构来指定一个实体的细节,可以用顺序赋值语句来表示数据流或行为,配置语句用于从库中选取所需要的,原来组成不同功能的电路在被用来设计系统功能时发生变化,产生新的结构,再将相应的器件编写到实体的结构体中;包集合中包含了各个设计模块需要的相应的数据类型、变量声明和子程序等。

库首先声明,告诉哪些库使用编译器,那么基本的某个库ieee.std_logic_1164,它定义包含标准数据类型的一个标准软件包,这个数据类型称为STD_LOGIC的。

2.3VHDL程序设计流程

VHDL程序在设计过程中,使用自上向下的方法,先对系统的整个结构进行设计,对顶层总的功能模块进行整体划分,然后对各个子模块进行设计并布局,再通过综合与优化,编译和门级仿真,如果没有错误,最后实现电路的时序仿真,用VHDL设计数字系统的流程如图2-1所示:

图2-1VHDL设置系统流程图

流程说明:

1.输入VHDL代码,这是在硬件语言设计中基本的输入方式之一,而且还可以使用逻辑框图和功能图作为输入,这样看起来更加直观,简洁,容易明白。

2.将VHDL代码或者框图等输入方式写入到VHDL程序中。

3.对代码进行功能的仿真验证,用于确认电路系统的设计功能有无差异。

这过程适用于大规模的复杂设计,在优化前对源代码仿真验证,对于大规模设计来说,就可以减少很多重复的次数,缩短了设计的时间,节约了成本。

4.用仿真验证工具对VHDL程序进行编译处理,生成对应的门级描述文件,相当于把计算机上的硬件描述语言转变成实际中的硬件电路。

FPGA产品中的综合优化非常特殊,必须找到对应的集成电路厂家综合库才能实现综合优化处理。

5.把各个基本逻辑门电路模型进行仿真,使其实现相应的逻辑结果,再把输出的结果送到上级电路模型中。

6.最后对程序进行时序仿真验证。

因为这时已经由原来设计的程序电路转变为目标器件的实际硬件特性,所以由仿真结果可以清楚准确地表示出芯片的实际性能[8]。

VHDL语言已逐渐成为一种基本的硬件描述语言,现代计算机软件供应商已把VHDL作为其CAD或EDA软件输入与输出的标准,其中Mentor公司制作出一款方便实用的综合工具Modelsim,它可以全方面的对电路系统进行逻辑设计,从编写、综合与优化、布局布线到仿真、下载编译都非常便捷。

2.4VHDL的描述方式

VHDL结构体通过行为描述、数据流描述、结构描述这三类不同的描述风格来表示可编程逻辑器件的输入输出。

2.4.1行为描述

行为级描述,有时也叫算法级描述,它不只是描述单一器件,而是描述整个电路系统的数学模型,因此行为级描述是一类顶层的描述方式。

行为级描述只是将电路系统的功能,或者是设计电路中如何将输入转化为输出的过程表示出来,不包括实现具体的硬件结构,也没有关于硬件结构的信息。

行为级描述一般只有顺序进程,没有结构化的进程。

行为级描述的电路器件包含了系统设计的行为,把每一个顺序语句写入具体的进程中去,在将多个具体的进程构成一个完整的设计模型。

使用行为级描述方式的程序着重建立标准的数学模型、正确的实体行为和精确的输出结果,而不是从设计电路组织的实体和逻辑门级的实现来完成设计。

当VHDL语言程序采用行为级描述风格时,通常状况下只适用于行为层次的仿真验证,却不可以进行整体逻辑的综合优化。

整体逻辑的综合只能在数据流描述风格下进行,不能在行为级描述方式下。

因此,为了在行为级描述风格下进行整体逻辑的综合,通过一些EDA软件把行为级描述转换为数据流级描述方式。

2.4.2结构描述

结构描述方式与行为级描述方式只描述过程不同,它是描述这个设计元件的硬件整体是怎么构成的。

使用多层次化的设计结构下,用这种描述方式把底层的设计电路模块嵌入顶层的电路模块系统中,也可以就用基本逻辑门电路模块来组成一个大规模的逻辑电路系统。

一般采用生成语句和元件例化语句编写程序的方法,来绘制结构描述程序可模仿逻辑图。

结构描述电路的基本过程:

(1)绘制框图。

先分析目标系统电路中需要用到的逻辑单元的种类和数量。

用一个实例元件来代表每个子单元,只标出其功能、编号和端口及信号流向等特征,而不用了解其内部结构。

(2)元件说明。

用一个器件语句来说明对应子单元的功能。

(3)信号说明。

将各个元器件之间的输入输出信号分别进行命名,称为信号名。

把这些输入输出信号分别用SIGNAL语句予以声明。

(4)元件例化。

依据实例器件的端口特性和模板元件的端口之间的对应关系,把各个实例器件用一个器件例化语句加以说明。

(5)用一个框架把整个设计程序连接起来。

把一个大规模可编辑的电路系统,先将其分解为多个子模块,再把每个子模块分解成更小的单元,对其进行多层次的设计。

这样,可以使更多的设计者同时进行合作。

在多层次设计中,每个层次都可以由一个单一的元气器件,再构成一个大规模的模块或复杂的系统,可以先对每个器件进行分别仿真验证,然后再对系统整体进行调试。

因此,结构化描述不但是一种好的设计思想,更是一种独特的设计方法,在多层次化的电路系统中更为重要。

2.4.3数据流描述

数据流描述,也叫RTL的描述方式,就是描述各个寄存器之间对应的硬件结构功能。

数据流描述方式利用VHDL语言并行读写的赋值特性,将数据流的运动方向、运动路径和运动结果描述出来,实现完整的逻辑综合优化方式。

数据流描述方式不但能描述组合电路,还能描述时序电路。

数据流描述是指把电路系统中的信号在储存元件之间进行运算和交换进行描述。

设计者利用RTL描述方式,直接用VHDL自带的各种复杂运算符对系统进行高层次的逻辑运算和数学建模,与具体硬件电路结构无关。

设计者用数据流风格描述时,侧重于对电路数据运算层面进行综合与优化,可以专注于数据流的处理和控制。

本设计采用数据流描述方式,数据流描述方式能更加直接地表述逻辑电路的行为。

例如一位全加器,其逻辑功能描述如下:

s=xXORy

sum=sXORc_in

c_out=(xANDy)OR(sANDc_in)

2.5VHDL语言的优势

(1)功能描述性强。

可用于门级,电路级还可以是系统级的描述,仿真和编译。

(2)便携性。

使用相同的描述设计和仿真工具,也用于不同的平台。

(3)开发周期短,成本低。

这主要是由于VHDL支持分解和大规模利用现有的设计,从而加速设计进程。

(4)可以延长设计的生命周期。

因为VHDL不会因为工艺硬件的变化而使描述过时,所以进行硬件描述时不用关心硬件具体的结构。

VHDL能对目标电路系统进行仿真与验证,可以很大程度上确保设计的准确性,使用者可以不必知道如何测试相量就可以进行整个电路级的调试,而且设计者可以通过比较各种方案之间的可行性及其优劣,来确定最符合自己的预期结果的设计方案。

(5)VHDL具有独立性。

描述电路设计时,不与具体的实际硬件结构关联,设计者可以不管目标器件是什么,也不必顾及设计系统的结构组成,就可以对其开始设计。

(6)VHDL语言正规、标准,简洁,复用和共享方便[9]。

2.6VHDL的测试验证文件Testbench

验证是什么呢?

写一程序,你往里面加了代码,然后再调试一下,这个就是验证的过程。

同样你可以分成几个部分,一个你的设计,然后你给他一定的激励。

然后你再试一下,看看这个程序是不是达到你想要的结果了,那就是一种验证的手段,如果不对了,那么改一点,再试试,这个就是反复验证。

在当前的项目,验证工程师多于设计师,有些复杂的设计有时达到两个或三比一的。

验证问题将会是一个普遍的关注的问题,行业研究得出,今天设计的所有芯片的一半中需要有一个或多个返工。

显著,这些研究表明,所有机制的74%是由于功能性错误,因此,验证已经成为一个项目对目标获利的关键。

VHDL已经成为行业标准的硬件描述语言系统,在产品开发过程中每个设计都应该进行验证[10]。

验证是用于证明在执行保留的过程总的设计意图,这是毫不奇怪的,验证已经成为验证工程师对所有的硬件设计的关键项目,放入验证是提高代码准确率非常重要的部分之一。

可以通过并行处理来有必要实现削减整体的验证时间,它需要能够与彼此以及与所述设计的实施编写和调试测试平台平行。

验证时间,也可以使用更高的抽象层次,这不但提高了效率,而且不必担心降低抽象水平。

有时需要额外抽象机制来实现期望的结果,在更高的抽象水平像执行总线周期的水平或更高,都可以用来代替在验证过程中的0或1。

有助于减少验证时间的另一个因素是自动化,尽管验证的某些部分可以被自动化,但是很多功​​能,协议和接口都需要进行验证变换,而通用自动化不能提供完整验证的解决方案。

验证是在设计阶段,其中最初的设计与要求的规格功能作出匹配。

验证检查,检验所有的设计规则,这里,如果它实现什么是指进行什么并不意味着对所述电路的检查,这两个条件是必不可少的。

这种类型的评价采用了多种技术,包括逻辑验证的功能测试与正确使用硬件描述语言全功能模拟和产生。

3四位加减法器的设计

四位加减法器的设计方法有两种,一种是自下而上;另一种是自顶而下。

本文采用自顶向下的设计方法来完成。

自顶向下的设计方法,是指从顶层设计到底层,从电路系统的顶层结构开始,对整体进行仿真,再将电路系统划分成各个子模块。

然后再对各个子模块进行分别仿真验证,符合要求之后经EDA开发平台由计算机自动综合成门级电路,进行门级仿真验证。

自顶向下的方法重点在于对每个层次进行仿真验证,来确保系统特性符合电路设计预期要求,以便于在早期就能发现和纠正设计中出现的错误。

四位加减法器系统的流程设计图如下图3-1所示:

图3-1四位加减法器流程图

流程说明:

1.本设计按照“自顶而下”的设计方法进行系统划分。

2.先设计出四位加减法器总的程序,然后再分别调用各位的子程序。

在串行四位加减法器中,因为每一位的加减和进位方法都一样,所以只需写一个循环就可以了[11]。

3.每一位的程序中都需要调用与门、或门、异或门等,因此需要将各个逻辑门电路调试完成。

本文将使用三种方法来设计一位全加器:

第一种使用三个逻辑门(与门、或门、异或门)来实现全加器的功能;第二种使用两个逻辑门(与非门、异或门)来实现;第三种只使用一个逻辑门(与非门)来实现全加器的功能。

减法的设计就是加法的延伸,在数字电路中,减去一个数就是加上这个数的补码,因此,本文使用异或门来实现,在每一位的输入端加上一个异或门来产生反码,再加上最后的进位来实现补码[12]。

要进行四位数的相加减,最简洁的方法就是将四个加减法器进行级联。

3.1用与门、或门、异或门来设计一位全加器

本小节采用三种逻辑门来设计全加器,先把每个逻辑门的数据流风格描述设计出来,再结合半加器的真值表写出其逻辑函数表达式,通过逻辑表达式把半加器的逻辑图设计出来。

全加器的设计与半加器相似,通过真值表写出逻辑函数表达式,再对表达式进行卡诺图化简转化,再对照逻辑函数表达式,整合三个逻辑门画出全加器的逻辑电路图。

3.1.1与门的设计

与运算。

当两个输入信号的电平一致时,输出才会和输入一致,不然就为0这种因果关系称为与逻辑。

用数据流风格描述为:

libraryieee;

useieee.std_logic_1164.all;

entityand_gateis

port(

a,b:

instd_logic;

y:

outstd_logic

);

endand_gate;

architecturedfofand_gateis

begin

y<=aandb;

enddf;

3.1.2或门的设计

或运算。

当两个输入信号的电平有一个为1时,输出信号为1,不然就为0这种因果关系称为或逻辑。

用数据流风格描述为:

libraryieee;

useieee.std_logic_1164.all;

entityor_gateis

port(

a,b:

instd_logic;

y:

outstd_logic

);

endor_gate;

architecturedfofor_gateis

begin

y<=aorb;

enddf;

3.1.3异或门的设计

异或逻辑运算是一种二变量逻辑运算,当两个变量电平不同时,逻辑函数值为1;当两个输入变量电平相同时,逻辑函数值为0。

用数据流风格描述为:

libraryieee;

useieee.std_logic_1164.all;

entityxor_gateis

port(

a,b:

instd_logic;

y:

outstd_logic

);

endxor_gate

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

当前位置:首页 > 求职职场 > 简历

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

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