华侨大学《现代计算机组成原理》8位CPU设计报告CPU主要由算术逻辑单元ALU,数据暂存寄存器DR1、DR2,数据寄存器R0~R2,程序计数器PC,地址寄存器AR,程序/数据存储器MEMORAY,指令寄存器IR,微控制器uC,输入单元INPUT和输出单元OUTPUT所组成。系统框图如下:各独立器件设计如下:移位器的VHDL语言及其仿真结果:语言如下:LibraryIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSHEFTISPORT(T2,T3,Ci,Ci_A,RST:INSTD_LOGIC;M:INSTD_LOGIC_VECTOR(3DOWNTO0);D:INSTD_LOGIC_VECTOR(7DOWNTO0);Q:OUTSTD_LOGIC_VECTOR(7DOWNTO0);CO:OUTSTD_LOGIC);ENDENTITY;ARCHITECTUREBEHAVOFSHEFTISSIGNALREG:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALSM0:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALSM1:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALCY0:STD_LOGIC;SIGNALCY1:STD_LOGIC;BEGINPROCESS(T2,SM0,Ci_A)BEGINSM0=M(3DOWNTO2)&M(0);IFRST='0'THENIF(T2'EVENTANDT2='1')THENCASESM0ISWHEN011=REG(0)=Ci_A;REG(3DOWNTO1)=REG(2DOWNTO0);CY0=REG(3);--带进位循环左移WHEN010=REG(0)=REG(3);REG(3DOWNTO1)=REG(2DOWNTO0);--循环左移WHEN100=REG(3)=REG(0);REG(2DOWNTO0)=REG(3DOWNTO1);--循环右移WHEN101=REG(3)=Ci_A;REG(2DOWNTO0)=REG(3DOWNTO1);CY0=REG(0);--带进位循环右移WHEN110=REG(3DOWNTO0)=D(3DOWNTO0);--加载待移位数WHENOTHERS=REG(3downto0)=REG(3downto0);CY0=CY0;--保持ENDCASE;ENDIF;ELSEREG(3DOWNTO0)=0000;ENDIF;ENDPROCESS;PROCESS(T3,SM1,Ci)BEGINSM1=M(3DOWNTO1);IFRST='0'THENIF(T3'EVENTANDT3='1')THENCASESM1ISWHEN011=REG(4)=Ci;REG(7DOWNTO5)=REG(6DOWNTO4);CY1=REG(7);--带进位循环左移WHEN010=REG(4)=REG(7);REG(7DOWNTO5)=REG(6DOWNTO4);--循环左移WHEN100=REG(7)=REG(4);REG(6DOWNTO4)=REG(7DOWNTO5);--循环右移WHEN101=REG(7)=Ci;REG(6DOWNTO4)=REG(7DOWNTO5);CY1=REG(4);--带进位循环右移WHEN110=REG(7DOWNTO4)=D(7DOWNTO4);--加载待移位数WHENOTHERS=REG(7downto4)=REG(7downto4);CY1=CY1;--保持ENDCASE;ENDIF;ELSEREG(7DOWNTO4)=0000;CY1='0';ENDIF;ENDPROCESS;Q(7DOWNTO0)=REG(7DOWNTO0);CO=CY1;ENDBEHAV;仿真波形:当T2的上升沿到来时,SM0=011时将产生低四位的带进位循环左移,SM0=010时将产生低四位循环左移,SM0=100时将产生低四位的循环右移,SM0=101时将产生带进位低四位循环右移,当T3的上升沿到来时,SM0=011时将产生低四位的带进位循环左移,SM0=010时将产生低四位循环左移,SM0=100时将产生低四位的循环右移,SM0=101时将产生带进位低四位循环右移。ALU单元模块:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYALU181ISPORT(S:INSTD_LOGIC_VECTOR(3DOWNTO0);A:INSTD_LOGIC_VECTOR(7DOWNTO0);B:INSTD_LOGIC_VECTOR(7DOWNTO0);F:OUTSTD_LOGIC_VECTOR(7DOWNTO0);COUT:OUTSTD_LOGIC_VECTOR(3DOWNTO0);M:INSTD_LOGIC;CN:INSTD_LOGIC;CO:OUTSTD_LOGIC;FZ:OUTSTD_LOGIC);ENDALU181;ARCHITECTUREbehavOFALU181ISSIGNALA9:STD_LOGIC_VECTOR(8DOWNTO0);SIGNALB9:STD_LOGIC_VECTOR(8DOWNTO0);SIGNALF9:STD_LOGIC_VECTOR(8DOWNTO0);BEGINA9='0'&A;B9='0'&B;PROCESS(M,CN,A9,B9)BEGINCASESISWHEN0000=IFM='0'THENF9=A9+CN;ELSEF9=NOTA9;ENDIF;WHEN0001=IFM='0'THENF9=(A9ORB9)+CN;ELSEF9=NOT(A9ORB9);ENDIF;WHEN0010=IFM='0'THENF9=(A9OR(NOTB9))+CN;ELSEF9=(NOTA9)ANDB9;ENDIF;WHEN0011=IFM='0'THENF9=000000000-CN;ELSEF9=000000000;ENDIF;WHEN0100=IFM='0'THENF9=A9+(A9ANDNOTB9)+CN;ELSEF9=NOT(A9ANDB9);ENDIF;WHEN0101=IFM='0'THENF9=(A9ORB9)+(A9ANDNOTB9)+CN;ELSEF9=NOTB9;ENDIF;WHEN0110=IFM='0'THENF9=A9-B9-CN;ELSEF9=A9XORB9;ENDIF;WHEN0111=IFM='0'THENF9=(A9AND(NOTB9))-CN;ELSEF9=A9AND(NOTB9);ENDIF;WHEN1000=IFM='0'THENF9=A9+(A9ANDB9)+CN;ELSEF9=(NOTA9)ORB9;ENDIF;WHEN1001=IFM='0'THENF9=A9+B9+CN;ELSEF9=NOT(A9XORB9);ENDIF;WHEN1010=IFM='0'THENF9=(A9OR(NOTB9))+(A9ANDB9)+CN;ELSEF9=B9;ENDIF;WHEN1011=IFM='0'THENF9=(A9ANDB9)-CN;ELSEF9=A9ANDB9;ENDIF;WHEN1100=IFM='0'THENF9=A9+A9+CN;ELSEF9=000000001;ENDIF;WHEN1101=IFM='0'THENF9=(A9ORB9)+A9+CN;ELSEF9=A9OR(NOTB9);ENDIF;WHEN1110=IFM='0'THENF9=(A9OR(NOTB9))+A9+CN;ELSEF9=A9ORB9;ENDIF;WHEN1111=IFM='0'THENF9=A9-CN;ELSEF9=A9;ENDIF;WHENOTHERS=F9=000000000;ENDCASE;IF(A9=B9)THENFZ='0';ENDIF;ENDPROCESS;F=F9(7DOWNTO0);CO=F9(8);COUT=0000WHENF9(8)='0'ELSE0001;ENDbehav;仿真波形:当M='0'时,进行算术运算,当M='1'时,进行逻辑运算。当M='0'时,S=0000,进行F9=A9+CN算术运算,当M='0'时,S=0001,进行F=(A+B)加1算术运算,……当M='1'时,S=0000,进行F=“A的非”算术运算,当M='1'时,S=0001,进行F=“A+B的非”算术运算,……S是ALU的操作选择信号,A和B分别是参加算术运算和逻辑运算的两个八位输入操作数,F是ALU运算后的八位数据输出结果,CN是进入ALU进行算术运算的低位进位位,或进行逻辑运算的进位标志,M是进行算术运算或逻辑运算的控制信号位,当M='0'时,进行算术运算,当M='1'时,进行逻辑运算。C0是运算结果产生进位或借位的输出标志位,FZ是运算结果为零的输出标志位,COUNT是输出标志位。连续节拍发生电路:原理:4个D触发器组成,可产生4个等间隔的时序信号T1~T4,其中CLK1为时钟信号,由实验台右边的方波信号源clock0提供,可产生1Hz~12MHz的方波信号频率。实验者可根据实验自行选择信号频率。当RST1为低电平时,T1输出为“1”,而T2、T3、T4输出为“0”;当RST1由低电平变为高电平后,T1~T4将在CLK1的输入脉冲作用下,周期性地轮流输出正脉冲,机器进入连续运行状态。仿真波形如下:器件lpm_latch:仿真波形:当date的上升沿到来时,输入传送到输出。整体结构图:各信号的功能如下(1)uA5—uAo。微程序控制器的微地址输出信号,是下一条要执行的微指令的地址。(2)s3、s2、sl、so、——由微程序控制器输出的ALU操作选择信号,以控制执行16种算术操作或16种逻辑操作中的一种操作。(3)M——微程序控制输出的A上u操作方式选择信号端。M=0执行算术操作;M=l执行逻辑操作。(4)cn——输出的进位标志信号,cn=o表示ALU运算时最低位有进位cn=1,则表示无进位。(5)WE——微程序控制器输出的RAM徽制信号。当/CE=0时,如WE=0为存储器读;如WE=1为存储器写。(6)IR7一IR5。指令寄存器IR7、IR6、IR5输出信号.输入至微程序控制器作为修改微地址用的控制信号。(7)T4。微程序控制器的T4时序信号输入端。(8)T2。微程序控制器的T2时序信号输入端。(9)QA—QD。时钟源输出信号端,QA输出频率为250kIk,QB输出频率为500Hz,QC输出频率为1MHz、QD输出频率为2MHz。(10)T1一T4——时序信号发生器提供的四个标准输出信号,可以采用单拍或连续两种方式输出。(11)SRD——微程序控制器的微地址修改信号。将SRD接逻辑开关,先按下CLR清零键,使微地址为全“0”时,将逻辑开关从“1”—“0”—“1”,(相当于负脉冲),微地址修改为01000,使机器处于读RAM的微程序。(12)/CLR——清“0”信号输入端,可与单次脉冲P0、P1、P2之中任一个按键相连。(13)LDAR——微程序控制器的输入信号,将程序计数器的内容打入到存储器地址寄存器AR中,产生访问RAM的地址。(14)/CE——微程序控制器输出的RAM选片情号,/CE=0时,6ll6RAM芯片被选中。(15)T1-T4——功能同6,为增强带负载能力.分2组输出。(17)LDPC——微程序控制器输出的PC打入信号。(18)LOAD——微程序控制器的输出信号。LOAD=0时,PC(程序计数器)处于并行置数状态;LOAD=1时,PC处于计数状态。(19)ALU_B——微程序控制器输出信号,控制运算器的运算结果是否送到总线BUS.低电平有效。(20