计算机组成原理实验题目8位CPU得系统设计学号1115106046姓名魏忠淋班级 11电子B 班指导老师凌朝东华侨大学电子工程系8位CPU得系统设计一、实验要求与任务完成从指令系统到CPU得设计,编写测试程序,通过运行测试程序对CPU设计进行正确性评定。
具体内容包括:典型指令系统(包括运算类、转移类、访存类)设计;CPU结构设计;规则文件与调试程序设计;CPU调试及测试程序运行。
1。
1设计指标能实现加减法、左右移位、逻辑运算、数据存取、有无条件跳转、内存访问等指令;1、2设计要求画出电路原理图、仿真波形图;二、CPU得组成结构三、元器件得选择1.运算部件(ALU)ALU181得程序代码:LIBRARY IEEE;USEIEEE、STD_LOGIC_1164。
ALL;USEIEEE、STD_LOGIC_UNSIGNED.ALL;ENTITY ALU181 ISPORT(S: IN STD_LOGIC_VECTOR(3 DOWNTO0 );A:IN STD_LOGIC_VECTOR(7 DOWNTO0);B: INSTD_LOGIC_VECTOR(7DOWNTO 0);F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);ﻩCOUT:OUTSTD_LOGIC_VECTOR(3 DOWNTO0);M :INSTD_LOGIC;CN : IN STD_LOGIC;CO,FZ:OUT STD_LOGIC );END ALU181;ARCHITECTURE behav OF ALU181 ISSIGNALA9 :STD_LOGIC_VECTOR(8DOWNTO 0);SIGNAL B9 : STD_LOGIC_VECTOR(8 DOWNTO0);SIGNALF9: STD_LOGIC_VECTOR(8 DOWNTO0);BEGINA9<= '0'& A; B9 <= ’0’&B;PROCESS(M,CN,A9,B9)BEGINCASE S ISWHEN "0000" =〉IF M='0’THEN F9<=A9 + CN ; ELSE F9<=NOT A9; E NDIF;WHEN "0001" =>IF M='0’THEN F9<=(A9 orB9)+ CN ;ELSE F9〈=NOT(A9OR B9);END IF;WHEN ”0010"=> IF M=’0’THEN F9〈=(A9 or(NOT B9))+C N; ELSE F9<=(NOT A9) ANDB9; ENDIF;WHEN "0011"=> IF M='0’THEN F9<= ”000000000"—CN ;ELSEF9<="000000000”;END IF;WHEN"0100”=> IFM='0'THENF9<=A9+(A9 ANDNOT B9)+ CN; ELSE F9〈=NOT(A9 ANDB9);END IF;WHEN ”0101”=>IFM='0' THENF9<=(A9orB9)+(A9 AND NOTB9)+CN ;ELSEF9<=NOT B9; END IF;WHEN"0110" =>IFM=’0’THEN F9〈=(A9- B9) -CN ;ELSE F9〈=A9XOR B9; ENDIF;WHEN”0111"=>IF M='0' THEN F9〈=(A9 or(NOT B9)) -CN ;ELSE F9<=A9 and (NOT B9); END IF;WHEN"1000" =>IFM='0'THEN F9<=A9+ (A9AND B9)+CN ; ELSE F9〈=(NOTA9)and B9; END IF;WHEN "1001”=> IF M=’0’THEN F9〈=A9+ B9 + CN ; ELSE F9<=NOT(A9 XOR B9); ENDIF;WHEN ”1010"=>IF M=’0'THEN F9〈=(A9or(NOTB9))+(A 9AND B9)+CN ; ELSEF9<=B9;END IF;WHEN "1011”=〉IF M='0'THENF9<=(A9 AND B9)- C N; ELSE F9<=A9 ANDB9; ENDIF;WHEN ”1100”=〉IF M='0'THENF9<=(A9 +A9) + CN; ELSEF9〈="000000001"; END IF;WHEN "1101”=〉IF M='0' THEN F9〈=(A9or B9)+ A9 + CN;ELSEF9〈=A9 OR (NOTB9); END IF;WHEN "1110"=>IF M='0'THENF9<=((A9 or (NOTB9)) +A9) + CN; ELSE F9〈=A9OR B9;END IF;WHEN”1111”=〉IFM=’0'THENF9<=A9 —CN ;ELSE F9<=A9 ; END IF;WHEN OTHERS=> F9<= ”000000000" ;ENDCASE;IF(A9=B9) THENFZ<=’0';END IF;ﻩEND PROCESS;F<=F9(7DOWNTO0) ;CO<= F9(8) ;COUT<="0000"WHEN F9(8)=’0'ELSE"0001";END behav;ALU得原理图:2、微控制器实现信息传送要靠微命令得控制,因此在CPU 中设置微命令产生部件,根据控制信息产生微命令序列,对指令功能所要求得数据传送进行控制,同时在数据传送至运算部件时控制完成运算处理。
微命令产生部件可由若干组合逻辑电路组成,也可以由专门得存储逻辑组成、产生微命令得方式可分为组合逻辑控制方式与微程序控制方式两种。
在本章所介绍得8 位模型CPU 设计中,采用微程序控制方式通过微程序控制器与微指令存储器产生微命令,因此此CPU 属于复杂指令CISC CPU、微控制器得原理图:3、寄存器组计算机工作时,CPU 需要处理大量得控制信息与数据信息。
例如对指令信息进行译码,以便产生相应控制命令对操作数进行算术或逻辑运算加工,并且根据运算结果决定后续操作等。
因此,在CPU 中需要设置若干寄存器,暂时存放这些信息。
在模型CPU中,寄存器组由R0、R1、R2所组成、寄存器组得原理图:3、地址寄存器CPU 访问存储器,首先要找到需要访问得存储单元,因此设置地址寄存器(AR)来存放被访单元得地址。
当需要读取指令时,CPU 先将PC得内容送入AR,再由AR将指令地址送往存储器、当需要读取或存放数据时,也要先将该数据得有效地址送入AR,再对存储器进行读写操作。
地址寄存器得原理图:4。
指令寄存器指令寄存器(IR)用来存放当前正在执行得指令,它得输出包括操作码信息、地址信息等,就是产生微命令得主要逻辑依据。
指令寄存器得原理图:5、程序计数器程序计数器(PC)也称指令指针,用来指示指令在存储器中得存放位置。
当程序顺序执行时,每次从主存取出一条指令,PC 内容就增量计数,指向下一条指令得地址。
增量值取决于现行指令所占得存储单元数。
如果现行指令只占一个存储单元,则PC 内容加1;若现行指令占了两个存储单元,那么PC 内容就要加2。
当程序需要转移时,将转移地址送入PC,使PC指向新得指令地址、因此,当现行指令执行完,PC中存放得总就是后续指令得地址;将该地址送往主存得地址寄存器AR,便可从存储器读取下一条指令、程序计数器得原理图:四、系统总电路图及原理系统原理:该CPU 主要由算术逻辑单元ALU,数据暂存寄存器DR1、DR2,数据寄存器R0~R2,程序计数器PC,地址寄存器AR,程序/数据存储器MEMORAY,指令寄存器IR,微控制器uC,输入单元INPUT 与输出单元OUTPUT 所组成。
图中虚线框内部分包括运算器、控制器、程序存储器、数据存储器与微程序存储器等,实测时,它们都可以在单片FPGA中实现。
虚线框外部分主要就是输入/输出装置,包括键盘、数码管、LCD 显示器等,用于向CPU 输入数据,或CPU 向外输出数据,以及观察CPU 内部工作情况及运算结果。
五、波形仿真仿真波形图:分析:(1)M输出微指令01800,控制台执行P(4),进行“读、写、运行”功能判断、检测到SWA、SWB=11后,进入程序运行RP(11)方式。
(2)执行微地址为23得微指令,M输出微指令为018001,后续微地址uA为01.然后进入程序运行得流程。
(3)执行微地址为01得M微指令008001,执行得操作为PC→AR=00H,PC+1=01H,AR指向RAM存储器地址00H,后续地址uA为02、(4)执行微地址为02得M微指令01ED82,执行取指令操作,取出第一条指令得操作码,经过分支判断P(1),这就是一条输入指令IN、(5)执行微地址为10得M微指令00C048,将RAM中得指令00通过内部总线BUS,送指令寄存器IR:RAM(00H)=00→BUS→IR=00H。
(6)执行微地址为01得M微指令001001,SW_B为高电平,允许SW得数据送往数据总线BUS,由此接收数据56H。
所以R0=56H。
(7)执行微地址为02得M微指令01ED82,执行取指令操作:PC→AR=01H,PC+1=02H,AR指向RAM存储器地址01H,后续微地址uA为02、(8)执行微地址09得M微指令00C048,取指令,并经过分支判断P(1),读出地址为01H单元得内容10H,经过BUS送到指令寄存器IR:RAM(01H)=10H→B US→IR=10H。
(9)执行微地址为03得M微指令01ED83,进入加法运算微程序、通过间接寻址获得另一个操作数,地址寄存器AR指向取数得间接地址:PC→AR=02H,PC+1=03H,AR指向RAM得02单元。
(10)执行微地址为04得M微指令00E004,RAM_B为高电平,RAM得(02)单元得内容通过BUS送AR,取数地址(AR)=0AH,RAM(02)=0AH→BUS→AR=0AH。
(11)执行微地址为05得M微指令00B005,RAM_B为高电平,RAM得(0A H)单元得内容34H送到BUS,此时LDDR2为高电平,BUS上得数据就送给了DR2,执行结果:RAM(0AH)=34H→BUS→DR2=34H。