简单16位CPU的设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

简单CPU的设计设计步骤:1)确定CPU功能2)拟定指令系统(采用MIPS)3)分析指令系统,为数据通路选择合适的组件,并给出组件所需的控制信号,连接组件建立数据通路4)详细分析指令在多周期通路中的执行过程,给出指令执行的流程图5)依据指令执行的流程图,分析控制信号的取值,生成相应的状态转换图一、确定CPU功能M[2]←M[0]+M[1]二、拟定指令系统J类型OPTarget4位12位指令格式中的op(opcode)是指令操作码。rs(registersource)是源操作数的寄存器号。rd(registerdestination)是目的寄存器号。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,imm6指令操作码OP所属的指令格式Fun备注ADD0000R001R[rd]←R[rs]+R[rt]无符号加法SUB0000R010R[rd]←R[rs]-R[rt]无符号减法AND0000R011R[rd]←R[rs]&R[rt]逻辑与OR0000R100R[rd]←R[rs]|R[rt]逻辑或XOR0000R101R[rd]←R[rs]⊕R[rt]逻辑异或LW0001IR[rt]←M[R[rs]+Imm]主存中内容写入寄存器SW0010IM[R[rs]+Imm]←R[rt]寄存器中内容回写到主存存放在ROM中的汇编指令,完成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)00010000010000001LWR2,1(R0)00010000100000012ADDR3,R1,R200000010100110013SWR3,2(R0)00100000110000104INCR4,R300000110101001115SWR4,3(R0)00100001000000116ANDR5,R1,R200000010101010117ORR6,R1,R200000010101101008XORR7,R3,R400000111001111019SWR5,4(R0)001000010100010010SWR6,5(R0)001000011000010111SWR7,6(R0)001000011100011012NOTR3,R1000000100101111013SUBR4,R1,R2000000101010001014BEQR1R2011000101000000115SWR3,7(R0)001000001100011116SWR4,8(R0)001000010000100017LWR1,2(R0)000100000100001018LWR2,3(R0)000100001000001119J(2)0011000000000001LW表示读取数据,SW表示存储数据,BEQ表示相等就跳转,J表示直接跳转到某个地址三、根据指令的需求,连接组件,形成多周期的数据通路irwr,pcwr,regwr,aluoutregwr,memwr,lmdwr:相应组件的写使能控制信号,为1时,有效Regdst:为1时选择RD;为0时选择RT.Signex:为1时扩展器进行符号扩展;为0时扩展器进行零扩展。Aluselb:为1时选择暂存器B;为0时选择扩展器的输出端。Alufunc:0000与运算;0001或运算;0010异或;0011取反;0100加;0101减Memtoreg:为1时选择LMD;为0时选择aluoutput关键组件1)寄存器及寄存器组设计带复位(清零)、写使能控制功能的16位寄存器(PC),当复位信号为1时,寄存器输出0,否则,在时钟下降沿且写使能信号有效时将输入数据传送至输出端。设计带写使能控制功能的16位寄存器(ALUO、LMD),在时钟下降沿且写使能信号有效时将输入数据传送至输出端。设计暂存器(暂存器A、B),在时钟下降沿将输入数据传送至输出端。设计指令寄存器(IR),在时钟下降沿且写使能信号有效时将输入指令传送至输出端,并且分解出指令的op、rs、rt、rd、func、imm字段。设计由8个寄存器构成的16位通用寄存器组。通用寄存器组有两个读口,ReadOne和ReadTwo分别读出由RegOne和regTwo指定编号的寄存器中的信息,读操作属于组合逻辑操作,不需时钟控制;有一个写口,WriteData上的信息写入由WriteReg指定编号的寄存器中,写操作属于时序逻辑操作,需要clk时钟信号的控制,在WriteEnable为1的情况下,clk下降沿完成信息的写入。图1PC元件图符图2寄存器元件图符图3暂存器元件图符图4IR元件图符图5寄存器组的元件图符2)RAM及ROM设计存储容量为64×16的RAM写操作为时序逻辑操作,当时钟clock下降沿到来且wren=1的情况下,data开始写入由address指定的存储单元中;读操作为组合逻辑操作,address有效后,q输出address指定的存储单元的内容.定制初始化数据文件,建立MemoryInitializationFile(.mif)文件,选择File→New命令,并在New窗口选择Otherfile选项,再选择MemoryInitializationFile选项。出现如图1所示的窗口,指定存储容量,字的个数输入64,字长输入16。之后,出现如图2所示的窗口,向存储单元中输入初始化数据,选择地址及存储内容采用16进制。输入数据后保存文件,文件名ram1.mif。初始化0单元数据为90H,1单元数据为60H。图1指定存储容量窗口图2初始化数据窗口设计存储容量为64×16的ROMROM为只读存储器,读操作为组合逻辑操作,Q输出由ADDRESS指定的存储单元的内容。3)ALU设计具有下列功能的16位ALU功能选择输入func[3..0]操作0000c←Aandb0001c←Aorb0010c←Axorb0011c←Nota0100c←A+b0101c←a-b0110Ifabthenc←1elsec←0其它c←aa[15..0]b[15..0]func[3..0]c[15..0]alu_16instALU的元件图符4)指令执行流程图5)状态转换图

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功