版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE11组成原理实验报告姓名学号陈宝可07055004刘睿07055013林建财07055040指导老师:姜欣宁2010年4月22日一、总体设计思想1.1CPU简介CPU是计算机的核心,其重要性好比大脑对于人一样,它负责处理、运算计算机内部的所有数据。CPU的种类决定了操作系统和相应的软件。CPU主要由运算器、控制器、寄存器组和内部总线等构成,是PC的核心,再配上储存器、输入/输出接口和系统总线组成为完整的PC(个人电脑)。单周期CPU的特点是每条指令的执行只需要一个时钟周期,一条指令执行完再执行下一条指令。再这一个周期中,完成更新地址,取指,解码,执行,内存操作以及寄存器操作。由于每个时钟上升沿时更新地址,因此要在上升沿到来之前完成所有运算,而这所有的运算除可以利用一个下降沿外,只能通过组合逻辑解决。这给寄存器和存储器RAM的制作带来了些许难度。且因为每个时钟周期的时间长短必须统一,因此在确定时钟周期的时间长度时,要依照最长延迟的指令时间来定,这也限制了它的执行效率。下图是cpu设计的思路:1.2系统主要框架第一台电子计算机与1946年2月14日诞生至今,计算机的发展迅速,经历了电子管,晶体管管,集成电路,大规模集成电路,超大规模集成电路的时代,现在集成电路的设计已经接近极限,不过在发展历程中,计算机的核心框架并没有太多的改变,仍然是由五大部件组成:存储器、运算器、控制器、I/O设备。设计过程中主要以CPU(运算器+控制器)为中心。如图是计算机组成原理图: CPU的功能: 设计的cpu主要是由ALU(运算器)和CU(控制器)两个核心部件构成,另外设计一些辅助器件。ALU处理整个计算机的计算,设计的ALU只能进行简单的算术运算,并不能够实现很强大的计算功能,CU是整个计算机的控制部分,它能够接收外界的响应,并控制计算机的其他部件完成特定的功能,CU和ALU共同组成cpu的核心部件,处理整个计算机的事件。CPU开发的进程:设计初始时,成员讨论cpu所能实现的功能,cpu的组成部分,所需要的开发工具、语言、平台、参考资料等,明确了设计思想后,小组进行明确的分工,现在设计过程已经从最初的讨论进入初步的实践,小组成员正按照各自的分工进行cpu的设计开发。设计成员的分工:本小组由三名成员,林建财主要完成设计思路提出和最终的整合,陈宝可主要完成各个模块的设计,刘睿主要完成报告的编写以及提出相关的意见,设计过程中成员需要相互配合,相互支持分工没有明显的界限,成员可以扬长避短,各展所长。CPU设计的工具:现在存在很多的cpu开发语言,如VHDL硬件描述语言,VerilogHDL描述语言等等,它们都是非常优秀的开发工具,鉴于知识的局限性,这里只列出我们所学的工具。
Quartus®IIdesign是最高级和复杂的,用于system-on-a-programmable-chip(SOPC)的设计环境。QuartusIIdesign提供完善的timingclosure和LogicLock™基于块的设计流程。QuartusIIdesign是唯一一个包括以timingclosure和基于块的设计流为基本特征的programmablelogicdevice(PLD)的软件。QuartusII设计软件改进了性能、提升了功能性、解决了潜在的设计延迟等,在工业领域率先提供FPGA与mask-programmeddevices开发的统一工作流程。EDA技术EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。利用EDA工具,以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。CPU开发的步骤设计过程中,小组成员考虑的步骤如下1、设计定义和可综合的HDL代码2、逻辑综合3、版图规划4、单元布局和优化5、静态时序分析(STA)、形式验证(FV)和可测性电路插入(DFT)。6、后布局优化,时钟树综合和布线设计7、寄生参数的提取8、后仿真,以及时序和功耗分析9、ECO(工程修改命令)修改。10、物理验证。目前已经完成了初期的开发过程,在后续时间中将完成后续步骤。具体步骤如下图CPU的开发周期根据设计的具体步骤以及前期所做的工作,我们大概需要4-5周的时间来完成设计,cpu的开发过程中主要花费的时间是在后期的调试和实现上,前期相对比较容易实现,大概需要1周左右的时间,后期需要投入较多的精力和时间。1.3参考资料《精通VerilogHDL语言编程》刘波电子工业出版社VerilogHDL设计实践与指导刘秋云等机械工业出版社1.4相关信息主频主频也叫时钟频率,单位是MHz(或GHz),用来表示CPU的运算、处理数据的速度外频外频是CPU的基准频率,单位是MHz。CPU的外频决定着整块主板的运行速度。CPU的位和字长位:在数字电路和电脑技术中采用二进制,代码只有“0”和“1”,其中无论是“0”或是“1”在CPU中都是一“位”。
字长:电脑技术中对CPU在单位时间内(同一时间)能一次处理的二进制数的位数叫字长。所以能处理字长为8位数据的CPU通常就叫8位的CPU。同理32位的CPU就能在单位时间内处理字长为32位的二进制数据。字节和字长的区别:由于常用的英文字符用8位二进制就可以表示,所以通常就将8位称为一个字节。字长的长度是不固定的,对于不同的CPU、字长的长度也不一样。8位的CPU一次只能处理一个字节,而32位的CPU一次就能处理4个字节,同理字长为64位的CPU一次可以处理8个字节。倍频系数倍频系数是指CPU主频与外频之间的相对比例关系。在相同的外频下,倍频越高CPU的频率也越高。缓存缓存大小也是CPU的重要指标之一,而且缓存的结构和大小对CPU速度的影响非常大,CPU内缓存的运行频率极高,一般是和处理器同频运作,工作效率远远大于系统内存和硬盘。实际工作时,CPU往往需要重复读取同样的数据块,而缓存容量的增大,可以大幅度提升CPU内部读取数据的命中率,而不用再到内存或者硬盘上寻找,以此提高系统性能。但是由于CPU芯片面积和成本的因素来考虑,缓存都很小。
CPU扩展指令集CPU依靠指令来计算和控制系统,每款CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。从现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分,CPU内核和I/O工作电压从586CPU开始,CPU的工作电压分为内核电压和I/O电压两种,通常CPU的核心电压小于等于I/O电压。其中内核电压的大小是根据CPU的生产工艺而定,一般制作工艺越小,内核工作电压越低;I/O电压一般都在1.6~5V。低电压能解决耗电过大和发热过高的问题。制造工艺制造工艺的微米是指IC内电路与电路之间的距离。制造工艺的趋势是向密集度愈高的方向发展。密度愈高的IC电路设计,意味着在同样大小面积的IC中,可以拥有密度更高、功能更复杂的电路设计。现在主要的180nm、130nm、90nm、65nm、45纳米。最近inter已经有32纳米的制造工艺的酷睿i3/i5系列了。指令集(1)CISC指令集
CISC指令集,也称为复杂指令集,英文名是CISC,(ComplexInstructionSetComputer的缩写)。在CISC微处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢。(2)RISC指令集
RISC是英文“ReducedInstructionSetComputing”的缩写,中文意思是“精简指令集”。它是在CISC指令系统基础上发展起来的,有人对CISC机进行测试表明,各种指令的使用频度相当悬殊,最常使用的是一些比较简单的指令,它们仅占指令总数的20%,但在程序中出现的频度却占80%。复杂的指令系统必然增加微处理器的复杂性,使处理器的研制时间长,成本高。并且复杂指令需要复杂的操作,必然会降低计算机的速度(3)IA-64
EPIC(ExplicitlyParallelInstructionComputers,精确并行指令计算机)是否是RISC和CISC体系的继承者的争论已经有很多,单以EPIC体系来说,它更像Intel的处理器迈向RISC体系的重要步骤。从理论上说,EPIC体系设计的CPU,在相同的主机配置下,处理Windows的应用软件比基于Unix下的应用软件要好得多。
超流水线与超标量在解释超流水线与超标量前,先了解流水线(pipeline)。流水线是Intel首次在486芯片中开始使用的。流水线的工作方式就象工业生产上的装配流水线。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。经典奔腾每条整数流水线都分为四级流水,即指令预取、译码、执行、写回结果,浮点流水又分为八级流水。
超标量是通过内置多条流水线来同时执行多个处理器,其实质是以空间换取时间。而超流水线是通过细化流水、提高主频,使得在一个机器周期内完成一个甚至多个操作,其实质是以时间换取空间封装形式CPU封装是采用特定的材料将CPU芯片或CPU模块固化在其中以防损坏的保护措施,一般必须在封装后CPU才能交付用户使用。CPU的封装方式取决于CPU安装形式和器件集成设计,从大的分类来看通常采用Socket插座进行安装的CPU使用PGA(栅格阵列)方式封装,而采用Slotx槽安装的CPU则全部采用SEC(单边接插盒)的形式封装。现在还有PLGA(PlasticLandGridArray)、OLGA(OrganicLandGridArray)等封装技术。多线程同时多线程Simultaneousmultithreading,简称SMT。SMT可通过复制处理器上的结构状态,让同一个处理器上的多个线程同步执行并共享处理器的执行资源,可最大限度地实现宽发射、乱序的超标量处理,提高处理器运算部件的利用率,缓和由于数据相关或Cache未命中带来的访问内存延时。多核心多核心,也指单芯片多处理器(Chipmultiprocessors,简称CMP)。CMP是由美国斯坦福大学提出的,其思想是将大规模并行处理器中的SMP(对称多处理器)集成到同一芯片内,各个处理器并行执行不同的进程。SMPSMP(SymmetricMulti-Processing),对称多处理结构的简称,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。在这种技术的支持下,一个服务器系统可以同时运行多个处理器,并共享内存和其他的主机资源。乱序执行技术乱序执行(out-of-orderexecution),是指CPU允许将多条指令不按程序规定的顺序分开发送给各相应电路单元处理的技术。1.5CPU、主存和指令集的基本功能主存分为两个,一个是指令存储器,一个是数据存储器。指令集实现一些基本的计算功能如:四则运算、跳转指令等。cpu的基本功能已经在前面有了比较详细的介绍,先从指令存储器中取得指令,分析指令的功能,取相应的数据,完成相应的功能。二、设计方法2.1系统的总体框图如下图中只是初步的设计图,有些器件并没有画上,在后续设计中可能需要增加一些工具,大体设计思想入上图2.2主要器件介绍CPU主要功能部件是ALU和CU,对此我们作出详细介绍,对其他简单部件我们做出简单介绍。因为我们已经实现部件模块化设计故在此我们显示出我们的模块化设计。1、寄存器组的设计——用来输出所需要的操作数。2、控制器Contral用来控制整个设计的功能波形图如下:其波形具体分析见下面的CU分析。3数据扩展器件Extended由于指令集存在立即数的运算,用来将16位立即数扩展位32位立即数4组合跳转指令IRPC4 选择跳转或者顺序执行的指令5运算器ALU用来实现基本的运算功能波形图如下:其中000表示ADD,001表示SUB,010表示AND,011表示OR,100表示XOR6、二路选择器MUX_2en选择操作数的类型7、数据存储器——Data_Memory用来输出操作数到寄存器中8、指令暂存PC存放下一条指令9、指令寄存器IR_Memory输出指令10、跳转Jmp_pc实现跳转指令的功能11、五位二路选择器——fw2s1(前面的都是32位)存在立即数和存储器两种寻找方式,用来确定目的地址其中重点说明寄存器、ALU和CU部件算术逻辑部件ALU他是一个组合逻辑部件,具有两路数据输入(ALU_A,ALU_B)一个进位输入C、三位操作码ALUOP,还有32位数据输出ALU_OUT,判断结果是否为零的输出ZERO,及进位输出COUT。该算术逻辑部件仅仅支持ADDSUBANDORXOR等基本操作。其结构图如下:ALU功能表操作数选择码操作具体执行结果000ADDA+B001SUBA-B010ANDAANDB011ORAORB100XORAXORBCU控制部件的指令集如下:一条指令的执行过程一般有下面的五个阶段,指令的执行过程就是这五个状态的重复过程:CU部件就是设计完成这个过程,从而控制指令的执行。指令集1
R-typeOprsrtrdshamtfunctOp:Op:操作码6位rs:寄存器源操作数15位rt:寄存器源操作数25位rd:寄存器目的操作数5位shamt:移位次数5位funct:功能6位举例:加法add$t0,$s1,$s2Oprsrtrdshamtfunct00000010001100100100000000000000减法
例:sub$t0,$s1,$s2Oprsrtrdshamtfunct00000010001100100100000000000001与
例:and$t0,$s1,$s2Oprsrtrdshamtfunct00000010001100100100000000000010或
例:or$t0,$s1,$s2Oprsrtrdshamtfunct00000010001100100100000000000011非
例:nor$t0,$s1,$s2Oprsrtrdshamtfunct00000010001100100100000000000100指令集2
I-typeOprsrtconstantoraddressOp:操作码6位rs:源操作数5位rt:目的操作数5位constantoraddress:常数或地址16位举例:
加法-
addi$s6,$s0,4;Op000001rs10000rt10110constantoraddress0000000000000100减法
subi$s6,$s0,4;Op000010rs10000rt10110constantoraddress0000000000000100访存lw$t0,1200($t1)Op000011rs01001rt01000constantoraddress0000010010110000写存sw$t0,1200($t1)Op000100rs01001rt01000constantoraddress0000010010110000相等
beq$s6,$s0,5;相等就跳到该指令的后5位Op000101rs10000rt10110constantoraddress0000000000000101if(CONDeq0) PC<-PC+4+(SignExt(imm16)x4) elsePC<-PC+44.4指令集3
J-type状态结构图:SequencingControl(SequencingControl(顺序控制):
ExplicitNextStateFunction(显式表示下一状态功能)OpcodeStateRegInputsOutputsControlLogicMulticycleDatapath2.3初步的系统结构图设计过程中的基本元器件都已经设计完成,下图是初步的实现方案,由于存在一些小的bug,暂时不能实现,但是这是大体的结构图,后续结果会在此基础上进行改进和实现2.4流程图三计算机整机系统所需部件代码实现寄存器组的设计—RegistersmoduleRegisters(R_num1,R_num2,W_num,DIN,RegWrite,DOUT1,DOUT2);inut[5:1]R_num1,R_num2,W_num;input[32:1]DIN;inputRegWrite;output[32:1]DOUT1,DOUT2;reg[32:1]zero=32'b0;reg[32:1]at,v0,v1,a0,a1,a2,a3,t0,t1,t2,t3,t4,t5,t6,t7;reg[32:1]s0,s1,s2,s3,s4,s5,s6,s7,t8,t9,k0,k1,gp,sp,fp,ra;reg[32:1]DOUT1,DOUT2;always@(RegWriteorW_num)beginif(RegWrite)case(W_num)5'b00001:at=DIN;5'b00010:v0=DIN;5'b00011:v1=DIN;5'b00100:a0=DIN;5'b00101:a1=DIN;5'b00110:a2=DIN;5'b00111:a3=DIN;5'b01000:t0=DIN;5'b01001:t1=DIN;5'b01010:t2=DIN;5'b01011:t3=DIN;5'b01100:t4=DIN;5'b01101:t5=DIN;5'b01110:t6=DIN;5'b01111:t7=DIN;5'b10000:s0=DIN;5'b10001:s1=DIN;5'b10010:s2=DIN;5'b10011:s3=DIN;5'b10100:s4=DIN;5'b10101:s5=DIN;5'b10110:s6=DIN;5'b10111:s7=DIN;5'b11000:t8=DIN;5'b11001:t9=DIN;5'b11010:k0=DIN;5'b11011:k1=DIN;default:;endcaseendalways@(R_num1)begincase(R_num1)5'b00001:DOUT1=at;5'b00010:DOUT1=v0;5'b00011:DOUT1=v1;5'b00100:DOUT1=a0;5'b00101:DOUT1=a1;5'b00110:DOUT1=a2;5'b00111:DOUT1=a3;5'b01000:DOUT1=t0;5'b01001:DOUT1=t1;5'b01010:DOUT1=t2;5'b01011:DOUT1=t3;5'b01100:DOUT1=t4;5'b01101:DOUT1=t5;5'b01110:DOUT1=t6;5'b01111:DOUT1=t7;5'b10000:DOUT1=s0;5'b10001:DOUT1=s1;5'b10010:DOUT1=s2;5'b10011:DOUT1=s3;5'b10100:DOUT1=s4;5'b10101:DOUT1=s5;5'b10110:DOUT1=s6;5'b10111:DOUT1=s7;5'b11000:DOUT1=t8;5'b11001:DOUT1=t9;5'b11010:DOUT1=k0;5'b11011:DOUT1=k1;default:DOUT1=5'H0;endcaseendalways@(R_num2)begincase(R_num2)5'b00001:DOUT2=at;5'b00010:DOUT2=v0;5'b00011:DOUT2=v1;5'b00100:DOUT2=a0;5'b00101:DOUT2=a1;5'b00110:DOUT2=a2;5'b00111:DOUT2=a3;5'b01000:DOUT2=t0;5'b01001:DOUT2=t1;5'b01010:DOUT2=t2;5'b01011:DOUT2=t3;5'b01100:DOUT2=t4;5'b01101:DOUT2=t5;5'b01110:DOUT2=t6;5'b01111:DOUT2=t7;5'b10000:DOUT2=s0;5'b10001:DOUT2=s1;5'b10010:DOUT2=s2;5'b10011:DOUT2=s3;5'b10100:DOUT2=s4;5'b10101:DOUT2=s5;5'b10110:DOUT2=s6;5'b10111:DOUT2=s7;5'b11000:DOUT2=t8;5'b11001:DOUT2=t9;5'b11010:DOUT2=k0;5'b11011:DOUT2=k1;default:DOUT2=5'H0;endcaseendendmodule控制器ControlmoduleControl(op,fun,pc,pc4en,s_pc,s_pc_s,D_en,D_s,Ex_en,LF2_en,D3_en,D3_s,ALU_clr,ALU_op,DM_em,RegW_en,RegW_s,RegWrite);input[5:0]op;input[5:0]fun;outputpc,pc4en,s_pc,s_pc_s,D_en,D_s,Ex_en,LF2_en,D3_en,ALU_clr,DM_em,RegW_en,RegW_s,RegWrite;output[1:0]D3_s;output[2:0]ALU_op;regpc,pc4en,s_pc,s_pc_s,D_en,D_s,Ex_en,LF2_en,D3_en,ALU_clr,DM_em,RegW_en,RegW_s,RegWrite;reg[1:0]D3_s;reg[2:0]ALU_op;always@(oporfun)begincase(op)6'b000000:begin case(fun) 6'b000000:beginpc=1;pc4en=1;s_pc=1;s_pc_s=1;D_en=1;D_s=1;Ex_en=0;LF2_en=0;D3_en=1;D3_s=2'B01;ALU_clr=1;ALU_op=3'B000;DM_em=0;RegW_en=1;RegW_s=0;RegWrite=1;end 6'b000001:beginpc=1;pc4en=1;s_pc=1;s_pc_s=1;D_en=1;D_s=1;Ex_en=0;LF2_en=0;D3_en=1;D3_s=2'B01;ALU_clr=1;ALU_op=3'B001;DM_em=0;RegW_en=1;RegW_s=0;RegWrite=1;end 6'b000010:beginpc=1;pc4en=1;s_pc=1;s_pc_s=1;D_en=1;D_s=1;Ex_en=0;LF2_en=0;D3_en=1;D3_s=2'B01;ALU_clr=1;ALU_op=3'B010;DM_em=0;RegW_en=1;RegW_s=0;RegWrite=1;end 6'b000011:beginpc=1;pc4en=1;s_pc=1;s_pc_s=1;D_en=1;D_s=1;Ex_en=0;LF2_en=0;D3_en=1;D3_s=2'B01;ALU_clr=1;ALU_op=3'B011;DM_em=0;RegW_en=1;RegW_s=0;RegWrite=1;end 6'b000100:beginpc=1;pc4en=1;s_pc=1;s_pc_s=1;D_en=1;D_s=1;Ex_en=0;LF2_en=0;D3_en=1;D3_s=2'B01;ALU_clr=1;ALU_op=3'B100;DM_em=0;RegW_en=1;RegW_s=0;RegWrite=1;end endcase end 6'b000001: beginpc=1;pc4en=1;s_pc=1;s_pc_s=1;D_en=1;D_s=0;Ex_en=1;LF2_en=0;D3_en=1;D3_s=2'B10;ALU_clr=1;ALU_op=3'B000;DM_em=0;RegW_en=1;RegW_s=0;RegWrite=1;end 6'b000010: beginpc=1;pc4en=1;s_pc=1;s_pc_s=1;D_en=1;D_s=0;Ex_en=1;LF2_en=0;D3_en=1;D3_s=2'B10;ALU_clr=1;ALU_op=3'B001;DM_em=0;RegW_en=1;RegW_s=1;RegWrite=1;end 6'b000011: beginpc=1;pc4en=1;s_pc=1;s_pc_s=1;D_en=1;D_s=0;Ex_en=1;LF2_en=0;D3_en=1;D3_s=2'B10;ALU_clr=1;ALU_op=3'B000;DM_em=0;RegW_en=1;RegW_s=0;RegWrite=1;end 6'b000100: beginpc=1;pc4en=1;s_pc=1;s_pc_s=1;D_en=1;D_s=0;Ex_en=1;LF2_en=0;D3_en=1;D3_s=2'B10;ALU_clr=1;ALU_op=3'B000;DM_em=1;RegW_en=0;RegW_s=0;RegWrite=0;end 6'b000101: beginpc=1;pc4en=1;s_pc=1;s_pc_s=1;D_en=0;D_s=0;Ex_en=0;LF2_en=0;D3_en=1;D3_s=2'B01;ALU_clr=1;ALU_op=3'B001;DM_em=0;RegW_en=0;RegW_s=0;RegWrite=0;end 6'b000110: beginpc=1;pc4en=1;s_pc=1;s_pc_s=0;D_en=1;D_s=0;Ex_en=1;LF2_en=0;D3_en=1;D3_s=2'B10;ALU_clr=1;ALU_op=3'B000;DM_em=0;RegW_en=1;RegW_s=0;RegWrite=1;end endcaseendendmodule 数据扩展器件ExtendedmoduleExtended(EN,in,out);input[15:0]in;inputEN;output[31:0]out;reg[31:0]out;always@(EN)beginif(EN)beginout[15:0]<=in[15:0];out[31:16]<=0;endelseout<=0;endendmodule三路选择器MUX_3moduleMUX_3(EN,S,D1,D2,D3,O);inputEN;input[2:1]S;input[32:1]D1,D2,D3;output[32:1]O;reg[32:1]O;always@(ENorS)if(!EN)O<=0;elsebegincase(S)2'b01:O<=D1;2'b10:O<=D2;2'b11:O<=D3;default:O<=0;endcaseendendmodule组合跳转指令IRPC4 modulePC4(s,zero,Jmp,in,out);inputzero;inputs;input[31:0]in;input[15:0]Jmp;output[31:0]out;reg[31:0]out;reg[31:0]Jm;alwaysbeginJm[15:0]=Jmp[15:0];Jm[31:16]=0;endalways@(s)if(!s)out=in;elsebeginif(!zero)out=in+1+Jm;elseout=in+1;endendmodule运算器ALUmoduleALU(ALU_op,clr,ALU_A,ALU_B,Zero,ALU_out);inputclr;input[3:1]ALU_op;input[32:1]ALU_A,ALU_B;outputZero;output[32:1]ALU_out;regZero;reg[32:1]ALU_out;always@(clrorALU_op)beginif(!clr)ALU_out=0;elsebegincase(ALU_op)3'b000:beginALU_out=ALU_A+ALU_B;Zero=0;end3'b001:beginALU_out=ALU_A-ALU_B;if(ALU_out==0)Zero=1;elseZero=0;end3'b010:beginALU_out=ALU_A&ALU_B;Zero=0;end3'b011:beginALU_out=ALU_A|ALU_B;Zero=0;end3'b100:beginALU_out=~(ALU_A|ALU_B);Zero=0;enddefault:beginALU_out=0;Zero=0;endendcaseendendendmodule二路选择器MUX_2moduleMUX_2(EN,S,D1,D2,O);inputEN;inputS;input[32:1]D1,D2;output[32:1]O;reg[32:1]O;always@(ENorS)if(!EN)O<=0;elsebegincase(S)0:O<=D1;1:O<=D2;default:O<=0;endcaseendendmodule移位器件—LF2moduleLF2(en,in,out);inputen;input[31:0]in;output[31:0]out;reg[31:0]out;always@(enorin)beginif(en)out=in+4;elseout=in;endendmodule数据存储器——Data_MemorymoduleData_Memory(inputclk,inputw_en,input[31:0]data_in,input[31:0]addr,output[31:0]outp);reg[31:0]ram[31:0];reg[31:0]a;initialbegin$readmemh("Data_m.hex",ram);endalways@(posedgeclk)if(w_en)beginram[8'h000003ff-addr]=data_in;endelsebegina=ram[8'h000003ff-addr];endassignoutp=a;endmodule指令暂存PCmodulePC(en,clk,D,O);inputen,clk;input[32:1]D;output[32:1]O;reg[32:1]O;always@(posedgeclk)beginif(en)O<=D;elseO<=0;endendmodule指令寄存器IR_Memory moduleIR_Memory(inputclk,input[31:0]addr,output[31:0]outp);reg[31:0]ram[31:0];reg[31:0]a;initialbegin$readmemh("IR_m.hex",ram);endalways@(posedgeclk)begina=ram[8'h000003ff-addr];endassignoutp=a;endmodule跳转Jmp_pcmoduleJmp_pc(in1,in2,out);input[3:0]in1;input[25:0]in2;output[31:0]out;reg[31:0]out;always@(in1orin2)beginout[31:28]<=in1;out[27:2]<=in2;out[1:0]<=2'b0;endendmodule五位
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学园艺(观赏园艺学)试题及答案
- 2025年中职安全技术管理(安全生产法规)试题及答案
- 2025年高职模具设计与制造(模具设计制造)试题及答案
- 2025年大学油气储运技术(安全管理)模拟试题
- 2025年中职(老年服务与管理)老年人心理护理阶段测试试题及答案
- 2025年高职地理学(人文地理学)试题及答案
- 2025年中职药品经营与管理(药品经营管理)试题及答案
- 2025年大学(软件工程)Java程序设计阶段测试卷
- 2025年本科护理学(外科护理)试题及答案
- 2025年大学四年级(公共事业管理)公共项目评估试题及答案
- 2025年国家开放大学《数据分析与统计学基础》期末考试备考试题及答案解析
- 吊水鱼专业知识培训内容课件
- 汽车产业自动驾驶政策法规2025年研究报告
- 口岸安全联合防控工作制度
- 水处理设备维护课件
- 架梁人员安全教育培训课件
- 槐乡五月课件教学
- 江苏省苏州市2024-2025学年七年级上学期期末阳光调研英语试卷(含答案解析)
- 人教版八年级道德与法治上册复习提纲
- 2025年江苏保安员考试题库及答案
- 印刷出版材料配备计划
评论
0/150
提交评论