基于ALU的八位数的加减运算和四位数的乘法和除法的运算.docx
- 文档编号:23701268
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:26
- 大小:376.44KB
基于ALU的八位数的加减运算和四位数的乘法和除法的运算.docx
《基于ALU的八位数的加减运算和四位数的乘法和除法的运算.docx》由会员分享,可在线阅读,更多相关《基于ALU的八位数的加减运算和四位数的乘法和除法的运算.docx(26页珍藏版)》请在冰豆网上搜索。
基于ALU的八位数的加减运算和四位数的乘法和除法的运算
摘要
随着半导体技术和系统设计技术的发展,传统单片机由于其尺寸小、功耗低、一些专有特性已经难以满足一些场合的需要。
基于EDA软件的设计方式是借助于计算机来快速准确的完成电路的设计。
设计者提出方案后,利用计算机进行逻辑分析、性能分析、时序测试,如果发现错误或方案不理想,可以重复上述过程直至得到满意的电路,然后进行硬件电路的实现。
这种方法提高了设计质量,缩短了设计周期节省了设计费用,提高了产品的竞争力。
本文对CPU中的ALU的设计,能够完成带进位的八位数的加减运算和四位数的乘法和除法的运算。
在寄存器模块中集成了构成数据路径的所有寄存器和多路选择器,这些多路选择器受控制信号的控制,构成了数据路径中的数据传输部分。
在具体设计时用HLD语言来完成所希望的电路系统,并规定器件的结构特征和电路的行为方式,然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。
关键词:
ALUHLDFPGAEDA
Abstract
Withthedevelopmentofthesemiconductortechnologyandsystemdesigntechnology,ithasbeendifficulttomeettheneedsofanumberofoccasionsbecauseofthetraditionalsinglechips’smallsize,lowpowerconsumptionandanumberofproprietaryfeatures.Basedon EDAsoftware,thedesignusescomputertocompletethecircuitquicklyandaccurately.Aftermakingaproposal,theDesignersdologicanalysis,performanceanalysisandtimingtest,iftheyfindanerrororiftheprogramisnotsatisfactory,theyrepeattheprocessuntilitbecomeasatisfactorycircuitandthenimplementthehardwarecircuit .Thisapproachimprovesdesignqualityandshortenthedesigncycle,savesdesigncostsandimprovesproductcompetitiveness.
Inthispaper,thedesignofALUfortheCPUcancompletetheeight-bitnumberwithcarrybitintoadditionandsubtractionoperationsandfour-digitnumberintomultiplicationanddivisionoperations.Registermoduleintegratesallregistersandmultiplexersthatconstitutethedataway.Thesemultiplexersundercontrolofthecontrolsignalsconstitutethedatatransmissionpartofdataway. Inspecificdesign,itcompletestheexpectedelectricalsystemswithHLDlanguageandprovidesthestructuralcharacteristicsofthedeviceandcircuitbehavior.ThenwiththisintegrateddeviceandtheadapterprogramtheprogramiscompiledintoFPGAandCPLDtocontroltheinternalstructureandlogicfunctionstoachievethecorrespondinggate-levelorlower-levelstructuralnetlistfilesordownloadingfiles
Keywords:
ArithmeticLogicUnitFieldProgrammableGateArray
1、绪论
21世纪人类将全面进入信息化社会,对微电子信息技术和微电子VLSI基础技术将不断提出更高的发展要求,微电子技术仍将继续是21世纪若干年代中最为重要的和最有活力的高科技领域之一。
而集成电路(IC)技术在微电子领域中占有重要的地位。
且伴随着IC技术的发展,电子设计自动化(ElectronicDesignAutomation,EDA)已经逐
渐成为重要的设计手段,其广泛应用于模拟与数字电路系统等许多领域。
1.1EDA技术发展概况
电子设计自动化(EDA,ElectronicDesignAutomation)是指利用计算机完成电子系统的设计。
EDA技术是以计算机和微电子技术为先导,汇集了计算机图形学、拓扑逻辑学、微电子工艺与结构学和计算数学等多种计算机应用学科最新成果的先进技术。
EDA技术以计算机为工具,代替人完成数字系统的逻辑综合、布局布线和设计仿真等工作。
设计人员只需要完成对系统功能的描述,就可以由计算机软件进行处理,得到设计结果,而且修改设计如同修改软件一样方便,可以极大地提高设计效率。
根据电子设计技术的发展特征,EDA技术发展大致分为三个阶段。
1.1.1CAD阶段
第一阶段的特点是一些单独的工具软件,主要有PCB布线设计、电路模拟、逻辑模拟及版图的绘制等,通过计算机的使用,从而将设计人员从大量烦琐重复的计算和绘图工作中解脱出来。
这个时期的EDA一般称为CAD。
1.1.2CAE阶段
这个阶段在集成电路与电子设计方法学以及设计工具集成化方面取得了许多成果,各种设计工具,如原理图输入、编译与连接、逻辑模拟、测试码生成、版图自动布局以及各种单元库已齐全。
由于采用了统一数据管理技术,因而能够将各个工具集成为一个CAE系统。
按照设计方法学制定的设计流程,可以实现从设计输入到版图输出的全程设计自动化。
这个阶段主要采用基于单元库的半定制设计方法,采用门阵列和标准单元设计的各种ASIC得到了极大的发展,将集成电路工业推入了ASIC时代。
1.1.3EDA阶段
20世纪90年代以来,微电子技术以惊人的速度发展,其工艺水平达到了深亚微米级,在一个芯片上可集成数百万乃至上千万只晶体管,工作速度可达到GHz,这为制造出规模更大,速度更快和信息容量很大的芯片系统提供了条件,但同时也对EDA系统提出了更高的要求,并促进了EDA技术的发展。
此阶段主要出现了以高级语言描述、系统仿真和综合技术为特征的第三代EDA技术,不仅极大地提高了系统的设计效率,而且使设计人员摆脱了大量的辅助性及基础性工作,将精力集中于创造性的方案与概念的构思上,下面简单介绍这个阶段EDA技术的主要特征:
(1)高层综合(HLS)的理论与方法取得较大进展,将EDA设计层次由RT级提高到了系统级,并划分为逻辑综合和测试综合。
(2)采用硬件描述语言HDL来描述10万门以上的设计,并形成了VHDL和VerilogHDL两种标准硬件描述语言。
它们均支持不同层次的描述,使得IC的描述规范化,便于传递、交流、保存与修改,重复使用,多应用于FPGA/CPLD/EPLD的设计中。
(3)可测性综合设计。
(4)为带有嵌入IP模块的ASIC设计提供软硬件协同系统设计工具。
协同验证弥补
了硬件设计和软件设计流程之间的空隙,保证了软硬件之间的同步协调工作。
(5)建立并行设计工程CE框架结构的集成化设计环境,以适应当今ASIC的如下一些特点:
数字与模拟电路并存,硬件与软件设计并存,产品上市速度要快。
1.2PLD发展概况
当今社会是数字化社会,数字电路应用非常广泛,其发展从电子管、晶体管、小规
模集成电路SSI、MSI、LSI、VLSI到超大规模集成电路ULSI和超位集成电路GSI,其规模几乎平均每1-2年翻一番。
集成电路的发展大大促进了EDA的发展,先进的EDA已从传统的“自下而上”的设计方法改变为“自上而下”的设计方法。
现应用最广泛的PLD主要是现场可编程门阵列FPGA、复杂可编程逻辑期间CPLD和可擦除可编程逻辑器件EPLD。
EPLD、CPLD和FPGA在内的复杂PLD迅速发展起来,并向着高密度、高速度、低功耗以及结构体系更灵活、适用范围更宽广的方向发展。
可擦除可编程逻辑器件EPLD是20世纪80年代中期Altera公司推出的基于UVEPROM
和CMOS技术的PLD,后来发展到采用E2CMOS工艺制作的PLD。
EPLD基本逻辑单元是宏
单元。
宏单元由可编程的与或阵列、可编程寄存器和可编程I/O三部分组成。
复杂可编程逻辑器件CPLD是20世纪80年代末Lattice公司提出的在线可编(ISP技术以后于20世纪90年代初出现的。
CPLD是在EPLD的基础上发展起来的,采用CMOS工艺制作,与EPLD相比,增加了内部连线,对逻辑宏单元和I/O单元也有重大的改进CPLD包含三种结构:
可编程逻辑宏单元、可编程I/O单元和可编程内部连线。
现场可编程门阵列FPGA器件是Xilinx公司1985年首家推出的,它是一种新型的高
密度PLD,采用CMOS-SRAM工艺制作。
FPGA的结构与门阵列PLD不同,其内部由许多独
立的可编程逻辑模块(CLB)组成,逻辑块之间可以灵活地相互连接。
FPGA的结构一般分
为三部分:
可编程逻辑块、可编程I/O模块和可编程内部连线。
1.3课题研究的内容
1.3.1设计背景介绍
算术逻辑单元(ArithmeticLogicUnit,ALU)是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分,由"AndGate"和"OrGate"构成的算术逻辑单元,主要功能是进行二进制的算术运算,如加减乘。
所有现代CPU体系结构中,二进制都以补数的形式来表示。
此算术逻辑单元能构完成带进位的八位数的加减运算和四位数的乘法和除法的运算。
本文介绍带进位的ALU设计,用VerilogHDL语言编写,并可以在FPGA上实现。
整个ALU由6个模块组成:
加/减法器、乘法器、除法器、十进制调整器、逻辑运算器以及一个多路选择器。
其中加/减法器又可以分成两个子模块。
算术逻辑单元ALU执行处理器中所有的整数运算指令。
在实际的ALU设计中,考虑到所有的整数运算指令。
除了要算出结果,还要设置许多标志位,如溢出标志,进位标志等。
根据指令的类型和总体任务的实现,我把ALU块划分为逻辑和比较指令模块、加减法模块、乘法块、除法块和alu控制块,ALU模块内部的结构图如下所示:
图1-1ALU的结构图
1.3.2功能要求
本系统为算术逻辑单元,整个系统的原理框图如上图所示,此逻辑单元由5位操作码OP,一位的进位位输入,2个8位的数据输入,一个进位输出和一个八位的数据输出组成。
ALU单元可以根据操作编码的不同进行,八位数据的加减,和四位数据的乘除,以及逻辑运算。
其中C_in为进位输入,因此ALU还可以进行,带进位的八位加减运算,当产生进位位时,进位位置入ALU_C中。
Op[4:
0]ALU_C
C_in
Ac_in[7:
0]
ALU_O[7:
0]
Gr_in[7:
0]
图1-2系统原理方框图
2、EDA技术的基础知识
2.1可编程ASIC器件
近年来为适应专用Cl设计需求而迅速发展起来的大规模可编程逻辑器件主要包括复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)两大类。
这两类器件通常被称为可编程ASIC,与其它两种ASCI相比不同之处在于它具有用户可编程特性,而且可进行逻辑门级编程。
采用可编程AsIC,对干半导体制造厂家来说可按照一定的规格以通用器件大量生产,对于用户来说可按通用器件从市场上选购,再由用户通过自己编程实现ASCI的要求。
CPLD和FPGA构成了可编程专用集成电路的两大主要分支器件。
1.CLPD
从结构上,复杂可编程逻辑器件(CPLD)其内部主要由输出逻辑宏单元(oLMc,oPututLogi。
Macorec)ll、可编程的与或阵列、可编程互连矩阵单元以及1/0单元组成。
由于CPLD内部采用固定长度的金属线进行各逻辑块的互连,所以设计的逻辑电路不仅信号传递快,而且布线延迟固定,可以预测,避免了分段式互连结构时序不完全预测的缺点,但其逻辑门密度较小。
九十年代以来,CPLD的发展已越来越迅速,不仅具有电擦除特性,而且出现了边缘扫描及在线可编程等高级特性。
具有代表性的产品有Xliinx公司的EPLDXC9500系列、Altera公司的CPLDMAX7000系列及Lattiee公司的ISPLSI用LSll000和2000系列等CPLD。
1992年Lattiee公司率先推出了在系统编程技术(Isp,InSystemprogrnunabaility),IsP指采用直接或间接方式,对电子系统中的PLD器件进行编程或改写,也可以实现对整个系统的功能进行重构。
2.FPGA
FPGA具有类似门阵列或类似ASIC的结构,既有门阵列的高逻辑密度和通用性,又有可编程逻辑器件的用户可编程特性。
它通常包含三类可编程资源:
可编程逻辑功能块,可编程FO块和可编程互连网络。
可编程逻辑功能块是实现用户功能的基本单元,它们通常排列成一个阵列,散布于整个芯片;可编程UO块完成芯片上逻辑与外部封装引脚的接口,常围绕着阵列排列于芯片四周;可编程内部网络互连包括各种长度的连线线段和一些可编程连接开关,它们将各个可编程逻辑块或FO块连接起来,构成特定功能的电路。
不同厂家生产的FPGA在可编程逻辑块的规模、内部互连线的结构和采用的可编程元件上存在较大的差异,因而实现逻辑功能的能力也不同。
较常用的有Xliinx、Ahera和Actel公司的FPGA。
其中xliinx公司和Altera公司的FPGA是基于SRAM技术的,可重复编程,断电后信息将会丢失;而Actel公司的FPGA是基于熔丝技术,一次性编程,
断电后信息不会丢失。
总的来说FPGA具有布线灵活,可用逻辑门数多,布线延迟不可预测的特点。
2.2EDA设计工具
在一般的设计开发中,不同的电路设计方案对硬件的需求应该与所选用的FPGA器件的内部结构特点相匹配,使系统性能达到最佳。
而在做本实验是主要运用的软件主要是QuartusII6.0、Explorer99SE等相互协同完成。
在实际完成设计时,在EDA环境下借助计算机能快速准确的完成电路的设计,提高设计质量,缩短设计周期,节省设计费用,可以提高产品的市场竞争力。
因此为用户提供了便利,成为了设计者不可缺少的有力工具。
3、总体方案设计
3.1设计内容
设计一个算术逻辑单元,此逻辑单元由5位操作码OP,一位的进位位输入,2个8位的数据输入,一个进位输出和一个八位的数据输出组成。
ALU单元根据操作编码的不同进行,八位数据的加减,和四位数据的乘除,以及逻辑运算。
其中C_in为进位输入,因此ALU还可以进行,带进位八位加减运算,当产生进位位时,进位位置入ALU_C中。
3.2设计方案比较
方案一:
由下图3-1可以看出其组成结构较为复杂,用两个38译码器,将输入的3位转换为相应的数据输入单片机进行相应的计算,再通过8位LED灯显示输出。
采用标准的8051设计ALU结构框图如下图所示。
图3-1由单片机构成的ALU结构
方案二:
基于FPGA的ALU设计。
可以很好的通过编程设计多位加、减、乘、除等,硬件电路简单,对应的HDL语言较容易实现。
在实际的工程应用中,使用简单易行并且稳定的EDA设计比较适合。
通过按键输入,再由编程实现内部算法,通过LED可输出直观的看到输出的结果。
其构成框图如下图3-2所示:
图3-2由FPGA构成的ALU
3.3方案论证
由以上两个方案图可知:
用单片机实现ALU,单片机资源有限特别是输入输出管脚,外部扩展电路较多,整体电路复杂。
在单片机实现算法分析上,其程序设计较为困难,系统不够稳定,功耗较大。
用FPGA设计ALU。
FPGA管脚资源,外围电路简单,功耗较小,系统稳定。
在HDL编程实现内部算法上较为容易,移植性强,维护容易。
此外其先进的开发工具使整个系统的设计调试周期大大缩短,一般来讲,同样的逻辑,基于FPGA要比基于单片机要快很多,因为它们工作的原理是完全不同的。
单片机是基于指令工作的,同样的激励到达单片机后,单片机首先要判断,然后读取相应的指令,最后作出相应,这每一步都是需要在单片机的时钟驱动下一步步的进行。
而基于FPGA则是把相应的逻辑“暂时”固化为硬件电路了,它对激励作出的响应速度就是电信号从FPGA的一个管脚传播另一个管脚的传播速度,当然这指的是异步逻辑,同时电信号也要在芯片内进行一些栅电容的充放电动作,但这些动作都是非常非常快的。
3.4方案选择
在现在ALU设计的功能提出了更高的要求,尤其在现代SOC技术的引领下,人们对低故障、高实时、高可靠、高稳定的性能更加青睐。
考虑到整体电路简单、系统稳定且功耗小的基础上,结合本设计的要求及综合以上比较的情况,我们选择了基于FPGA的ALU设计方案。
4、单元模块设计
本设计由现场可编程门矩阵(FPGA)作为控制芯片,通过VreilogHDL硬件描述语言设计,运用自顶而下的设计思想,按功能逐层分割实现层次化的设计。
总体设计方案为通过VreilogHDL硬件描述语言,将个个状态及状态之间的转换用程序语言描述出来,再由FPGA芯片调试后实现。
下面介绍主要模块的功能及作用。
4.1有源晶振电路
采用有源晶振作为时钟信号源,它是一个完整的振荡器,内部除了石英晶体外还有阻容软件和晶体管,有源晶振信号质量好,比较稳定,而且连接方式比较简单。
本设计所用的为20MHZ的晶振,而20MHz以下的晶体晶振基本上都是基频的器件,稳定度好,20MHz以上的大多是谐波的,稳定度差,因此我们使选用频的器件,毕竟倍频用的PLL电路需要的周边配置主要是电容、电阻、电感,其稳定度和价格方面远远好于晶体晶振器件。
图4-1有源晶振电路
4.2供电电路
本设计用到了三个电源,第一是+5V的电源,用于为上拉电阻提供电压;第二是+3.3V电源,用于为FPGA芯片提供工作电压;第三是+2.5V电源,用于为FPGA芯片内核工作提供电压。
在FPGA芯片管脚上,+2.5V电源必须接在内核电源输入端(VCCINT)上,而VCCIO是芯片输入输出引脚工作电源,根据输入输出的设备不同,可以接2.5V、3.3V或5.0V。
注意的是EPC1PC8的工作电压必须为3.3V,具有可擦写的功能。
图4-2供电电路
4.3按键输入电路
图4-3键盘输入
4.4LED状态灯输出电路
图4-4LED灯输出电路
8个LED灯模拟8位数字输出结果,亮为1,灭为0。
4.5最小系统
图4-5电路原理图
本设计的电路实现是基于FPGA最小系统原理图,再配以所需的外设。
最小系统设计包含了时钟产生电路模块、程序下载配置电路模块、电源电路模块,通过连线将各个模块进行连接成最小系统。
由于本设计电路比较简单,外设比较少,使用到的四个独立键盘,模拟实现信号输入,六个LED灯模拟实现信号状态指示。
我们队外设也作了扩展准备,将FPGA芯片的IO引脚进行了插针引出,以方便后续电路的扩展。
5、软件实现
通过至顶向下(TOP--DOWN)的设计方法,对实验所需要的电源电路、供电电路、配置电路、键盘输入电路、LED显示输出电路的设计与检验。
对ALU电路的两个输入AC_in和GR_in,分别用OP位来控制逻辑运算单元所要执行的运算指令。
再检查运算结果是否正确,对比实际结果和运算输出结果,综合上述设计思想和方法进行一下软件设计。
5.1软件设计
设计程序如下:
moduleALU(ALU_O,ALU_C,C_in,op,AC_in,GR_in);
outputALU_C;//进位位输出
output[7:
0]ALU_O;
inputC_in;//进位位输入
input[4:
0]op;//操作方式选择码
input[7:
0]AC_in;
input[7:
0]GR_in;
reg[7:
0]ALU_O;
regALU_C;
always@(C_inoroporAC_inorGR_in)
begin
case(op)
5'b00011:
begin{ALU_C,ALU_O}={C_in,AC_in};end
5'b00100:
begin{ALU_C,ALU_O}={C_in,GR_in};end//如果操作译码为5’b00100则完成RI->AC直移
5'b00111:
begin{ALU_C,ALU_O}=AC_in+GR_in;end//如果操作译码为了5‘b00111则进行八位数相加
5'b01000:
begin{ALU_C,ALU_O}=AC_in-GR_in;end//如果操作编码为了5‘b01000则八位数相减
5'b01011:
begin{ALU_C,ALU_O}=AC_in+GR_in+C_in;end//如果操作译码为了5‘b01011则进行带进位八位数相加
5'b01100:
begin{ALU_C,ALU_O}=AC_in-GR_in-C_in;end//如果操作译码为了5‘b01100则进行带借位八位数相减
5'b01111:
begin{ALU_C,ALU_O}={C_in,~GR_in};end//如果操作编码为5’b01111则进行取反操作
5'b10000:
begin{ALU_O,ALU_C}={C_in,GR_in};end//如果操作码为5’b10000则完成SHCRAC,RI
5'b10001:
begin{ALU_C,ALU_O}={GR_in,C_in};end//如果操作码为5’b10001则完成SHCLAC,RI
5'b11100:
begin{ALU_C,ALU_O}={C_in,mul(AC_in[3:
0],GR_in[3:
0])};end
//如果操作译码为5’b11100则完成四位数相乘
5'b11101:
begin{ALU_C,ALU_O}={C_in,div(AC_in[7:
0],GR_in[7:
0])};end//如果操作译码为5’b11101则完成四位数相除
default:
begin{ALU_C,ALU_O}={C_in,ALU_O};end
endcase
end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ALU 八位数 加减 运算 位数 乘法 除法
![提示](https://static.bdocx.com/images/bang_tan.gif)