




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
黄山学院本科论文设计本科生毕业论文(设计)基于FPGA的8位ALU设计与仿真 姓 名: 石 鹏 指导教师: 华 婷 婷 院 系: 信息工程学院 专 业: 计算机科学与技术 提交日期: 目 录中文摘要3英文摘要4引 言51、绪 论61.1 算术逻辑单元ALU概述61.2 FPGA概述61.3 VHDL概述72. ALU的设计82.1 MAX+plus 及Quartus软件简介82.1.1 MAX+plus概述82.2.2 Quartus | 概述82.2设计思想92.3 算术运算单元的设计112.3.1 算术运算单元的Entity定义112.3.2 算术单元的Architecture描述122.4逻辑运算单元的设计122.4.1 完成Entity定义132.4.2 Architecture描述132.5 ALU的VHDL设计142.6八位ALU的VHDL设计的源程序代码152.7编译结果193. ALU 仿真194. 结束语20参考文献21致谢22中文摘要基于FPGA的8位ALU设计与仿真 摘 要:本文介绍了一种使用现场可编程逻辑门阵列(Filed Programmable Gate Array,FPGA)和硬件描述语言(Very-High-Speed Integrated Circuit HardwareDescription Language,VHDL)进行算术逻辑单元(Arithmetic Logic Unit,ALU)的设计方法。并在加法器模块的设计中使用了超前进位的方法。使得所设计的ALU具有很好的稳定性和较高的速度。完成加法、减法、带进位加、带进位减、加1、减1、传送、与、或、非、异或等操作,用 VHDL 语言和基于FPGA设计8位算术逻辑单元。它具有多种指令,实现了8位操作数的各种运算,最后采用VHDL语言中的语句对各模块进行整合,并对其进行仿真。关 键 词:ALU;FPGA;VHDL;仿真。英文摘要he Design of ALU Based on FPGA Abstract:This article introduces a method that a programmable logic device using FPGA and VHDL to design ALU. And adder module is used in the design-ahead approach. ALU is designed to make an excellent stability and high speed. To complete the addition, subtraction, bit into Canada, into the bit minus, plus one, minus one, transmission, and, or, non-, XOR operation and so on., Using VHDL language and FPGA-based design of arithmetic logic unit 8, it has many kinds of instructions, can achieve the four operands of various computing, and finally the use of VHDL language in the statement on the module integration, and simulation.Key Words:ALU; FPGA; VHDL; simulation 引 言以往的数字集成电路设计手段主要是采用传统的搭积木方式,随着半导体集成技术和计算机技术的发展,电子系统的设计方法发生了很大变化。20世纪90年代,电子设计自动化(EDA)技术被广泛应用于电子设计领域。采用可编程逻辑器件和EDA技术使得电子系统的设计质量大大提高。专用集成电路(ASIC)已被普遍应用,而基于ACIC的FPGA的应用最为广泛,采用它可以缩短产品的上市时间,降低开发成本,此外用可编程逻辑器件代替传统的普通集成电路已成为一种发展的趋势。可FPGA以其高集成度、高速度、开发周期短、稳定性好而受到了人们的青睐。由于算术逻辑单元(ALU)在运算中对系统性能要求很高,而采用中小规模的集成电路设计的系统既庞大又存在稳定性的问题。因此,用可编程逻辑器件FPGA来实现算术逻辑单元是一个很好的选择。而硬件描述语言(HDL)是使用可编程逻辑器件的不可缺少的工具,所以本文选用VHDL语言。设计8位算术逻辑单元,来实现算术逻辑单元的功能,又通过纯组合逻辑电路和超级进位方法的应用,使得在高速FPGA的基础上,实现了算术逻辑单元在速度上的进一步优化。使用 FPGA 和 VHDL 语言进行数字系统设计,可随时改变器件内部的逻辑功能和引脚的定义 ,可自动的进行逻辑综合与仿真,自动对目标器件进行下载编程,使复杂的硬件设计变得如同软件设计一样简单。 本文将主要分为3个章节,第一章为绪论,主要介绍了算术逻辑单元的原理、功能等知识和可编程逻辑器件的FPGA及VHDL的介绍。第二章是分为6节,分别叙述ALU的设计,先后从ALU的总体结构图、算术电路单元、逻辑电路单元、ALU的VHDL总体设计代码,编译等详细地讲述ALU的设计。第三章为ALU的仿真,先简单介绍了计算机仿真的概念与原理和方法,然后将本文的ALU结合仿真技术,我们进行软件仿真,并得出仿真结果的波形输出。1、绪 论1.1 算术逻辑单元ALU概述算术逻辑单元简称ALU,是一种功能较强的组合逻辑电路,有时被称为多功能函数发生器。ALU的实现,在并行进位加法器的基础上,再加上一些逻辑电路和功能控制信号线,可形成多功能算术逻辑运算部件ALU。ALU 主要完成对二进制信息的定点算术运算、逻辑运算和各种移位操作。算术运算主要包括定点加、减、乘和除运算。逻辑运算主要有逻辑与、逻辑或、逻辑异或和逻辑非操作。移位操作主要完成逻辑左移和右移、算术左移和右移及其他一些移位操作。某些机器中,ALU 还要完成数值比较、变更数值符号、计算操作数在存储器中的地址等。可见,ALU是运算器组成中的核心部件。ALU 能处理的数据位数(即字长)与机器有关。如 Z80 单板机中,ALU 是 8 位;IBM PC/XT 和 AT 机中,ALU 为 16 位;386 和 486 微机中,ALU 是 32 位。ALU 有两个数据输入端和一个数据输出端,输入输出的数据宽度(即位数)与 ALU 处理的数据宽度相同。1.2 FPGA概述FPGA工作原理:FPGA是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,即解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列LCA(Logic Cell Array,LCA)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有: 1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 2)FPGA可做其它全定制或半定制ASIC电路的中试样片。 3)FPGA内部有丰富的触发器和IO引脚。 4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。 可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。 加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。1.3 VHDL概述VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。VHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。 (1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。2. ALU的设计 2.1 MAX+plus 及Quartus软件简介2.1.1 MAX+plus概述Max+plus是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大可编程逻辑器件的供应商之一。Max+plus界面友好,使用便捷,被誉为业界最易用易学的EDA软件。在Max+plus上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。2.2.2 Quartus | 概述Quartus II 是Altera公司的综合性可编程器件PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。2.2设计思想设计主要是把整个电路分为算术电路单元和逻辑电路单元,最后,再把算术单元电路和逻辑单元电路组合起来,成为功能完整的算术逻辑单元。组合时,选择信号线S0、S1应分别相连,然后再利用另一选择线S2,来决定选择逻辑电路的结果作为输出(S2=1)还是选用算术电路的结果作为输出(S2=0),如图所示。算术电路单元逻辑电路单元2*1多工器输出 S0 S1S2C0AB图 ALU的电路方块该ALU单元采用模块化设计。共划分了2个模块:控制与逻辑运算电路模块(Control)、加减法电路模块(Addsub)。总体构成如图2所示。图2 总体结构图ALU模块图如图3所示。图中A,B为2个8位的输入;Command为功能选择输入;CIN为加减法的进位和借位输入;COUT为加减法的进位和借位的输出;Resulta和Resultb为2个8位的输出,乘法时Resultb存放积的高8位,Resulta存放积的低8位,除法时Resulta 存放商,Resultb存放余数。图3 ALU 模块为了能够做较详尽的说明,本章内容将把算术单元和逻辑单元分开说明,然后再合为一个完整的ALU电路。整个算术单元虽然可执行八种不同的功能,但重点还是在加法、减法和传输移位电路的设计。在着手开始设计之前,先花些时间来说明使用VHDL设计较大型电路时的概念及技巧。当使用VHDL来设计任何电路时,一定得面对两个问题。第一、 Entity如何定义也就是说,管脚上的输出端u、输入端口的规格?在开始设计电路之的,设计者必须审慎考虑各个输出、输入端口信号的模式与数据类型。不正确的定义将导致出现无法编译(Compiler)或仿真(Sumulation)的错误。第二、采用何种结果(Architechture)描述法来描述电路的设计设计者必须清楚各种Architechture的优缺点,并检查目前自己手上所拥有的数据有哪些?甚至要考虑到将来的维护及扩充时的弹性等各项因素然后选择最适合或较方便的描述法来完成电路结果描述。2.3 算术运算单元的设计在程序设计前,先简要说明一下VHDL的程序设计图,如下:定义电路试题的外观:I/O接口的规格1.USE 定义区2PACKAGE 定义区3.ENTITY定义区4.ARCHITECTURE 定义区Compenent 定义区信号定义Date Flow 描述Behavior Process 描述Structure 描述CONFIGURATION 定义区定义元件库定义使用了那些自元件库描述电路内部的功能,说明电路执行什么动作或功能。 VHDL 程序结构图2.3.1 算术运算单元的Entity定义首先,根据算数单元的功能需求,定义输出、输入端口的接口规格如下:表1 算术运算的输出输入端口接口规格信号名称信号模式位数数据类型A输入数值18UNSIGNEDB输入数值28UNSIGNEDCin输入:从前级来的进位1STD_LOGICBCDout输出:运算结果A+B8STD_LOGIC_VECTORCout输出:运算后产生的进位1STD_LOGIC表中A和B的数据类型被没定成unsigned,而不用ST std_logic_vector 或integer,那是因为ALU是算术逻辑单元,A和B数据,除了执行算术运算之外,也可能在逻辑单元中执行逻辑运算,所以必须定义成unsigned的类型,否则在编写architecture程序时,将会造成数据类型不符的错误情况发生。 有了上述的规格作为依据,便可进行VHDL程序中的Entity定义:ENTITY adder IS PORT ( A: IN UNSIGNED(7 DOWNTO 0);B: IN UNSIGNED(7 DOWNTO 0); CIN:IN STD_LOGIC;BCDOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COUT:OUT STD_LOGIC);END adder;2.3.2 算术单元的Architecture描述 解决了Entity定义,接下来就是Architecture描述。如果设计者已经有该电路的流程图或真值表,使可采用“行为性描述法”来完成Architecture的结果;如果拥有该电路的布尔方程式或算数方程式,便可使用“数据流(Data Flow)描述法”来完成Architecture的结构。若两种数据都有时,就看设计者的偏好或考虑将来电路维护上的方便性来决定采用何种描述法。在这里,因为是做运算处理,当然处理的对象一定是算数式或布尔方程式,因此使用数据流描述法应较为快速方便。当然,VHDL程序中允许使用个同的描述法来描述电路的Architecture,因此同个电路中可以视需要而使用不同的描述法。2.4逻辑运算单元的设计逻辑运算和数值运算使用不同的数据类型,执行的运算为布尔代数运算,虽然布尔代数运算的种类众多,但是任何的逻辑运算都可以经由AND,OR,NOT和XOR来完成。所以本范例的规划也是以这四种逻辑运算(如下表所示)为主表2 逻辑运算表功能选择S2 S1 S0输出执行动作1 0 0 F=A&BAND1 0 1 F=A|BOR1 1 0 F=ABXOR1 1 1 F=-A NOT2.4.1 完成Entity定义同样的必领先根据逻辑单元的功能需求,定义其电路接口的规格,如下表所示:表3 逻辑运算的电路接口规格信号名称信号模式位数数据类型A输入数值18UNSIGNEDB输入数值28UNSIGNEDBCDout输出:运算结果8STD_LOGIC_VECTOR和算术运算不同的是,逻辑运算没有Cin和Cout。但是因为算术运算和逻绢运算使用同一组输入信号A、B,所以A和B仍然要设定成UNSIGNED。因此Entity的定义可以直接套用算术运算的定义,只是其中的进位不使用罢了。2.4.2 Architecture描述 至于Architecture描述,因为是逻辑运算,使用的是布尔代数和标推逻辑门,在VHDL内部的数据库中已经建立完成,所以直接采取数据流描述法来完成心Architecture的结果最为方便,也就是说,可以直接利用“W=X and Y”来直接执行与门的逻辑运算。不过要注意,上式中的W、X和Y都必须是个位,以执行与逻辑运算为例,如果要将A和B这两个四位的数做与门运算,必须先将其分解成个个独立的位运算,最后再运用合并符号“”将独立的四个位合并成一组输出信号,得到最后的结果。其做法如下:Y(7)=A(7) AND B(7); -将A的第八个位再和B的第八个位独立运算的Y(7)Y(6)=A(6) AND B(6); -将A的第七个位再和B的第七个位独立运算的Y(6)Y(5)=A(5) AND B(5); -将A的第六个位再和B的第六个位独立运算的Y(5)Y(4)=A(4) AND B(4); -将A的第五个位再和B的第五个位独立运算的Y(4)Y(3)=A(3) AND B(3); -将A的第四个位再和B的第四个位独立运算的Y(3)Y(2)=A(2) AND B(2); -将A的第三个位再和B的第三个位独立运算的Y(2)Y(1)=A(1) AND B(1); -将A的第二个位再和B的第二个位独立运算的Y(1)Y(0)=A(0) AND B(0); -将A的第一个位再和B的第一个位独立运算的Y(0)BCDOUT F(0)=A(0) XOR B(0) XOR CIN; C(0)=(A(0) AND B(0) OR (B(0) AND CIN) OR (A(0) AND CIN); GEN: FOR I IN 1 TO 7 LOOP F(I)=A(I) XOR B(I) XOR C(I-1); C(I)=(C(I-1) AND A(I) OR (C(I-1) AND B(I) OR (A(I) AND B(I);END LOOP; BCDOUT=F(7) & F(6) & F(5) & F(4) & F(3) & F(2) & F(1) & F(0);-合并F COUT F(0)=A(0) XOR B(0) XOR CIN; C(0)=(CIN AND NOT A(0) OR (CIN AND B(0) OR (NOT A(0) AND B(0); GEN2: FOR I IN TO 7 LOOP F(I)=A(I) XOR B(I) XOR C(I-1); C(I)=(C(I-1) AND NOT A(I) OR (C(I-1) AND B(I) OR (NOT A(I) AND B(I); END LOOP; BCDOUT= F(7) & F(6) & F(5) & F(4) & F(3) & F(2) & F(1) & F(0); COUT IF CIN=0 THEN BCDOUT =A(7) & A(6)& A(5)& A(4)& A(3)& A(2)& A(1)& A(0); ELSE BCDOUT =A+1; END IF; COUT IF CIN=0 THEN BCDOUT =A(7) & A(6)& A(5)& A(4)& A(3)& A(2)& A(1)& A(0);ELSE BCDOUT =A-1; END IF; COUT F(7)=A(7) AND B(3); F(6)=A(6) AND B(6); F(5)=A(5) AND B(5); F(4)=A(4) AND B(4); F(3)=A(3) AND B(3); F(2)=A(2) AND B(2); F(1)=A(1) AND B(1); F(0)=A(0) AND B(0); BCDOUT F(7)=A(7) AND B(3); F(6)=A(6) OR B(6);F(5)=A(5) OR B(5);F(4)=A(4) OR B(4);F(3)=A(3) OR B(3);F(2)=A(2) OR B(2);F(1)=A(1) OR B(1);F(0)=A(0) OR B(0);BCDOUT F(7)=A(7) XOR B(3); F(6)=A(6) XOR B(6); F(5)=A(5) XOR B(5); F(4)=A(4) XOR B(4); F(3)=A(3) XOR B(3); F(2)=A(2) XOR B(2); F(1)=A(1) XOR B(1); F(0)=A(0) XOR B(0); BCDOUT F(7)=NOT A(7);F(6)=NOT A(6); F(5)=NOT A(5); F(4)=NOT A(4); F(3)=NOT A(3); F(2)=NOT A(2); F(1)=NOT A(1); F(0)=NOT A(0); BCDOUT BCDOUT = “00000000”; COUT=0;END CASE;END PROCESS;END ARCH;2.7编译结果采用Max+plus对上述源程序代码进行编译,得到以下结果:图4 编译结果与分析生成alu.vhd、alu.hif、alu.acf等文件3. ALU 仿真本文中八位ALU的VHDL设计的仿真结果波形输出如下:图5 仿真结果波形4. 结束语随着EDA技术的发展,可编程逻辑器件FPGA和VHDL语言在硬件电路设计中,越来越显示出其优越性,本设计即是一个很好的验证。通过实际的应用和日常的实验中的使用,该ALU系统体现出了良好的稳定性,在速度上也能很好的满足系统的要求。 本文先对ALU的整体结构进行分析,从整体结构图中,把AlU的设计化为两个模块,即控制与逻辑运算电路模块和加减法电路模块。再对ALU的设计分为两部分,即算术单元部分和逻辑单元部分,对于算术单元和逻辑单元,都是先从功能上分析出各自的实体Entity,算术单元的功能有加法、减法、带进位加、带进位减、加1、减1、传送,逻辑单元的功能有与、或、非、异或等操作。然后再进行Architecture描述,通过完成这些结果,就开始使用VHDL语言来对每个单元功能进行描述了,然后再对两部分的VHDL语言描述进行合并,这样源程序代码就完成了,再用前面介绍过的软件MAX+plus 及Quartus对源程序代码进行编译连接,然后对其进行功能仿真,并且对仿真结果分析是否符合要求,通过对分析,本文的仿真结果基本完成了要求的功能。参考文献1康华光电子技术基础数学部分M北京:高等教育出版社,19942潘松,王国栋VHDL实用教程M成都:电子科技大学出版社,20023卢毅,赖杰V
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 股东协议终止后公司注销代理协议
- 餐饮店员工培训与薪酬体系协议
- 物业联合服务协议书范本
- 婚前财物退还协议书范本
- 智慧城市核心区厂房转租及智能化改造合同
- 烧烤美食城整体租赁及经营管理协议
- 【课件】密度的应用.-2024-2025学年八年级物理人教版(2024)上册
- 茶饮制作培训
- 2024年高尔夫项目建议书
- 机加工工件全流程管理
- 《教学管理经验分享》课件
- 企业国际化人才绩效考核体系优化研究
- 第14课 古代丝路与工艺美术交流 课件-2024-2025学年高中美术鲁美版美术鉴赏
- 中医护理技术-平衡火罐
- 上海宝山区公开招聘社区工作者考试高频题库带答案2025年
- 体育经纪人资格考试复习资料
- 2025年英语四级考试试卷及答案
- 中国丝绸文化课件
- 学科融合在初中音乐教学中的实践研究
- 《分子间作用力理论》课件
- 2025春季学期国开电大本科《管理英语3》一平台在线形考综合测试形考任务试题及答案
评论
0/150
提交评论