




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机组成原理报告课程设计题目:16位CPU设计 学院: 信息学院班级:电子A班 学号:1115102015 姓名:方茹 目录1 实验方法42 总体说明52.1指令系统:52.1.1指令格式分类(按指令字长和操作数不同):52.1.2具体指令汇总表:62.1.3相关指令流程图:72.1.4指令数据通路的构建:82.1.5指令的分组及节拍:112.1.6指令执行状态图:(见下页)122.1.7具体微指令:122.2 系统整体介绍152.2.1系统基本模块划分152.2.2总体结构图:(见下页)163 CPU的控制逻辑与具体数据通道设计173.1取指令逻辑的设计183.1.1指令地址的保存183.1.2指令存储器193.1.3下一条指令地址的计算193.2指令译码逻辑的设计203.3指令执行逻辑的设计213.4存储器访问逻辑的设计223.5结果写回逻辑的设计233.6单周期CPU的总成244各部分说明254.1 ALU254.2数据选择器BUS_MUX274.3器件T1294.4标志寄存器FLAG_REG304.5 T2:314.6程序计数器PC324.7地址寄存器AR和指令寄存器IR:334.8寄存器、寄存器组和寄存器的选择344.9一位控制信号/WR364.10 节拍发生器364.11控制逻辑384.12 T3414.13 REG_OUT424.14存储器434.15总线选择器444.16 REG_TEST445附录:46附录A:组员分工:46附录B:组员设计总结:461 实验方法实验要完成的工作主要包括:指令系统的设计,FPGA-CPU的整体结构设计及其细化,逻辑设计的具体实现(VHDL语言程序的编写),软件模拟,以及硬件调试。这几部分的工作之间是先行后续的关系,也就是只有前一个步骤完成了下一个步骤才可以开始进行,不存在并行完成的情况。实验主要流程如下图所示:设计FPGA-CPU的指令集。我们选择了不做流水及Cache。 指令系统设计分析并确定CPU主要功能模块,分析每条指令的执行过程,数据的流向和控制信号的产生,画出逻辑结构图逻辑设计按模块分别实现并模拟具体实现 整体模拟仿真,检查时序关系配合是否正确软件模拟下载到FPGA中进行硬件调试硬件调试其中指令系统和逻辑结构的设计主要参考了相关文献。主要的方法是先确定CPU所要实现的功能,根据寄存器等的情况划分指令格式,然后根据功能写出指令,根据不同指令的特点将它们分组并确定操作码;接下来设想每条指令的执行过程,需要哪些硬件支持,最后确定整个CPU的逻辑结构图。在各个功能模块的实现中主要使用了自底向上的设计方法。先实现寄存器,再实现寄存器组,等等,最后将各个器件和模块之间互连,得到顶层设计图。2 总体说明2.1指令系统: 计算机的指令是用户使用计算机与计算机本身运行的最小功能单位。一台计算机支持的全部指令就构成该机的指令系统。从计算机本身的组成看,指令系统直接与计算机系统的性能和硬件结构的复杂程度等密切相关,它是CPU设计的起始点和基本依据。设计指令系统的核心问题是选定指令的格式和功能。具体到我们的设计来说,指令的功能应该包括简单的算术和逻辑运算,移位操作,数据传送,跳转,读写内存,另外还可能包括一些其他功能如置条件码等。为了指令的规整性和便于译码,我们主要采用了定长的操作码组织方案,操作码为8位。寻址方式包括了寄存器寻址、立即数寻址、直接地址和相对寻址。2.1.1指令格式分类(按指令字长和操作数不同):(1)单字指令单字节指令格式(2)双字指令2.1.2指令操作码 操作码功能表2.1.3相关指令流程图:1.算术逻辑运算指令 2.访存指令 将参与运算的两个操作数分别放入ALU的A端和B端ALU进行运算,结果存入暂存器Y中将暂存器Y中结果经总线送回指定寄存器将指令中存储器地址经地址总线送入MAR当中,并把存储器读写使能端置为读将存储器中数据送入MDR将MDR中数据经数据总线送入寄存器将寄存器中数据经数据总线送入MDA将地址经地址总线送入MAR,并读写使能端为写将MDR中数据存入存储器3.访寄存器指令 4.跳转指令将寄存器中操作数送入总线将立即数经符号扩展后送入总线将总线上的数送往寄存器取指令中立即数送入ALU的A端,将PC得值送入B端ALU完成加运算,将结果送到暂存器Y中将Y中数据经数据总线送入PC2.1.4指令数据通路的构建:1. 取指令数据通路的构建取指令的微操作安排如下:T0: PC BUS MAR, PC BUS A, 1 READT1: M(MAR) MDRBUSIR, ALU(A+2) YT2: Y BUS PC, IR ID 数据通路如下:(再配合流程图来说明工作流程,说明每一个部件的功能;以下同)P CMUXIRALUAMEMMARMDRBYBUSMAR_INMDR_INPC_INIR_INA_INB_INALUOPBUS_MUX2. 算逻指令执行周期数据通路构建 算逻指令执行周期微操作安排如下:T0: $R2 BUS AT1: $R3 BUS BT2: ALU(A ,B) Y BUS $R1 数据通路如下:RFMUXIRALUABYBUSBUS_MUXALUOPA_INB_INRF_IN3访存指令执行周期数据通路构建MUXALUAMEMMARMDRBYBUSRFIRMDR_INRF_INBUS_MUXLDRR 指令执行周期的微操作安排如下:T0: Ad(IR) 扩位 BUS MAR, 1 READT1: M(MAR) MDRT2: MDR BUS $RSTRR 指令执行周期的微操作安排如下:T0: $R BUS MDRT1: Ad(IR) 扩位 BUS MAR, 1 WRITET2: 4. 访寄存器组指令执行周期数据通路构建访寄存器指令执行周期微操作安排如下:T0: $R2 BUS $R1 T1: T2: 数据通路如下:RFMUXIRBUS扩位BUS_MUXRF_IN5. 跳转指令执行周期数据通路构建跳转指令执行周期的微操作安排如下:T0: Im(IR) 扩位和移位 BUS AT1: PC BUS BT2: ALU(A+B) Y BUS PCP CMUXIRALUABYBUS扩位BUS_MUXALUOPPC_IN2.1.5指令的分组及节拍:由于没有中断操作,本机指令的执行步骤可概括如下:(画图描述)读取指令:地址寄存器-指令地址,修改PC内容使其指向下一条将要执行的指令; 读内存,指令寄存器-读出的内容。分析指令: 指令译码。执行指令:通用寄存器之间的运算或传送,可1步完成; 读写内存,通常要两步完成。根据指令的执行步骤不同,可以把全部指令分为A、B两组。其中A组指令完成的是通用寄存器之间的数据运算或传送,或其他一些特殊操作,在取指之后可一步完成,包括:ADD,SUB,AND,CMP,XOR,TEST,OR,MVRR,DEC,INC,SHL,SHR,ADC,SBB,JR,JRC,JRNC,JR Z,JRNZ,JRS,JRNS,CLC,STC;B组指令完成的是一次内存读写操作,在取指之后可两步完成,包括:JMPA,LDRR,STRR,MVRD。在编码的时候以指令操作码的最高位来区分 A、B组指令,0为A组指令,1为B组指令。在控制器方面我们选用了组合逻辑控制器方案。使用节拍来标记每条指令的执行步骤。由指令而定,在我们的系统中不同的执行步骤只有5个?,故使用3位节拍就足够了。100AR-PC,PC-PC+1读内存,IR-读出内容000 001控制器译码读写内存传送地址AR-地址 B组指令 101 111A组指令011寄存器之间的数据运算或传送2.1.6指令执行状态图:(见下页)2.1.7具体微指令:(以下设计过程(思路)的描述解释)ADD DR,SRT1:MEM_ADDRPC WR1 MEM_DATAOB IRMEM_DATA PC_NEXTPC+1T2:RESULTSR+DRT3:DRRESULT PCPC_NEXT GENERATE Z GENERATE CSUB DR,SRT1:MEM_ADDRPC WE1 MEM_DATAOB IRMEM_DATA PC_NEXTPC+1T2:RESULTSR-DRT3:DRRESULT PCPC_NEXT GENERATE Z GENERATE C上图的名称和标号?解释改图,图再画清楚一些。CMP DR,SRT1:MEM_ADDRPC WE1 MEM_DATAOB IRMEM_DATA PC_NEXTPC+1T2:RESULTSR-DRT3:PCPC_NEXT GENERATE ZMOVRTR DR,SRT1:MEM_ADDRPC WE1 MEM_DATAOB IRMEM_DATA PC_NEXTPC+1T2:RESULTSRT3:DRRESULT PCPC_NEXT JMP ADDRT1:MEM_ADDRPC WE1 MEM_DATAOB IRMEM_DATA T2:RESULTADDR+PCT3:PCRESULT 6JNC ADDRT1:MEM_ADDRPC WE1 MEM_DATAOB IRMEM_DATA PC_NEXTPC+1T2:GENERATE CFLAG RESULTADDR+PCT3:if(CFLAG=0) PCRESULT else PCPC_NEXTJNZ ADDRT1:MEM_ADDRPC WE1 MEM_DATAOB IRMEM_DATA PC_NEXTPC+1T2:GENERATE ZFLAG RESULTADDR+PC T3:if(ZFLAG=0) PCRESULT else PCPC_NEXTCLCT1:MEM_ADDRPC WE1 MEM_DATAOB IRMEM_DATA PC_NEXTPC+1T2:C0T3:PCPC_NEXT STCT1:MEM_ADDRPC WE1 MEM_DATAOB IRMEM_DATA PC_NEXTPC+1T2:C1T3:PCPC_NEXTLDRR DR,SRT1:MEM_ADDRPC WE1 MEM_DATAOB IRMEM_DATA PC_NEXTPC+1T2:MEM_ADDRSRT3:WE1 MEM_DATAOB DRMEM_DATA PCPC_NEXT STRR DR,SRT1:MEM_ADDRPC WE1 MEM_DATAOB IRMEM_DATA PC_NEXTPC+1T2:MEM_ADDRDR T3:WE0 MEM_DATASR OBMEM_DATA PCPC_NEXT MOVDTR DR,DATAT1:MEM_ADDRPC WE1 MEM_DATAOB IRMEM_DATA PC_NEXTPC+1T2:MEM_ADDRPC_NEXT T3:WE0 MEM_DATAOB DRMEM_DATA PCPC+22.2 系统整体介绍2.2.1系统基本模块划分整个系统可划分为控制器,寄存器,ALU,寄存器组,数据选择器,相关时序部件及组合逻辑部件,总线和主存等。整个CPU系统以控制器为中心,负责指令的译码及发出各种相关控制信号。节拍发生器控制着整个系统的时钟信号,系统的相关部件在统一的节拍控制下发挥自己的作用。IR为指令寄存器,负责存储即将执行的下一条指令,AR为地址寄存器,存放被访问存储单元的地址。PC为程序计数器,存放现行指令的地址,具有计数功能。ALU负责处理相关数据运算操作。寄存器组负责存放相关操作数和中间临时变量。多路数据选择器在相关控制信号的作用下将相关数据输入ALU处理。总线分数据总线和地址总线,负责MM和相关寄存器之间的数据交换。MM为存储器,存放相关数据和程序。总线 MM PC寄存器组数据选择器节拍 ALU AR IR 控制器建议下图用ConceptDraw绘图工具完成,画起图来更加快捷;并对此图工作过程进行解释(画流程图等)2.2.2总体结构图:(见下页)我们设计的系统没有流水和Cache,CPU的结构还是比较简单的。主要的部件就是算逻单元ALU、控制逻辑、通用寄存器组、指令寄存器IR、地址寄存器AR、程序计数器PC、标志寄存器、节拍发生器以及一些数据选择器和译码电路。运算器方面,由一个ALU部件完成全部算数、逻辑、移位操作,输出设置了4个标志位:C进位标志位,Z是否为0标志位,V溢出标志位,S是否为负标志位,保存在标志寄存器内。与之相关的还有寄存器组和数据选择器。16个16位的通用寄存器既是参与运算的数据的来源,又是运算结果的暂存地,而数据选择器为ALU正确选择了两个输入数据。控制器方面,使用了组合逻辑控制器,这也是当前RISC类型计算机普遍选用的控制器方案。它的基本运行原理是,用组合逻辑门线路直接提供控制计算机各功能部件协同运行所需要的控制信号。其优点是,形成这些控制信号所必需的线路延迟时间少,对提高系统运行速度有利,并且由于使用了大规模现场可编程器件,这些逻辑线路的设计和修改变得非常简单易行。组合逻辑控制器主要由4个部件组成:程序计数器PC,保存指令在内存中的地址;指令寄存器IR,保存从内存读来的指令内容,在指令执行过程中提供指令本身的主要信息;节拍发生器,用于标记出每条指令的各执行步骤的相对次序关系;控制逻辑,或称时序控制信号产生部件,它根据指令内容(由IR提供)和指令的执行步骤(由节拍发生器提供)及其他一些条件信号(标志寄存器输出),形成并提供出计算机各部件当前时刻要用到的控制信号。1. 解释系统电路的工作原理,可画流程图2. 系统电路的设计过程3解释个部件的功能OutputMM3 CPU的控制逻辑与具体数据通道设计CPU在处理指令时需要经过以下几个步骤:1)取指令(IF):根据程序计数器PC中的指令地址,从存储器中取出一条指令,转到译码状态。同时,在PC中产生下一条指令的地址。2)指令译码(ID):对取指令操作中得到的指令进行译码,确定该指令需要完成的操作,从而产生相应的控制信号,驱动执行状态中的各种动作。3)指令执行(EXE):根据指令译码得到的控制信号,具体执行指令动作,转入下一个状态。4)存储器访问(MEM):所有需要访问存储器的操作都将在这个步骤中执行,该步骤给出访问存储器的地址,从存储器的指定地址读取数据,或者将指定数据写入指定地址。5)结果写回(WB):该步骤把指令执行的结果或者访问存储器所得到的数据写入到相应的目的寄存器中。图3-1显示了单周期CPU中5个指令处理步骤的执行顺序。取指令IF指令译码ID指令执行EXE存储器访问MEM结果写回WB图3-1:单周期CPU指令处理过程33.13.1取指令逻辑的设计CPU执行指令时,第一步要把指令从存储器中取出来。这个动作由(IF)步骤完成。如图3-2所示,IF步骤需要完成以下几个操作:1)给出需要取得的指令的存储器地址。因为指令保存在程序计数器PC中,所以只需要把PC中的地址输出到地址总线上即可。2)从存储器读取指令字。3)计算下一条指令的地址。PCPCData Out指令存储器下条指令地址计算逻辑指令clk图3-2:取指令操作示意图3.1.1指令地址的保存在CPU体系结构中,计算机指令保存在一个16位的专用寄存器PC中。本设计使用一个16位的寄存器来实现程序寄存器PC,如图3-3所示。(应该在画下面实现的电路图之前,先设计(画)逻辑部件框图,即确定输入/输出,控制信号等,以下同)补图 3.1.2指令存储器计算机指令保存在指令存储器中。在本设计中,使用IR来实现指令存储器。如图3-4所示。指令存储器输入信号:mem_data15.0。控制信号:rec为10时,IR接收从MM获得的指令。指令存储器输出信号:INSTOUT15.0。图3-4:指令存储器的逻辑电路图3.1.3下一条指令地址的计算在计算下一条指令地址时,有如下几种情况:1)如果当前指令不是分支或跳转指令,则可以简单的在当前指令的基础上加2,就得到了下一条指令的地址,保存到程序计数器PC中。2)当前指令为分支或者跳转指令时,则需要根据当前指令来计算跳转地址。具体而言,在计算分支指令时,首先需要把分支指令中的8位立即数进行符号扩展;把结果加到当前指令的指令地址上,从而产生分支转移地址。8位立即数为INSTOUT7.0,符号位是INSTOUT7,如图1-5所示,可将INSTOUT7扩展到高8位。由此可得到计算下一条指令地址的数据选通电路。(如图3-5) (如何工作?画流程图或状态图) 图3-5 取指令地址的数据选通电路的实现3.2指令译码逻辑的设计在得到了指令字之后,将转入指令译码阶段。指令译码操作步骤完成如下的功能:1)识别指令;2)根据不同的指令给出各种控制信号;3)根据指令从相应的源数据寄存器中取出操作数,为下一步的指令执行做好准备。指令译码动作由控制部件CtrlUnit完成。其中CtrlUnit的输入timer、instruction、czvs分别表示时钟节拍信号、指令字、标志位,这些输入的组合可用于识别指令,并输出相关控制信号。具体信号的相关功能见CU部件说明。在译码阶段,具体来说,在一定的节拍下,CU首先将接收的指令的前八位和后八位分开,用于分离操作数和操作码,然后将操作数的前四位和后四位分开,用于区分源操作数和目的操作数,然后根据具体的指令输出相关控制信号。1.1.13.3指令执行逻辑的设计经过指令译码操作,正在处理的指令需要使用算术逻辑单元执行何种操作已经由信号alu_func2.0确定下来。经过去操作数操作,ALU需要使用的操作数也已经准备好。这样,就可以进行指令执行操作。ALU的两个操作数可能来自pc,也可能是SR/DR,可能来自寄存器,也可能使用指令字中的立即数。具体使用什么操作数由bus_mux来确定。由此可得到指令执行的数据选通电路。(如图3-6) (如何工作?画流程图或状态图)图3-6:指令执行逻辑电路图3.4存储器访问逻辑的设计在指令执行阶段(EXE)之后,CPU指令处理将进入到存储器访问阶段。在MIPS体系结构中定义了两种当问存储器的指令:Load和Store指令。CPU能且仅能通过这两种指令来访问存储器。这是RISC架构处理器通用的做法。在本节设计的CPU中,Load指令为LDRR,Store指令为STRR。在指令执行阶段(EXE)完成之后,将要进行存储器访问操作。在 访问存储器的时候,CPU需要给出以下几种控制信号和数据:1)访问存储器的方式:读还是写,由CU的信号/wr来确定。2)访问存储器的地址。无论是LDR是STRR,都需要使用ALU把寄存器rs和指令字中的立即数相加得到数据地址。所以ALU的计算结果alu_out15.0即为需要访问数据的数据地址。3)如果是写存储器,则还需要给出写入的数据。写入存储器的数据来源为寄存器rt。在指令译码步骤中,寄存器r从寄存器堆中读出的内容为data15.0,该数据即为存储器的写入数据。由此可得到访问存储器的数据选通电路。(如图3-7) (如何工作?画流程图或状态图) 图3-7:访问存储器逻辑电路图3.5结果写回逻辑的设计完成了指令执行阶段(EXE)和存储器访问阶段(MEM)后,进入到结果写回阶段(WB)。所涉及到的数据和信号如下:1)要写入的数据。寄存器堆中要写入的数据来源有2种,一种是ALU计算的结果alu_out15.0,另一种是来自存储器的数据,该数据由外部输入到CPU中。在指令译码过程(ID)中,控制部件CU可根据不同的指令来区分两种不同的数据来源,具体来讲,MOVR指令表示写回数据来自存储器,而2)寄存器组使能信号en_reg和寄存器写信号。该信号控制寄存器组是否执行写入操作。图3-8为结果写回逻辑电路图。(如何工作?画流程图或状态图)图3-8:结果写回逻辑电路图3.6单周期CPU的总成在完成了图4-1所示的5个阶段的控制逻辑与数据通道的设计后,就可以将各个部分集成在一起,组成单周期的CPU。总成的关键在于时序信号的控制。如图4-14所示的时序节拍发生器Time将伴随CLK的输入,在timer2.0输出端循环产生“100”、“000”、“001”、“011”、 “101” 、“111”的输出。将timer2.0的7个信号接到CU模块的时钟上,即可实现不同模块之间的协调工作。七个时钟信号的连接方式如表3-9所示:表3-9:节拍时钟信号的连接方式节拍输出CU控制指令执行阶段S0(100) 初始状态IFS1(000) 读取指令第一拍IFS2(001) 读内存,放到指令寄存器 MEMS3(011) 执行A组指令ID,EXES4(101) 执行B组指令 ID,EXES5(111)读写内存 WB 注意到S3/S4时钟到达时,ID和EXE阶段同时完成。可合并两个指令执行阶段的原因是,ID阶段实际上是在IF阶段的时钟S2到达后,在读出指令字后的瞬间完成的,在S3/S4到达时,不但ID已经完成,而且ALU所需的所有数据也都已在IF时钟S2到达后的瞬间取得,S3/S4到达时已经输出结果,故S3/S4可同时作为ID和EXE阶段完成的标志4各部分说明4.1 ALU功能:。组合逻辑部件,对两个16位的输入及进位输入Cin可进行由3位控制信号控制的如下操作。由于在我们的设计中只有ALU部件有加法器的功能,而对程序计数器的自增并没有再另设一个加法器,故ALU的输入组合情况较多。在对全部指令的执行步骤进行了分析后,共列出了表中所示的6种情况,故使用了3位控制信号。补图I2I1I0功能000A+B+Cin001A-B-Cin010A与B011A或B100A异或B101B 左移110B右移由Quartus生成的.bsf图如下: 设计思想:用三位二进制代码代表部件ALU所能具有的功能,ALU从控制单元中取得二进制代码指令,通过译码获知进行那一功能的运算,进行相应的操作。ALU运行流程图:端口说明:输入信号: cin: 进位信号,表示当前运算是否存在进位,可以强制置位; alu_a: 存放当前运算的操作数,来自多路数据选择器; alu_b: 存放当前运算的操作数,来自多路数据选择器; alu_func:来自控制器,用于控制ALU进行何种运算。输出信号:alu_out:输出ALU的运算结果,送入相关寄存器; c:进位标志,1表示有进位; z:零标志位,1表示运算结果为零;v:溢出标志位,1表示当前运算结果溢出;s:负标志位,1表示当前运算结果为负; 标志位均送入标志寄存器这部分主要要注意的地方就是标志位C和V的数值。溢出标志位OF:在运算过程中,如操作数超出了机器能标似的范围称为溢出,此时OF位置1,否则置0。进位标志CF:记录运算时从最高有效位产生的进位值,例如,执行加法指令时,最高有效位有进位时置1,否则置0。根据这一说明,可以这样判断V和C标志位的值:V:如果正数(符号位为0)与正数之和为负数(符号位为1),或是负数与负数之和为正数,则发生了溢出,V置1;C:两数之和大于1111111111111111,则产生了进位,C置1;被减数小于减数,则产生借位,C置1。另外要注意的是,只有算术运算需要考虑进位和溢出标志位,逻辑运算,除非带C移位和循环,否则无需考虑这两个标志位。以上叙述清楚Quartus仿真结果:对仿真的结果要说明(用箭头指向图中的目标)4.2数据选择器BUS_MUX功能:。组合逻辑器件,其输入包括:源寄存器数据,目标寄存器数据,带符号位扩展的偏移地址,PC,以及从内存读取的立即数、跳转地址等数据。在3位控制信号的控制下它进行ALU 模块A、B端输入的选择:补图I5I4I3ALU_AALU_B000SRDR001SR00100DR011OFFSETPC1000PC1010DATA由Quartus生成的.bsf图如下: 设计思想: 用三位二进制代码代表数据选择器按照什么样的标准选择哪个端口的数据输送到ALU中,数据选择器从控制单元中获得控制序列即相应的二进制代码,得知数据选择的条件,进行选择。数据选择器运行示意图: 端口说明:输入信号:sr:源操作数,来自通用寄存器组;dr:目的操作数,来自于通用寄存器组;alu_in_sel:控制信号,用于控制选择何数据通过数据选择器;data:来自寄存器组或者数据总线;pc:来自PC寄存器,主要用于PC自增操作;offset:偏移地址,与pc相加后找到操作数的地址 输出信号:alu_sr:输出到ALU,参与ALU运算的操作数之一;alu_dr:输出到ALU,参与ALU运算的操作数之一; Quartus仿真结果:对仿真的结果要说明(用箭头指向图中的目标) 4.3器件T1功能:。组合逻辑器件,用于产生ALU的进位输入Cin,受两位控制信号SCI的选择控制,输入为标志寄存的输出FLAG_C: SCICin00001110FLAG_C由Quartus生成的.bsf图如下: 设计思想: 用二位二进制代码表示输入何种进位数据输送到ALU中。具体来说, 当SCI为00,进位alu_cin输出强制为0:;当SCI为01,进位alu_cin输出强制为1;当SCI为10,进位alu_cin输出为标志寄存器的输出。 端口说明:输入信号: flag_c:状态寄存器的c标志位; sci:CU输出的控制信号,用于控制进位数据信号; 输出信号:alu_cin:输出到运算器的进位输入。 Quartus仿真结果:对仿真的结果要说明(用箭头指向图中的目标)4.4标志寄存器FLAG_REG功能:。时序逻辑部件,带有清零端RESET,输出只在时钟正跳变时发生变化;接收ALU的标志位输出,在控制信号SST的控制下输出实际需要的标志位:SSTCZVS00接受ALU的运算结果010ZVS101ZVS11NullNullNulNull由Quartus生成的.bsf图如下: 设计思想:标志码是CPU根据运算结果由硬件设置的位,如运算会产生正、负、零或溢出等结果。标志码可以被测试,作为分支运算的依据。此外,设置两位二进制代码可以对有些标志码进行重置置,如最高进位标志C,可用指令对它置位和复位。端口说明:输入信号:sst: 控制信号,来自控制器;c、z、v、s:标志位, 来自ALU的输出;clk:时钟脉冲 ; reset:复位控制端;输出信号:flag_c,flag_v,flag_s,flag_z:送往控制器;Quartus仿真结果:对仿真的结果要说明(用箭头指向图中的目标)4.5 T2:功能:逻辑器件,将8位的OFFSET(来自指令的低8位)带符号位扩展到16位;由Quartus生成的.bsf图如下: 设计思想: 由于跳转指令偏移为8位,必须扩展为16位数据后,才能与PC相加得到跳转指令的地址。的当指令的第一位为“1”时,扩展后的前8为全部为1;当指令的第一位为“0”时,扩展后的前8位全部为0。 端口说明:输入信号:0ffset7.0:来自CU,为跳转指令的8位的offset; 输出信号:0ffset15.0为扩展后的16位的offset。Quartus仿真结果:对仿真的结果要说明(用箭头指向图中的目标)4.6程序计数器PC功能:时序逻辑器件,16位寄存器,在控制信号pc_en的控制下可接收ALU的运算结果(高电平接收,否则保持不变)。输出送往地址寄存器(读取指令内容)以及数据选择器(进行自增运算)。补图由Quartus生成的.bsf图如下: 设计思想:PC为程序计数器,存放现行指令的地址,具有计数功能。由于在设计中没有设置专门的PC自增电路,所以,PC的运行结果必须送入ALU运算得到下一条指令的地址。端口说明:输入信号:alu_out :来自ALU的运算结果,表示下一条指令的地址;en :控制信号;clk:时钟脉冲信号;reset:复位;输出信号:q:输出信号,送往地址寄存器AR4.7地址寄存器AR和指令寄存器IR:功能:这两个寄存器都是16位的寄存器,地址寄存器用于存放要读写的内存地址单元的地址,输出送往地址总线,输入可能为PC内容,也可能为ALU的输出(对读写内存指令);指令寄存器存放当前执行指令的内容,它的输入来自从内存读取的指令和数据,输出送往控制逻辑。二者共用两位控制信号REC,说明如下:REC操作00无操作01AR接收PC11AR接收ALU输出10IR接收由Quartus生成的.bsf图如下: 设计思想:用二位二进制代码控制相关数据进入地址寄存器或者指令寄存器。在CU的控制下,完成指令和地址的读写。端口说明:AR输入信号:alu_out:alu的运算结果pc:来自程序计数器PC的运算结果rec: 控制信号,主要用于控制AR接收何种数据clk:时钟脉冲reset:复位信号输出信号:q:送往地址总线IR输入信号:mem_data:来自数据总线rec: 控制信号,主要用于控制IR接收何种数据clk:时钟脉冲信号reset:复位信号输出信号:q:送往控制器的指令Quartus仿真结果:对仿真的结果要说明(用箭头指向图中的目标)4.8寄存器、寄存器组和寄存器的选择 本实验中的寄存器都为16位,带有清零端和使能端,实际上在写VHDL程序时,通用寄存器以及AR、IR、PC使用的都是同一个模板。按照我们的设计,通用寄存器共有16个,由指令的低8位的全部或其中的高4位或低4位来从寄存器组中选择源寄存器和目的寄存器。安排寄存器选择器件reg_mux,为组合逻辑器件,用于输出选定寄存器的内容。另外,由控制逻辑给出1位控制信号reg_en,控制是否对选中寄存器进行写操作,也须由寄存器选择器件给出对特定寄存器的写使能信号。不然若由一个使能信号控制全部16个寄存器将对实际不参与写操作的寄存器造成不稳定的情况。为了便于调试时查看寄存器内容,另外由外部输入选定寄存器读出其内容,其中读取通用寄存内容的工作也由这个器件完成。画图说明工作原理由Quartus生成的.bsf图如下: 设计思想:通用寄存器可指定许多功能,可用于存放操作数,也可作为满足某种寻址方式所需的寄存器。在设计中,我们用三个四位二进制代码控制源操作数,目的操作数,和其他数据的在寄存器组中的存储地址,相应的设置三个输出端口分别用于输出源操作数,目的操作数和其他相关数据.端口说明:输入信号:reg 0-15: 通用寄存器,可用于存储相关临时数据;dest_reg:来自控制器,表示源操作数在寄存器组中的存储地址;sour_reg:来自控制器,表示目的操作数在寄存器组中的存储地址;en:来自控制器,控制是否对选中寄存器进行写操作;reg_sel: 由外部输入选定寄存器读出其内容。输出信号: en 0-f:由寄存器选择器件给出对特定寄存器的写使能信号sr:输出到数据选择器dr:送往数据选择器reg_out: 输出由外部输入选定寄存器的内容Quartus仿真结果:对仿真的结果要说明(用箭头指向图中的目标)4.9一位控制信号/WR控制对地址寄存器AR指定的内存地址进行何种操作。低电平为写操作,高电平为读操作。4.10 节拍发生器时序逻辑器件,作用是用多位触发器的输出信号的不同组合状态,来标识每条指令的执行步骤。其功能相当于一个状态机。前文已述,我们设计的节拍发生器共有3位触发器。在编码方面,遵循了这样的原则:从一个状态变到下一个状态时,状态发生变化的触发器数目应尽量少。由Quartus生成的.bsf图如下: 设计思想:节拍发生器作为标记每条指令的执行步骤的器件,其功能相当于一个状态机,在特定的输入下转换到特定的次状态。对我们的节拍设计可画出如下状态转换图:RESET100 s0111 s5011000 s3 s1101 0 s4001 1 s2(输入为指令操作码的最高位)对应在相关节拍CPU的相关活动:上图不清楚?如何解释这张图?端口说明:输入信号:clk:时钟信号; reset:复位信号; instruction:指令信号,获取指令的信号的第15位,用于区分A组指令和B组指令。输出信号:timer:节拍信号Quartus仿真结果:对仿真的结果要说明(用箭头指向图中的目标)4.11控制逻辑组合逻辑器件,前面已提到,它根据指令内容(由IR提供)和指令的执行步骤(由节拍发生器提供)及其他一些条件信号(标志寄存器输出),形成并提供出计算机各部件当前时刻要用到的控制信号。根据前面所总结的全部控制信号的意义、作用和数值,可以比较容易地写出控制逻辑部件。 (过程?)由Quartus生成的.bsf图如下: 设计思想:CU单元接收timer发出的节拍信号,然后在不同的节拍下,进行相应的取指,译码,输出控制信号等操作。具体来说,CU首先将接收的指令的前八位和后八位分开,用于分离操作数和操作码,然后将操作数的前四位和后四位分开,用于区分源操作数和目的操作数,然后根据具体的指令输出相关控制信号。再配合图说明 端口说明: 输入信号:timer:节拍信号,是整个CPU的的统一时钟信号;instruction:来自指令寄存器,存放即将执行的指令c:进位标志位,来自标志寄存器;z:零标志位,来自标志寄存器;v:溢出标志位,来自标志寄存器;s:负标志位,来自标志寄存器;输出信号:dest_reg:目的操作数寄存器地址,由控制器经过译码输出;sour_reg:目的操作数寄存器地址,由控制器经过译码输出;offset : 8位偏移地址,经过扩展后为16位sst:控制信号,输出到标志寄存器,控制相关标志位的输出;sci:控制信号,输出到器件T1,控制标志位c的相关输出;rec:控制信号,控制IR和AR接收相关数据;alu_func:控制信号,输出到ALU,控制alu进行何种算逻运算;alu_in_sel: 控制信号,输出到数据选择器,控制数据选择器的输出数据;en_reg: 控制信号,输出到寄存器组,寄存器组的使能信号;en_pc: 控制信号,输出到PC部件,PC寄存器的使能信号;wr: 控制信号,输出到t3部件,控制读写操作。综上,在对指令寄存器中的指令进行译码后由控制逻辑产生了15位控制信号,共同控制着ALU和寄存器完成各种操作。下表是各指令的具体控制信号值:准备解释这张表的形成过程(方法)节拍指令编码SciSSTI7I6I5I4I3I2I1I0/WRREC注释000011110100000101AR-PC,PC-PC+1001001100000000110IR-MEM011ADD00000000000001000000100DR-DR+SRSUB00000001000001000001100DR-DR-SRAND00000010000001000010100DR-DR and SRCMP00000011000000000001100DR-SRXOR00000100000001000100100DR-DR xor SRTEST00000101000000000010100DR and SROR00000110000001000011100D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 63522-32:2025 EN-FR Electrical relays - Tests and measurements - Part 32: Acoustic noise
- 2025年药剂师执业资格考试试卷及答案
- 2025年网络营销师考试卷及答案
- 2025年地理信息系统应用与开发知识测验试题及答案
- 2025年动物医学专业基础考试试卷及答案
- 2025年茶艺师职业资格考试卷及答案
- 2025年环境科学与工程专业考试题及答案的复习卷
- 2025年互联网经济与金融创新考试试卷及答案
- 2025年搪瓷制品相关日用品生产设备合作协议书
- 万安保安考试题及答案大全
- 租赁换电定制合同协议
- 玻璃高空吊装合同协议
- 2025标准技术咨询服务合同模板
- 1.3 科学的世界观和方法论 课件-高中政治统编版必修四哲学文化
- 慢性肾脏病肌少症诊断治疗与预防专家共识(2024年版)解读
- 砸墙拆除合同
- 初级会计师考试历年真题试题及答案
- 汽车制造业产品质量管理措施
- 中国老年患者术后谵妄防治专家共识
- 科学上海会考试卷及答案
- 大模型备案-落实算法安全主体责任基本情况-XX集团有限公司
评论
0/150
提交评论