EDA课程设计--ALU设计_第1页
EDA课程设计--ALU设计_第2页
EDA课程设计--ALU设计_第3页
EDA课程设计--ALU设计_第4页
EDA课程设计--ALU设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课课 程程 设设 计计 说说 明明 书书课程名称:课程名称:EDA 课程技术设计题题 目:目:ALU 设计学学 院:院:电气信息学院专专 业:业:测控技术与仪器年年 级:级: 学学 生:生: 学学 号:号: 指导教师:指导教师: 完成日期:完成日期:1.EDA 技术和设计题目简介.11.1EDA 技术简介.11.2设计题目简介.12.总体方案设计与实现工具.22.1ALU 原理分析.22.2用 FPGA 实现 ALU 的设计.22.3VERILOGHDL 开发语言简介.33.ALU 的各模块的具体设计.43.1译码与控制分配模块ALUMUX的实现.43.2逻辑运算模块ALUCORE的实现.43

2、.3加减模块ADDSUB的实现.63.4乘法模块MUL的实现.73.5除法模块DIV的实现.93.6各各模块的组合.154系统仿真与调试.154.1仿真环境介绍.155总结与体会.205.1设计的体会.205.2设计的不足和改进措施.205.3致谢.20参考文献.21附录:.22IEDA 技术课程设计技术课程设计摘摘 要:要:本次设计采用的是 EDA 技术设计一个算术逻辑单元 ALU。本设计主要完成 ALU 整体设计,设计分为两个模块:算术运算模块和逻辑运算模块。算术运算模块包括带进位的八位数的加减和四位数的乘除法运算,逻辑运算模块包括左移与右移。本设计使用 VerilogHDL 语言编写,并

3、可以在 FPGA 上实现。Quartus II 来进行仿真和调试。关键词关键词: : EDA 技术,ALU,VerilogHDL 语言,FPGAAbstract:This design is adopted to design a EDA arithmetic logic unit (ALU). The design of the main design, the design of the ALU is divided into two modules: arithmetic and logical operations module. With binary arithmetic modu

4、les including eight digit deductions and four digits, the method of computing, logic operation modules including left and right. This design USES VerilogHDL language, and can be realized on FPGA. Simulation and Quartus II to debugKeywords:EDA technology, ALU, VerilogHDL language, FPGA11.1. EDAEDA 技术

5、和设计题目简介技术和设计题目简介1.1 1.1 EDAEDA 技术简介技术简介EDA 是电子设计自动化(Electron Design Automation)的缩写,是在 20 世纪 90年代初,从 CAD(计算机辅助设计) 、CAM(计算机辅助制造) 、CAT(计算机辅助测试)和 CAE(计算机辅助工程)的概念发展起来的。EDA 技术是在电子 CAD 技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。 利用 EDA 工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机

6、完成,并可以将电子产品从电路设计、性能分析到设计出 IC 版图或 PCB 版图的整个过程的计算机上自动处理完成。现在对 EDA 的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有 EDA 的应用。目前 EDA 技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到 EDA 技术。本文所指的 EDA 技术,主要针对电子电路设计、PCB 设计和 IC 设计。 EDA 设计可分为系统级、电路级和物理实现级。1.2 1.2 设计题目简介设计题目简介算术逻辑单元(Arithmetic

7、 Logic Unit, ALU)是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分,由And Gate 和Or Gate构成的算术逻辑单元,主要功能是进行二进制的算术运算,如加减乘(不包括整数除法)。基本上,在所有现代CPU 体系结构中,二进制都以补数的形式来表示。此算术逻辑单元能构完成带进位的八位数的加减运算和四位数的乘法和除法的运算。本文介绍带进位的 ALU 设计,用VerilogHDL 语言编写,并可以在 FPGA 上实现。22.2. 总体方案设计总体方案设计与实现工具与实现工具通过查阅大量相关技术资料,并结合自己的实际知识,我主要提出了使用 FPGA的方案来实现系统功能

8、。下面我将首先对这这种方案的组成框图和实现原理分别进行说明,然后阐述我最终选择方案的原因。ALUALU 原理分析原理分析根据本实验的设计要求 ALU 具有以下功能:(1) 带进位的加、减、乘、除四则运算。(2) 数据传送、移位、判断和程序转移等功能。由于 ALU 是中央处理器(CPU)的重要组成部分,所以对 ALU 的面积、功耗、指令执行时间和稳定性都有很强的要求,这样就对设计 ALU 器件就有特高的要求。2.2 2.2 用用 FPGAFPGA 实现实现 ALUALU 的设计的设计在现代电子系统中,数字系统所占的比例越来越大。现代电子系统发展的趋势是数字化和集成化,CPLD/FPGA 作为可编

9、程 ASIC 器件,在数字系统设计中发挥着重要的作用。与传统的可编程器件相比,FPGA 采用了类似门阵列的通用结构,规模可以做的较大,可实现的功能更强,设计的灵活性更大。且 FPGA 的容量越来越大,它所提供的门数从几百门到上百万门,可以满足不同的需要。因此用 FPGA 来实现 ALU 的功能不会受到 FPGA 门数的限制。用 FPGA 实现的 ALU 有很多优点:(1) 编程方式简便先进。(2) 高速 FPGA 的时钟延迟可达纳秒级,结合其并行工作方式在超高速应用领域和实时测控方面有非常广阔的应用前景。(3) 高可靠性 表现在几乎可将整个系统下载于同一芯片中从而大大缩小了体积易于管理和屏蔽。

10、(4) 开发工具和设计语言标准化开发周期短。(5) 功能强大应用广阔 FPGA 可供选择范围很大,可根据不同的应用选用不同容量的芯片。利用它们可实现几乎任何形式的数字电路或数字系统的设计。(6) 易学易用开发便捷 FPGA 应用的学习不需太多的预备知识,只要具有通常的数字电路和计算机编程基础知识,就足以在短期内掌握基本的设计方法和开3发技巧。2.3 2.3 VerilogHDLVerilogHDL 开发语言简介开发语言简介Verilog HDL 是一种硬件描述语言(HDL:Hardware Discription Language) ,是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它

11、可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑 功能。 Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建 模语言。此外,Verilog HDL 语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。Verilog HDL 语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用 Verilog 仿真器进行验证。语言从 C 编程语言中继承了多种操作符和结构。Veril

12、og HDL 提供了扩展的建模能力,其中许多扩展最初很难理解。但是,Verilog HDL 语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。Verilog HDL 和 VHDL 是目前世界上最流行的两种硬件描述语言,都是在 20 世纪80 年代中期开发出来的。前者由 Gateway Design Automation 公司(该公司于 1989 年被 Cadence 公司收购)开发。两种 HDL 均为 IEEE 标准。43.3. ALUALU 的各模块的具体设计的各模块的具体设计ALU 模块的功能是按照控制模

13、块给出的指令,对来自数据存储器、程序存储器、累加器 ACC 和程序状态字的数据进行算术、逻辑或位运算。ALU 模块可以直接或间接的执行很多指令,如加、减、乘、除等算术运算指令,逻辑与、或、异或等逻辑运算指令以及移位操作指令。ALU 模块执行的指令有很多,除去上述的算术运算、逻辑运算和环移指令外,还包括条件转移指令中的比较条件转移指令 CJNE 和减 1 条件转移指令 DJNZ。这种设计方法主要考虑比较条件转移指令 CJNE 设计上的方便与规范性;而减 1 条件转移指令 DJNZ 的指令操作需要进行减 1 操作,正好可以利用 ALU 模块的相应算术运算来进行,因此可通过 ALU 模块间接实现的;

14、其余的很多指令则由 ALU模块直接实现,这些指令包括算术逻辑运算指令、逻辑运算指令和环移指令。alu 模块共由 5 个子模块组成,分别是译码与控制分配模块 alumux、逻辑运算模块 alucore、加减模块 addsub、乘法模块 mul 和除法模块 div 译码与控制分配模块译码与控制分配模块 alumuxalumux 的实现的实现alumux 模块是 alu 模块的译码与控制分配模块,用于实现对从 control 模块传来的操作代码进行译码和把不同的操作代码分配到不同的子模块进行操作,其实体图如图3-1 所示。alumux 模块的译码部分采用三个进程(Process)语句来实现,在每个进

15、程中通过 CASE语句来实现对输入信号的译码操作。由 control 模块传送给 alumux 子模块的操作代码共有 41 条。其中,每条操作代码都在 control 模块中用常量来加以定义,如对操作代码3.2 逻辑运算模块逻辑运算模块 alucore 的实现的实现alucore 模块主要是实现相应的逻辑运算、移位指令运算及比较指令等相关运算,其实体图如图 3-3 所示:5当指令代码经 alumux 模块译码后若选通了 alucore 模块,并提供相应的操作代码和操作数后,alucore 模块开始进行相应的工作。在 VerilogHDL 语言中,逻辑运算非常容易实现,可以直接利用相应的与(an

16、d)、或(or)、非(not)等语句来实现。如移位逻辑指令的实现如下:5b00011:begin ALU_C,ALU_O=C_in,AC_in;end /如果操作译码为 5b00100 则完成 ALU_C-AC 直移 5b00100: begin ALU_C,ALU_O=C_in,GR_in;end /如果操作译码为 5b00100 则完成 ALU_C-Gr 直移5b10000: begin ALU_O,ALU_C=C_in,GR_in;end /如果操作码为 5b10000 则完成 SHCR AC,RI5b10001: begin ALU_C,ALU_O=GR_in,C_in;end /如果

17、操作码为 5b10001 则完成 SHCL AC,RI5b01111: 6begin ALU_C,ALU_O=C_in,GR_in;end /如果操作编码为 5b01111 则进行取反操作3.3 加减模块加减模块 addsub 的实现的实现addsub 加减法模块主要用来实现 alu 模块算术运算中的加减法运算,由于减法运算的实现也可以转化成加法运算,因此 addsub 模块的实现实质就是加法器的设计,实现后的实体图如图 3-4 所示。其中输入端口 18 个,两个 8 位的操作数端口 opa_i 和opb_i,用于存放加数和被加数;一个状态位 cy_i,即低位的进位输入;另一个输入端为加减法选

18、择信号 addsub_i,高电平时为加法操作,低电平时为减法操作。输出端口11 个,包括 8 位的运算结果输出端口 rslt_o,两位的进位状态标志位 cy_o 和一位溢出状态标志位 ov_o。设计采用组合逻辑设计方法,所以对于设计的关键部分,并行进位的产生相应的有一定的要求,即 VHDL 语言中的进位信号的表示应使用变量(variable),而不能使用信号量(signal)。因此在 VHDL 语言中,可直接按照公式的要求进行编写代码,其结果将由信号 rslt_o 代出 addsub 模块,返回到 alumux 中。代码实现如下:5b00111: begin ALU_C,ALU_O=AC_in

19、+GR_in;end /如果操作译码为了 5b00111 则进行八位数相加 5b01000: begin ALU_C,ALU_O=AC_in-GR_in;end /如果操作编码为了 5b01000 则八位数相减 5b01011: begin ALU_C,ALU_O=AC_in+GR_in+C_in;end /如果操作译码为了 5b01011 则进行带进位八位数相加 7 5b01100: begin ALU_C,ALU_O=AC_in-GR_in-C_in;end /如果操作译码为了 5b01100 则进行带借位八位数相减3.4 3.4 乘法模块乘法模块 mul的实现的实现mul 模块主要实现算

20、术运算中的乘法运算,该模块的设计非常简单,直接利用VerilogHDL 语言中的乘法运算符编写程序进行设计即可,其实体图如图 3-5 所示。mul模块的输入为被乘数 mula 和乘数 mulb,均为 4 位输入,而输出 product_o 为 8 位输出。在 VerilogHDL 的实现中,内部运算的实现仍然是通过变量的是用来实现的,因为内部的移位相加是通过 for 循环语句来实现的。因为是 4 位的乘法器,所以要循环 4 次,且从乘数的最低位开始循环至最高位。每次循环时都要对乘数的对应位进行判断,若乘数的对应位是1 ,则把被乘数与保存中间值的变量值相加,然后再存于变量 v_d 中;若乘数的对

21、应位是0 ,则直接把保存中间值的变量值送入变量 v_d 中。判断结束后,循环中止前,都要把 v_d 中的值放到 v_c 中,并右移一位。依此循环 4 次,则可求出最终乘积, 而乘积的结果由信号 product_o 送回到 alumux 模块。其实现代码如下:5b11100: begin ALU_C,ALU_O=C_in,mul(AC_in3:0,GR_in3:0);end /如果操作译码为 5b11100 则完成四位数相乘function 7:0 mul;/ 四位数移位相乘函数 input 3:0AC_in; input 3:0GR_in; reg 7:0R; reg 7:0temp; 8 r

22、eg 7:0temp2; begin R=0; temp=0; temp2=AC_in; if(GR_in0=1) begin temp=temp2; R=temp2; temp2=temp; end if(GR_in1=1) begin temp=temp2; R=R+(temp21); temp2=temp; end if(GR_in2=1) begin temp=temp2; 9R=R+(temp22); temp2=temp; end if(GR_in3=1) begin temp=temp2; R=R+(temp27); if(temp=GR_in) begin temp3=temp

23、2; R_out7=1b1; temp=temp4-(temp26; if(temp=GR_in) begin temp3=temp2; R_out6=1b1; temp=temp4-(temp25; if(temp=GR_in) begin temp3=temp2; R_out5=1b1; 12 temp=temp4-(temp24; if(temp=GR_in) begin temp3=temp2; R_out4=1b1; temp=temp4-(temp23; if(temp=GR_in) begin 13 temp3=temp2; R_out3=1b1; temp=temp4-(tem

24、p22; if(temp=GR_in) begin temp3=temp2; R_out2=1b1; temp=temp4-(temp21; if(temp=GR_in) begin 14 temp3=temp2; R_out1=1b1; temp=temp4-(temp2=GR_in) begin temp3=temp2; R_out0=1b1; temp=temp4-temp2; temp2=temp3; next=temp; temp4=temp; end temp=next; div=R_out; end endfunction 153.6 3.6 各各模块的组合各各模块的组合下图是一

25、位 ALU 的原理图,即一位的加减法、乘除法和一位的逻辑运算的连接4 4系统系统仿真与调试仿真与调试4.1 4.1 仿真环境介绍仿真环境介绍本设计使用 quartusii 的时序仿真进行波形的仿真测试,仿真步骤如下:1.新建一个 vector Waveform Files2.选择 nodes files3.设定每个输入信号的激励信号4.选择 time 还是 function 仿真(function 仿真还要先执行功能 processing-general functional simulation nestlist)5.时序仿真可以用于分析时间延时,功能仿真只用于验证模块的功能;16完成 AL

26、U_C-AC 直移仿真波形完成 ALU_C-Gr 直移仿真波形17八位数相加的仿真波形八位数相减的仿真波形带进位八位数相加的仿真波形18带进位八位数相减的仿真波形求反指令的仿真波形19左移和右移指令的仿真波形两个四位数移位相乘的仿真波形两个八位数的除的仿真波形205 5总结与体会总结与体会5.1 5.1 设计的体会设计的体会在本次设计中主要是在于 EDA 工具的使用,通过 VerilogHDL 语言完成 ALU 各模块的设计和仿真,成功的完成了此设计。从此设计中我学到了许多,对于一个系统的开发,最初的模块划分是非常重要的。随着系统的复杂度的增大,划分对系统的后续开发显示出越来越大的重要性。随着

27、自顶而下(Top-Down)设计方法的广泛采用,把一个系统划分为几个子模块,然后各个子模块分别设计的方法越来越多的被广大设计者所使用。一个系统模块划分的好坏,模块间接口设计的是合理,将直接影响到整个的系统开发,甚至会决定系统开发的成功与否。此设计中体现了 VerilogHDL 语言的重要性。VerilogHDL 是一种硬件描述语言,它所描述的对象是具体的硬件电路。这就决定了它与普通的程序设计语言有着很大的不同。普通的程序设计语言一般是顺序执行的,而 VeriolgHDL 语言则有较多的并行执行部分。这是由硬件电路的并行性所决定的。作为描述硬件电路的一种设计语言,VerilogHDL 必然要有相

28、应的语句去描述硬件电路的并行性。编程时,思路中要有相应的电路概念,然后按照相应的电路编写程序,这样的程序系统易于综合,优化,最后的综合的电路结果也比较理想。5.2 5.2 设计的不足和改进措施设计的不足和改进措施对本文所涉及的范围来说我所做的工作还是有欠缺的,本文主要是对 ALU 的功能进行软件设计和仿真,而没有通过实际的硬件系统来仿真与验证,如果以后条件允许的话,可以在硬件系统上来进行仿真与验证,使其更适合于实际应用。其次是在仿真波形中还有很的毛刺出现,这是由于在设计的过程中由于竞争冒险导致所致,可以在整个设计的源程序中加入时钟,这样可以消除毛刺带来的影响。5.3 5.3 致谢致谢首先感谢我

29、的导师黄勇老师!黄老师给了我们全方位的支持,包括课程设计的选题、文献资料的收集、整理和论文写作过程的修改等等,特别是在论文的定稿过程中,更是一丝不苟,提出了许多宝贵意见。同时黄老师的治学态度、正直的品质和乐于助人的精神,无时不刻在感染着我,鞭策着我,使我在工作和学习上不断取得进步!其次要深深感谢电气学院的全体老师辛勤培养和教诲!同时感谢我的同学,他们的帮助和相互支持使我的课程设计顺利地完成。21参考文献参考文献1康华光.电子技术基础数字部分(第五版)M 高等教育出版社 2006.012康华光.电子技术基础模拟部分(第五版)M 高等教育出版社 2006.013谢自美.电子线路设计、试验、测试(第

30、三版)M 华中科技大学出版社 2008.014杨志亮.Protel99se 电路原理图设计技术M 西北工业大学出版社 2002.025王彩君/杨睿.数字电路实验M 国防工业出版社 2006.076王建新/姜萍.电子线路实践教程M 科学出版社 2003.097顾德仁/万栋义.脉冲与数字电路M 高等教育出版社 1985.078刘建成.电子线路试验教程M 北京气象出版社 2004 .019李银华.电子线路设计指导M 北京航空航天大学出版社 2005.0610张宪/何宇斌.电子电路制作指导M 化学工业出版社 2006.0122附录:附录:1、+A9.0B9.0ADDER+A8.0B8.0ADDERSE

31、L4.0DATA31.0OUTMUXSEL4.0DATA31.0OUTMUXSEL4.0DATA31.0OUTMUXCINA7.0B7.0LESS_THAN1CINA7.0B7.0LESS_THAN1CINA7.0B7.0LESS_THAN1CINA7.0B7.0LESS_THAN1+A6.0B6.0ADDER+A4.0B4.0ADDER+A7.0B7.0ADDERSEL4.0DATA31.0OUTMUX+A4.0B4.0ADDER+A3.0B3.0ADDERSEL4.0DATA31.0OUTMUX+A1.0B1.0ADDERSEL4.0DATA31.0OUTMUXCINA7.0B7.0LES

32、S_THAN1SEL4.0DATA31.0OUTMUX+A9.0B9.0ADDER+A4.0B4.0ADDER+A4.0B4.0ADDER+A2.0B2.0ADDERSEL4.0DATA31.0OUTMUX+A8.0B8.0ADDER+A5.0B5.0ADDERSEL4.0DATA31.0OUTMUX01SELDATAADATABOUT0MUX21SELDATAADATABOUT0MUX21SELDATAADATABOUT0MUX21SELDATAADATABOUT0MUX21SELDATAADATABOUT0MUX21SELDATAADATABOUT0MUX21SELDATAADATABOU

33、T0MUX21SELDATAADATABOUT0MUX21SELDATAADATABOUT0MUX21SELDATAADATABOUT0MUX21SELDATAADATABOUT0MUX21SELDATAADATABOUT0MUX21SELDATAADATABOUT0MUX21CINA7.0B7.0LESS_THAN1CINA7.0B7.0LESS_THAN1CINA7.0B7.0LESS_THAN1SEL6.0DATA6.0OUTSELECTORSELDATAADATABOUT0MUX21SELDATAADATABOUT0MUX21SELDATAADATABOUT0MUX21IN4.0OUT31.0DECODERMux8_OUTMux0_OUTMux6_OUTMux5_OUTMux4_OUTMux3_OUTMux2_OUTMux1_OUTMux7_OUTWideOr0_OUT0Decoder0_OUTC_inAdd18 h00 -op4.0GR_in7.0AC_in7.0Mux032 h30039998 -LessThan7LessThan34 h0 -LessThan16 h00 -Le

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论