资源描述:
《简单16位CPU的设计.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、简单CPU的设计设计步骤:1)确定CPU功能2)拟定指令系统(采用MIPS)3)分析指令系统,为数据通路选择合适的组件,并给出组件所需的控制信号,连接组件建立数据通路4)详细分析指令在多周期通路中的执行过程,给出指令执行的流程图5)依据指令执行的流程图,分析控制信号的取值,生成相应的状态转换图一、确定CPU功能M[2]←M[0]+M[1]二、拟定指令系统J类型OPTarget4位12位指令格式中的op(opcode)是指令操作码。rs(registersource)是源操作数的寄存器号。rd(registerdes
2、tination)是目的寄存器号。rt(registertarget)即可作为源寄存器号,又可作为目的寄存器号,有具体的指令决定。func(function)可被认为是扩展的操作码,Target表示一下个地址开始注:操作码4位,寄存器字段rs,rt,rd各三位,Fun功能字段3位,Imm立即值字段6位;一共8个寄存器,R0只读不可写,恒为0。R类型的指令ADDRd,Rs,RtSUBRd,Rs,RtANDRd,Rs,RtORRd,Rs,RtXORRd,Rs,RtI类型的指令LWRt,Rs,imm6SWRt,Rs,im
3、m6指令操作码OP所属的指令格式Fun备注ADD0000R001R[rd]←R[rs]+R[rt]无符号加法SUB0000R010R[rd]←R[rs]-R[rt]无符号减法AND0000R011R[rd]←R[rs]&R[rt]逻辑与OR0000R100R[rd]←R[rs]
4、R[rt]逻辑或XOR0000R101R[rd]←R[rs]⊕R[rt]逻辑异或LW0001IR[rt]←M[R[rs]+Imm]主存中内容写入寄存器SW0010IM[R[rs]+Imm]←R[rt]寄存器中内容回写到主存存放在ROM中的汇
5、编指令,完成M[2]←M[0]+M[1]LWR1,0(R0);R1←M[R[0]+0],由于R(0)内容为0,即R1←M[0]LWR2,1(R0);R1←M[R[0]+1],由于R(0)内容为0,即R1←M[1]ADDR3,R1,R2;R3←R1+R2SWR3,2(R0);M[R[0]+2]←R3下面地址对应着rom模块里面ROM地址汇编指令机器指令0LWR1,0(R0)00010000011LWR2,1(R0)00010000102ADDR3,R1,R200000010100110013SWR3,2(R0)001
6、00000114INCR4,R300000110101001115SWR4,3(R0)00100001006ANDR5,R1,R200000010101010117ORR6,R1,R200000010101101008XORR7,R3,R400000111001111019SWR5,4(R0)001000010110SWR6,5(R0)001000011011SWR7,6(R0)001000011112NOTR3,R1000000100101111013SUBR4,R1,R2000000101010001014BE
7、QR1R2011000101000000115SWR3,7(R0)001000001116SWR4,8(R0)001000010017LWR1,2(R0)000100000118LWR2,3(R0)000100001019J(2)0011000000LW表示读取数据,SW表示存储数据,BEQ表示相等就跳转,J表示直接跳转到某个地址一、根据指令的需求,连接组件,形成多周期的数据通路irwr,pcwr,regwr,aluoutregwr,memwr,lmdwr:相应组件的写使能控制信号,为1时,有效Regdst:为1时
8、选择RD;为0时选择RT.Signex:为1时扩展器进行符号扩展;为0时扩展器进行零扩展。Aluselb:为1时选择暂存器B;为0时选择扩展器的输出端。Alufunc:0000与运算;0001或运算;0010异或;0011取反;0100加;0101减Memtoreg:为1时选择LMD;为0时选择aluoutput关键组件1)寄存器及寄存器组l设计带复位(清零)、写使能控制功能的16位寄存器(PC),当复位信号为1时,寄存器输出0,否则,在时钟下降沿且写使能信号有效时将输入数据传送至输出端。l设计带写使能控制功能的1
9、6位寄存器(ALUO、LMD),在时钟下降沿且写使能信号有效时将输入数据传送至输出端。l设计暂存器(暂存器A、B),在时钟下降沿将输入数据传送至输出端。l设计指令寄存器(IR),在时钟下降沿且写使能信号有效时将输入指令传送至输出端,并且分解出指令的op、rs、rt、rd、func、imm字段。l设计由8个寄存器构成的16位通用寄存器组。通用寄存器组有两个读口