杭电计组实验8-实现R型指令的CPU设计实验精编版

……………………………………………………………最新资料推荐………………………………………………… 1 实验报告 2018 年 6 月 1 日 成绩: 姓名 阳光男 学号 16041321 班级 16052317

专业 计算机科学与技术 课程名称 《计算机组成原理与系统结构试验》

任课老师 张翔老师 指导老师 张翔老师 机位号 无

实验序号 8 实验名称 《实验八 实现R型指令的CPU设计实验》 实验时间 2018/5/25 实验地点 1教225 实验设备号 个人电脑

一、实验程序源代码 顶层LED测试模块: module Top_LED(clk,rst,SW,LED); input clk,rst; input [2:0]SW; output reg[7:0]LED; wire ZF,OF; wire [31:0]ALU_F; top_R_cpu test_cpu(rst,clk,ZF,OF,ALU_F); always@(*) begin case(SW) 3'b000:LED=ALU_F[7:0]; 3'b001:LED=ALU_F[15:8]; 3'b010:LED=ALU_F[23:16]; 3'b011:LED=ALU_F[31:24]; 3'b100:begin LED[7:2]=0;LED[1]=OF;LED[0]=ZF;end default:LED=0; endcase end endmodule ……………………………………………………………最新资料推荐………………………………………………… 2 顶层R型CPU模块: module top_R_cpu(input rst,input clk,output ZF,output OF,output [31:0]F); reg write_reg; wire [31:0]Inst_code; wire [31:0]R_Data_A; wire [31:0]R_Data_B; reg [2:0]ALU_OP; pc pc_connect(clk,rst,Inst_code); Register_file R_connect(Inst_code[25:21],Inst_code[20:16], Inst_code[15:11],write_reg,F,~clk,rst, R_Data_A,R_Data_B); ALU ALU_connect(R_Data_A,R_Data_B,F,ALU_OP,ZF,OF); always@(*) begin write_reg=0; ALU_OP=0; if(Inst_code[31:26]==0) begin case(Inst_code[5:0]) 6'b100000:ALU_OP=3'b100; 6'b100010:ALU_OP=3'b101; 6'b100100:ALU_OP=3'b000; 6'b100101:ALU_OP=3'b001; 6'b100110:ALU_OP=3'b010; 6'b100111:ALU_OP=3'b011; 6'b101011:ALU_OP=3'b110; 6'b000100:ALU_OP=3'b111; endcase write_reg=1; end end endmodule

PC取指令模块: ……………………………………………………………最新资料推荐………………………………………………… 3 module pc(input clk,input rst,output [31:0]Inst_code); reg [31:0]PC; wire[31:0]PC_new; initial PC<=32'h00000000; Inst_ROM Inst_ROM1 ( .clka(clk), .addra(PC[7:2]), .douta(Inst_code) ); assign PC_new={24'h000000,PC_new[7:0]}; always@(negedge clk or posedge rst) begin if(rst) PC=32'h00000000; else PC=PC_new; end endmodule

寄存器堆模块: module Register_file(R_Addr_A,R_Addr_B,W_Addr,Write_Reg,W_Data,Clk,Reset,R_Data_A,R_Data_B); input [4:0]R_Addr_A; input [4:0]R_Addr_B; input [4:0]W_Addr; input Write_Reg; input [31:0]W_Data; input Clk; input Reset; output [31:0]R_Data_A; output [31:0]R_Data_B; reg [31:0]REG_Files[0:31]; reg [5:0]i; initial//仿真过程中的初始化 ……………………………………………………………最新资料推荐………………………………………………… 4 begin for(i=0;i<=31;i=i+1) REG_Files[i]=0; end assign R_Data_A=REG_Files[R_Addr_A]; assign R_Data_B=REG_Files[R_Addr_B]; always@(posedge Clk or posedge Reset) begin if(Reset) for(i=0;i<=31;i=i+1) REG_Files[i]=0; else if(Write_Reg&&W_Addr!=0) REG_Files[W_Addr]=W_Data; end endmodule

ALU算术逻辑运算单元模块: module ALU(A,B,F,ALU_OP,ZF,OF); input [31:0]A,B; input [2:0]ALU_OP; output reg ZF,OF; output reg[31:0]F; reg C32; always@(*) begin OF=1'b0; C32=1'b0; case(ALU_OP) 3'b000:F=A&B; 3'b001:F=A|B; 3'b010:F=A^B; 3'b011:F=~(A^B); 3'b100:begin {C32,F}=A+B;OF=A[31]^B[31]^F[31]^C32;end ……………………………………………………………最新资料推荐………………………………………………… 5 3'b101:begin {C32,F}=A-B;OF=A[31]^B[31]^F[31]^C32;end 3'b110: if(AF=1; else F=0; 3'b111:F=B

测试代码: module test;

// Inputs reg rst; reg clk;

// Outputs wire ZF; wire OF; wire [31:0] F;

// Instantiate the Unit Under Test (UUT) top_R_cpu uut ( .rst(rst), .clk(clk), .ZF(ZF), .OF(OF), .F(F) ……………………………………………………………最新资料推荐………………………………………………… 6 );

initial begin // Initialize Inputs rst = 0; clk = 0;

// Wait 100 ns for global reset to finish #100; clk=1; // Add stimulus here

forever begin #50; clk=~clk; end end

endmodule

二、仿真波形

三、电路图 ……………………………………………………………最新资料推荐…………………………………………………

7 顶层电路模块

顶层电路内部结构: ……………………………………………………………最新资料推荐…………………………………………………

8 四、引脚配置(约束文件) NET "LED[7]" LOC = T11; NET "LED[6]" LOC = R11; NET "LED[5]" LOC = N11; NET "LED[4]" LOC = M11; NET "LED[3]" LOC = V15; NET "LED[2]" LOC = U15; NET "LED[1]" LOC = V16; NET "LED[0]" LOC = U16; NET "SW[2]" LOC = V9; NET "SW[1]" LOC = T9; NET "SW[0]" LOC = T10; NET "clk" LOC = C9; NET "rst" LOC = C4;

五、思考与探索 (1)R型指令CPU实验结果记录表 序号 指令 执行结果 标志 结论 1 0000827 FFFFFFFF 0 0 正确 2 0001102b 0000_0001 0 0 正确 3 00421820 0000_0002 0 0 正确 4 00622020 0000_0003 0 0 正确 5 00832820 0000_0005 0 0 正确 6 00a33020 0000_0007 0 0 正确 7 00463804 0000_000E 0 0 正确 8 00a64820 0000_000C 0 0 正确 9 01264004 0000_7000 0 0 正确 10 00284826 FFFF_8FFF 0 0 正确 11 01215020 FFFF_8FFE 0 0 正确 12 01075822 0000_6FF2 0 0 正确 13 00e86022 FFFF_900E 0 0 正确 14 012c6824 FFFF_800E 0 0 正确 15 012c7025 FFFF_9FFF 0 0 正确

合集下载

《计算机组成原理》运算器实验报告

《计算机组成原理》运算器实验报告

一. 实验目的及要求(1) 了解运算器的组成结构。

(2) 掌握运算器的工作原理。

二. 实验模块及实验原理本实验的原理如图1-1-1所示。

运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的数据存于暂存器A 和暂存器B ,三个部件同时接受来自 A 和B 的数据(有些处理器体系结构把移位运算器放于算术和逻辑运算部件之前,如ARM),各部件对操作数进行何种运算由控制信号 S3…S0和CN来决定,任何时候,多路选择开关只选择三部件中一个部件的结果作为 ALU的输出。

如果是影响进位的运算,还将置进位标志 FC,在运算结果输出前,置 ALU零标志。

ALU中所有模块集成在一片CPLD 中。

逻辑运算部件由逻辑门构成,较为简单,而后面又有专门的算术运算部件设计实验,在此对这两个部件不再赘述。

移位运算采用的是桶形移位器,一般采用交叉开关矩阵来实现,交叉开关的原理如图1-1-2所示。

图中显示的是一个 4X4 的矩阵(系统中是一个 8X8 的矩阵)。

每一个输入都通过开关与一个输出相连,把沿对角线的开关导通,就可实现移位功能,即:(1) 对于逻辑左移或逻辑右移功能,将一条对角线的开关导通,这将所有的输入位与所使用的输出分别相连, 而没有同任何输入相连的则输出连接0 。

(2) 对于循环右移功能,右移对角线同互补的左移对角线一起激活。

例如,在4 位矩阵中使用‘右1 ’和‘左 3 ’对角线来实现右循环 1 位。

(3) 对于未连接的输出位,移位时使用符号扩展或是 0 填充,具体由相应的指令控制。

使用另外的逻辑进行移位总量译码和符号判别。

运算器部件由一片CPLD 实现。

ALU的输入和输出通过三态门74LS245 连到CPU 内总线上,另外还有指示灯标明进位标志FC和零标志FZ。

请注意:实验箱上凡丝印标注有马蹄形标记‘’,表示这两根排针之间是连通的。

图中除 T4和CLR ,其余信号均来自于 ALU单元的排线座,实验箱中所有单元的T1、T2、T3、T4都连接至控制总线单元的 T1、T2、T3、T4,CLR 都连接至 CON单元的CLR 按钮。

杭电计组实验九

杭电计组实验九
6'b101011: begin Mem_Write=1;Write_Reg=0;ALU_OP=3'B100;end
endcase
end
end
endmodule
Reg模块
module reg1(R_Addr_A,R_Addr_B,Clk,W_Addr,W_Data,R_Data_A,R_Data_B,Reset,Write_Reg
endmodule
ALU模块:
module ex3(ALU_OP,A,B,F,ZF,OF
);
input[2:0] ALU_OP;
input[31:0] A,B;
output reg [31:0] F;
output reg ZF,OF;
endmodule
pc模块:
module ex7(clka,douta,rst,PC,PC_new
);
input rst;
input clka;
output wire[31:0] douta;
output reg[31:0] PC;
output [31:0] PC_new;
wire [31:0]dina;
output ZF;
output OF;
output Write_Reg;//是否写入
output [31:0] W_Data;
output rd_rt_s; //控制那个作为目的寄存器
output [4:0]W_Addr;//目的操作数地址
output [15:0] imm; //立即数
output [31:0] imm_data;//被扩展的立即数
end
endmodule
analysis_inst模块:

实验三-R-Type ALU设计

实验三-R-Type ALU设计
reg[31:0] Result; output zero;//运算结果零标志
reg zero;
always@(posedge clk) begin
case(ALUoper) 3'b000:Result=Adat&Bdat;//“与”运算 3'b001:Result=Adat|Bdat;//"或"运算 3'b010:Result=Adat+Bdat;//“加”运算 3'b110:Result=Adat-Bdat;//“减”运算 3'b111:if(Adat<Bdat) Result=1; else Result=0;//"比较"运算 default:Result=Adat+Bdat;//默认为"加"运算
//ALUoper 为操作类型,当前实现:与,或,加,减,比较运算,Reslt 为运算结果,zero 为运算结果零标志位
ALUnit XALUnit(clk,Adat,Bdat,ALUoper,result,zero);
//$zero
-7-
29: Bdat = Sfp;
30: Bdat = Ssp;
31: Bdat = Sra;
endcase
end
always @ (negedge clk)begin
if(RegWrite==1)
case(Wdat)
0: Szero =0;
//$zero
1: Sat = Wdat;
-8-
4.ALU 5 指令系统实现
//clk:系统时钟 //instru:指令码 //Adat:ALU 的 A 内部输入,为方便观察,将其引到电路外部,因此定义为输出 //Bdat:同上 //result:计算结果 module Rtype(

CPU基本实验与设计内容

CPU基本实验与设计内容

第二章计算机基本部件设计实验熟悉QuartusII环境实验一.实验目的1.熟悉QuartusII环境;2.学习在QuartusII中新建项目、文件、编译、仿真的完整流程;3.学习原理图方式自定义元件的输入、封装、调用。

二.实验内容1.创建项目(或新建工程)①在菜单中选择: File->New Project Wizard新建项目命令图1-1 新建项目窗口1图1-2 新建项目窗口2②输入新建项目的相关信息:路径、项目名称、顶层文件名,本例中为:D:\加法电路,输入项目名称:JJF,以及顶层文件名:JJF(见图1-3),然后按FINISH 即可完成对新项目的定义。

注意:项目名与顶层文件名必须相同!项目路径项目名顶层文件名图1-3 新建项目窗口32. 新建文件在项目JJF中新建文件,因新建项目时顶层文件名为JJF,所以主文件必须命名为JJF。

请在窗口菜单中选File->New,然后选择新建文件的类型,并定义和输入文件的内容存盘,就可建立相应类型的新文件了。

实验中常用的文件有以下几种类型:●图形文件(Block Diagram/Schematic File,其文件名后缀为.bdf),是通过调用系统元件库的元件,用搭建原理图方式建立的文件。

其特点是硬件结构直观、比较易于理解;●VHDL文件,又称为文本文件(VHDL File,其文件名后缀为.vhd),是用VHDL语言编写程序的方法定义硬件功能建立的文件;●仿真文件(Vector Waveform File,其文件名后缀为.vwf),又称为波形文件,主要用于对进行功能仿真或时序仿真;●配置文件(Memory Initialization File,其文件名后缀为.mif),主要用于存储器部件rom,数据的写入或ram部件预置数据的写入。

下面以建立JJF.bdf图形文件为例说明建立图形文件的过程:①创建图形文件请在新建文件窗口菜单中选File->New,然后选择Block Diagram/Schematic File,单击OK按钮。

8位CPU设计与实现

8位CPU设计与实现

计之阿布丰王创作算机组成原理论文姓名:某某班级:计科一班学号:8位CPU的设计与实现论文CPU 的主要功能是执行指令,控制完成计算机的各项把持,包括运算把持、传送把持、输入/输出把持等.作为模型计算机设计,将重点放在寄存器组,采用较简单的组成模式,以尽量简洁的设计帮手读者掌握CPU 的基来源根基理.此次设计CPU就是为了了解CPU运行的原理,从而完成从指令系统到CPU的设计,而且通过仿真对CPU设计进行正确性评定.关键词:CPU,设计指标,电路原理图,运算部件,寄存器组,模型机指令系统,微命令序列,数据通路1. 设计的任务与要求1.1设计指标1. 能实现IN(输入)、ADD(二进制加法)、STA(存数)、OUT(输出)、JMP(无条件转移)这五种指令;2. 整个系统能正常稳定工作.1.2 设计要求1. 画出电路原理图;2.写出设计的全过程,附上有关资料和图纸(也可直接写在相关章节中),有心得体会.2. 方案论证与选择2.1CPU的系统方案CPU 主要由算术逻辑单位ALU,数据暂存寄存器DR1、DR2,数据寄存器R0~R2,法式计数器PC,地址寄存器AR,法式/数据存储器MEMORAY,指令寄存器IR,微控制器uC,输入单位INPUT 和输出单位OUTPUT 所组成.图中虚线框内部份包括运算器、控制器、法式存储器、数据存储器和微法式存储器等,实测时,它们都可以在单片FPGA 中实现.虚线框外部份主要是输入/输出装置,包括键盘、数码管、LCD 显示器等,用于向CPU 输入数据,或CPU 向外输出数据,以及观察CPU 内部工作情况及运算结果.1.运算部件运算部件的任务是对把持数进行加工处置.主要由三部份组成:(1)输入逻辑.(2)算术/逻辑运算部件ALU.(3)输出逻辑2.寄存器组计算机工作时,CPU 需要处置年夜量的控制信息和数据信息.例如对指令信息进行译码,以便发生相应控制命令对把持数进行算术或逻辑运算加工,而且根据运算结果决定后续把持等.因此,在CPU 中需要设置若干寄存器,暂时寄存这些信息.在模型CPU中,寄存器组由R0、R1、R2 所组成.3.指令寄存器指令寄存器(IR)指令寄存器指令寄存器(IR)用来寄存以后正在执行的指令,它的输出包括把持码信息、地址信息等,是发生微命令的主要逻辑依据.4.法式计数器法式计数器(PC)法式计数器法式计数器也称指令指针,用来指示指令在存储器中的寄存位置.当法式顺序执行时,每次从主存取出一条指令,PC 内容就增量计数,指向下一条指令的地址.增量值取决于现行指令所占的存储单位数.如果现行指令只占一个存储单位,则PC 内容加1;若现行指令占了两个存储单位,那么PC 内容就要加2.当法式需要转移时,将转移地址送入PC,使PC 指向新的指令地址.因此,当现行指令执行完,PC 中寄存的总是后续指令的地址;将该地址送往主存的地址寄存器AR,即可从存储器读取下一条指令.5.地址寄存器CPU 访问存储器,首先要找到需要访问的存储单位,因此设置地址寄存器(AR)来寄存被访单位的地址.当需要读取指令时,CPU 先将PC 的内容送入AR,再由AR将指令地址送往存储器.当需要读取或寄存数据时,也要先将该数据的有效地址送入AR,再对存储器进行读写把持.6.标识表记标帜寄存器标识表记标帜寄存器F是用来记录现行法式的运行状态和指示法式的工作方式的,标识表记标帜位则用来反映以后法式的执行状态.一条指令执行后,CPU 根据执行结果设置相应特征位,作为决定法式流向的判断依据.例如,当特征位的状态与转移条件符合时,法式就进行转移;如果不符合,则顺序执行.在后面将要介绍的较复杂模型计算机设计中设置了两个标识表记标帜位:进位Fc、零位Fz.7.微指令发生部件实现信息传送要靠微命令的控制,因此在CPU 中设置微命令发生部件,根据控制信息发生微命令序列,对指令功能所要求的数据传送进行控制,同时在数据传送至运算部件时控制完成运算处置.微命令发生部件可由若干组合逻辑电路组成,也可以由专门的存储逻辑组成.发生微命令的方式可分为组合逻辑控制方式和微法式控制方式两种.在本章所介绍的8 位模型CPU 设计中,采纳微法式控制方式通过微法式控制器和微指令存储器发生微命令,因此此CPU 属于复杂指令CISC CPU.8.时序系统计算机的工作经常是分步执行的,那么就需要有一种时间信号作为分步执行的标识表记标帜,如周期、节拍等.节拍是执行一个单步把持所需的时间,一个周期可能包括几个节拍.这样,一条指令在执行过程中,根据分歧的周期、节拍信号,就能在分歧的时间发出分歧的微命令完成份歧的微把持.周期、节拍、脉冲等信号称为时序信号,发生时序信号的部件称为时序发生器或时序系统,它由一组触发器组成.由石英晶体振荡器输出频率稳定的脉冲信号,也称时钟脉冲,为CPU 提供时钟基准.时钟脉冲经过一系列计数分频,发生所需的节拍(时钟周期)信号.时钟脉冲与周期、节拍信号和有关控制条件相结合,可以发生所需的各种工作脉冲.2.2模型机指令系统一条指令必需包括下列信息:把持码、把持数的地址、把持结果的存储地址、下一条指令的地址.指令的基本格式op-code 为把持码,rs为源寄存器,rd 为目的寄存器寄存器把持数模型机指令系统,及其指令编码形式设模型机指令系统中包括有五条基本指令,分为算术运算指令、存取指令和控制转移指令等三种类型.五条机器指令分别是:IN(输入)、ADD(二进制加法)、STA(存数)、OUT(输出)、JMP (无条件转移).IN 为单字长(8 位二进制),其余为双字长指令,XX H 为addr对应的十六进制地址码.2.3拟定指令流程和微命令序列(计算机设计中最关键步伐)1.微法式控制概念(1)微命令和微把持一条机器指令可以分解成一个微把持序列,这些微把持是计算机中最基本的,不成再分解的把持.在微法式控制的计算机中,将控制部件向执行部件发出的各种控制命令叫做微命令,它是构成控制序列的最小单位.因此,微命令是控制计算机各部件完成某个基本微把持的命令.微命令和微把持是一一对应的.微命令是微把持的控制信号,微把持是微命令的把持过程.微命令有兼容性和互斥性之分.兼容性微命令是指那些可以同时发生,共同完成某一些微把持的微命令;而互斥性微命令是指在机器中不允许同时呈现的微命令.兼容和互斥都是相对的,一个微命令可以和一些微命令兼容,和另一些微命令互斥.对独自一个微命令,就无所谓兼容性或互斥性了.(2)微指令、微地址微指令是指控制存储器中的一个单位的内容,即控制字,是若干个微命令的集合,寄存控制字的控制存储器的单位地址就称为微地址.一条微指令通常至少包括两年夜部份信息:微把持码字段,又称把持控制字段,该字段指出微指令执行的微把持;微地址码字段,又称顺序控制字段,指出下一条要执行的微指令的地址.(3)微周期所谓微周期是指从控存中读取出一条微指令并执行规定的相应把持所需的时间.(4)微法式一系列微指令的有序集合就是微法式.若干条有序的微指令构成了微法式.微法式可以控制实现一条机器指令的功能.或者说一条机器指令可以分解为特定的微指令序列.一旦机器的指令系统确定以后,每条指令所对应的微法式被设计好而且存入控存后,控存总是处于只读的工作状态,所以控存一般采纳只读存储器(ROM)寄存.重新设计控存内容就能增加、删除、修改机器指令系统.在FPGA 中通常采纳嵌入式阵列块构成的LPM_ROM 作为控存,寄存微指令.2.微指令格式(1)水平型微指令一次能界说并执行多个并行把持微命令的微指令.依照把持控制字段的编码方法分歧,水平型微命令又分为三种:第一种是全水平型(不译码法)微指令,第二种是字段译码法水平型微指令,第三种是直接和字段译码相混合的水平型微指令.(2)垂直型微指令垂直型微指令中设置把持码字段,由微把持码规定微指令的功能.垂直型微指令的结构类似于机器指令的结构.在一条微指令中只存一二个微命令,每条微指令的功能比力简单.因此,实现一条机器指令的微法式要比水平型微指令编写的微法式长很多,它是采纳较长的微法式结构去换取较短的微指令结构.3.模型机的微指令uA5~uA0:微法式控制器的微地址输出信号,是下一条要执行的微指令的微地址.S3、S2、Sl、S0:由微法式控制器输出的ALU 把持选择信号,以控制执行16 种算术把持或16 种逻辑把持中的某一种把持.M:微法式控制输出的ALU 把持方式选择信号.M=0 执行算术把持;M=l执行逻辑把持:微法式控制器输出的进位标识表记标帜信号,Cn=0 暗示ALU 运算时最低位有进位;Cn=1 则暗示无进位.WE:微法式控制器输出的RAM 控制信号.当CE=0 时,如WE=0,为存储器读;如WE=1,为存储器写.A9、A8:译码后发生CS0、CS1、CS2 信号,分别作为SW_B、RAM、LED 的选通控制信号.A 字段(15、14、13):译码后发生与总线相连接的各单位的输入选通信号.B 字段(12、11、10):译码后发生与总线相连接的各单位的输出选通信号.C 字段(9、8、7):译码后发生分支判断测试信号P(1)~P (4)和LDPC 信号.4.微指令的执行方式执行一条微指令的过程类似于机器指令的执行过程.首先,将微指令从控存CM 中取出,称为取微指令.对垂直型微指令还应包括微把持码的译码时间.然后,执行微指令所规定的各个微把持.根据微指令的执行方式可分为串行执行和并行执行两种.5.时序安插由于CPU 的工作是分步进行的,而且需要严格按时控制,因此设置时序信号,以便在分歧的时间发出分歧的微命令,控制完成份歧的把持.组合逻辑控制方式和微法式控制方式在时序安插上有区别,前者多采纳三级时序划分,而后者往往采纳两级时序.6.拟定指令流程和微命令序列这是设计中最关键的步伐,这是由于需要根据这一步的设计结果形成最后的控制逻辑.拟定指令流程是将指令执行过程中的每步传送把持(寄存器之间的信息传送),用流程图的形式描述出来,拟定微命令序列是用把持时间表列出每步把持所需的微命令及其发生条件.7.形成控制逻辑设计的最后一步.采纳组合逻辑控制方式或采纳法式控制方式,有各自分歧的设计方法.在组合逻辑控制方式中,将发生微命令的条件进行综合、化简,形成逻辑式,从而构成控制器的核心逻辑电路.在微法式控制方式中,则是根据微命令来编写微指令,组成微法式,从而构成以控制存储器为核心的控制逻辑.2.4 微法式设计1.IN指令为了执行输入指令,CPU 要做两件事情.首先,由INPUT 输入装置的数据开关SW输入数据送到数据总线上;其次,通过数据总线将输入的数据写入寄存器R0 中.2.ADD指令 R0←R0+(MEM)存储单位的地址是寄存在紧跟在把持码后的字节中的,因此,首先要以该字节的内容为地址,即将该单位内容送地址寄存器AR;然后,从AR 所指向的RAM 存储单位取出把持数送给DR2.由于在取指令把持码时,PC 已经自动加1,指向下一字节,该地址就是寄存把持数的存储单位的地址.3.STA指令向存储器RAM 写数据把持STA,以紧跟在把持码后的字节作为寄存把持数地址,将R0 中的数据存入该地址单位.首先将紧跟在把持码后的字节的内容送给地址寄存器AR.4. OUT指令AR←PC,PC←PC+1;以PC的内容作为存数据的地址BUS←RAM,AR←BUS;AR指向寄存把持数的RAM单位BUS←RAM,DR1←BUSOUT←DR15.JMP指令AR←PC,PC←PC+1 ;以PC的内容作为取数据的地址BUS←RAM,PC←BUS ;将RAM内容送PC,实现法式转移3. CPU设计及微代码3.1 原理图模版3.2取指令和指令1.取指令阶段取指令阶段完成的任务是将现行指令从主存中取出来并送至指令寄存器中.具体的把持如下:(1)将法式计数器(PC)中的内容送至存储器地址寄存器(AR),并送往地址总线(AB).(2)PC 的内容递增,为取下一条指令做好准备.(3)由控制单位(CU)经控制总线(CB)向存储器发读命令.(4)从主存中取出的指令通过数据总线(DB)送到指令寄存器(IR)中.以上这些把持对任何一条指令来说都是必需要执行的把持,所以称为公共把持.完成取指阶段任务的时间称为取指周期.取出指令后,指令译码器ID 可识别和区分出分歧的指令类型.此时计算机进入分析取数阶段,以获取把持数.由于各条指令功能分歧,寻址方式也分歧,所以分析取数阶段的把持是各不相同的.(5)指令寄存器(IR)中的内容送指令译码器(ID)进行指令译码.(6)指令译码器(ID)的内容送把持控制器.(7)把持控制器发生执行指令的微控制.2. 分析取数阶段对无把持数指令,只要识别出是哪条具体的指令,即可以直接转至执行阶段,所以不需进入分析取数阶段.而对带把持数指令,为读取把持数首先要计算出把持数的有效地址.如果把持数在通用寄存器内,则不需要再访问主存;如果把持数在主存中,则要到主存中去取数.对分歧的寻址方式,有效地址的计算方法是分歧的,有时要屡次访问主存才华取出把持数(间接寻址).对无把持数指令,只要识别出是哪条具体的指令,即可以直接转至执行阶段,所以不需进入分析取数阶段.而对带把持数指令,为读取把持数首先要计算出把持数的有效地址.如果把持数在通用寄存器内,则不需要再访问主存;如果把持数在主存中,则要到主存中去取数.对分歧的寻址方式,有效地址的计算方法是分歧的,有时要屡次访问主存才华取出把持数(间接寻址).另外对单把持数指令和双把持数指令,由于需要的把持数的个数分歧,分析取数阶段的把持也分歧.3. 执行阶段执行指令阶段完成指令规定的各种把持.执行阶段完成任务的时间称为执行周期.计算机的基本把持过程就是取指令、取把持数、执行指令,然后再取下一条指令……如此周而复始,直至遇到停机指令或外来的干预为止.3.3设计微代码表微法式流程图是根据每条指令的微把持流程所绘制的,把持框内给出的是该微把持要执行的举措.当拟定“取指”微指令时,该微指令的判别测试字段为P(1)测试,根据P(1)的测试结果将呈现多路分支.由于把持码的位数已确定为4 位,所以可直接将把持码与微地址码的部份对应.本模型机用指令寄存器(IR7~IR0)的高4 位(IR7~IR4)与微地址码的后4 位对应.模型机的微地址码共有六位,微地址码的高三位已固定为001,低三位从000~111 共有八种状态,现设计了五条指令,需要五个分支入口,因此,将低三位中的000B~100B 这五个地址分配给这五条指令,就获得五个分支入口微地址.这五个分支入口(以八进制暗示)分别是10、11、12、13 和14,占用五个固定的微地址单位.其余的微把持单位的微地址设置,可以将还未使用的微地址依照从小到年夜的顺序依次分配给这些微把持单位,微地址的分配情况见图5-4.微地址标注在每个微把持框的左上角,右上角标注的是微指令码.3.4建立数据通路ALU 为运算器;DR0 和DR1 为其输入真个两个暂存寄存器;R0 是数据寄存器,用来保管数据和运算结果;PC 为法式计数器;IR 和ID 分别为指令寄存器和指令译码器;AR 和MOMERY 分别为存储地址寄存器和存储数据寄存器;INPUT 为输入装置;OUTPUT 为输出装置.各基本单位模块的输出端通过三态门控制与内部数据总线相连接;微控制器依照时序发生器的节拍,对指令进行译码后发生同步的控制信号.各部件旁边的C 是由微指令译码器输出的控制信号,用于控制数据的输入和输出.与数据总线相连的信号有些是单向的,有些则是双向的.如数据寄存器、存储器、I/O 接口的数据信号是双向的,而指令信号、地址信号、控制信号是单向的.实际上在FPGA 中,双向端口元件的表述方法是:输入和输出端口采纳两个分歧的端口,这时各基本元件的输出端口不能直接与内部总线连接在一起,而是需要通过三态门控制以后再连接到总线上.在向总线输出数据时,不能同时有两路或两路以上数据一起输出,否则会发生数据抵触.因此在设计微法式、确定微把持时,应注意数据传输中控制信号对时序的要求.3.5 微法式控制的基来源根基理3.6 在模型CPU中的软件执行微指令执行情况4.心得体会通过此次的设计,我受益匪浅.首先,我对CPU有了基本认识,认识它的原理,结构,运行;其次,我对微指令的认识也有了进一步提高,特别是指令对应的功能以及对指令的理解;再次,我对该部件的原理及功能运行有了一定条理的理解;最后,我必需供认,不论遇到什么问题都要从底层抓起,然后去解决问题,当我对某些工具不懂时,要从书本的最基本概念看起,再到原理,运行条理,结构等去理解才华真正懂,还有和他人的交流很重要,不懂的问题彼此交换意见可以受益匪浅.我很感谢此次机会让我有了一次熬炼.参考文献:[1] 潘松潘明. 现代计算机组成原理. 科学出书社.[2] 王爱英.计算机组成与结构(第四版).清华年夜学出书社.时间:二O二一年七月二十九日。

8位CPU设计与实现

8位CPU设计与实现

计算机组成原理论文姓名:某某班级:计科一班学号:8位CPU的设计与实现论文CPU 的重要功效是履行指令,控制完成盘算机的各项操纵,包含运算操纵.传送操纵.输入/输出操纵等.作为模子盘算机设计,将重点放在存放器组,采纳较简略的构成模式,以尽量简练的设计帮忙读者控制CPU 的基起源基础理.此次设计CPU就是为了懂得CPU运行的道理,从而完成从指令体系到CPU的设计,并且经由过程仿真对CPU设计进行准确性评定.症结词:CPU,设计指标,电路道理图,运算部件,存放器组,模子机指令体系,微敕令序列,数据通路1. 设计的义务与请求1.1设计指标1. 能实现IN(输入).ADD(二进制加法).STA(存数).OUT(输出).JMP(无前提转移)这五种指令;2. 全部体系能正常稳固工作.1.2 设计请求1. 画出电路道理图;2.写出设计的全进程,附上有关材料和图纸(也可直接写在相干章节中),有心得领会.2. 计划论证与选择CPU的体系计划CPU 重要由算术逻辑单元ALU,数据暂存存放器DR1.DR2,数据存放器R0~R2,程序计数器PC,地址存放器AR,程序/数据存储器MEMORAY,指令存放器IR,微控制器uC,输入单元INPUT 和输出单元OUTPUT 所构成.图中虚线框内部分包含运算器.控制器.程序存储器.数据存储器和微程序存储器等,实测时,它们都可以在单片FPGA 中实现.虚线框外部分主如果输入/输出装配,包含键盘.数码管.LCD 显示器等,用于向CPU 输入数据,或CPU 向外输出数据,以及不雅察CPU 内部工作情形及运算成果.1.运算部件运算部件的义务是对操纵数进行加工处理.重要由三部分构成:(1)输入逻辑.(2)算术/逻辑运算部件ALU.(3)输出逻辑2.存放器组盘算机工作时,CPU 须要处理大量的控制信息和数据信息.例如对指令信息进行译码,以便产生响应控制敕令对操纵数进行算术或逻辑运算加工,并且根据运算成果决议后续操纵等.是以,在CPU 中须要设置若干存放器,临时存放这些信息.在模子CPU中,存放器组由R0.R1.R2 所构成.3.指令存放器指令存放器(IR)指令存放器指令存放器(IR)用来存放当前正在履行的指令,它的输出包含操纵码信息.地址信息等,是产生微敕令的重要逻辑根据.4.程序计数器程序计数器(PC)程序计数器程序计数器也称指令指针,用来指导指令在存储器中的存放地位.当程序次序履行时,每次从主存掏出一条指令,PC 内容就增量计数,指向下一条指令的地址.增量值取决于现行指令所占的存储单元数.假如现行指令只占一个存储单元,则PC 内容加1;若现行指令占了两个存储单元,那么PC 内容就要加2.当程序须要转移时,将转移地址送入PC,使PC 指向新的指令地址.是以,当现行指令履行完,PC 中存放的老是后续指令的地址;将该地址送往主存的地址存放器AR,即可从存储器读取下一条指令.5.地址存放器CPU 拜访存储器,起首要找到须要拜访的存储单元,是以设置地址存放器(AR)来存放被访单元的地址.当须要读取指令时,CPU 先将PC 的内容送入AR,再由AR将指令地址送往存储器.当须要读取或存放数据时,也要先将该数据的有用地址送入AR,再对存储器进行读写操纵.6.标记存放器标记存放器F是用来记载现行程序的运行状况和指导程序的工作方法的,标记位则用来反应当前途序的履行状况.一条指令履行后,CPU 根据履行成果设置响应特点位,作为决议程序流向的断定根据.例如,当特点位的状况与转移前提相符时,程序就进行转移;假如不相符,则次序履行.在后面将要介绍的较庞杂模子盘算机设计中设置了两个标记位:进位Fc.零位Fz.实现信息传送要靠微敕令的控制,是以在CPU 中设置微敕令产生部件,根据控制信息产生微敕令序列,对指令功效所请求的数据传送进行控制,同时在数据传送至运算部件时控制完成运算处理.微敕令产生部件可由若干组合逻辑电路构成,也可以由专门的存储逻辑构成.产生微敕令的方法可分为组合逻辑控制方法和微程序控制方法两种.在本章所介绍的8 位模子CPU 设计中,采取微程序控制方法经由过程微程序控制器和微指令存储器产生微敕令,是以此CPU 属于庞杂指令CISC CPU.盘算机的工作经常是分步履行的,那么就须要有一种时光旌旗灯号作为分步履行的标记,如周期.节奏等.节奏是履行一个单步操纵所需的时光,一个周期可能包含几个节奏.如许,一条指令在履行进程中,根据不合的周期.节奏旌旗灯号,就能在不合的时光发出不合的微敕令完成不合的微操纵.周期.节奏.脉冲等旌旗灯号称为时序旌旗灯号,产生时序旌旗灯号的部件称为时序产生器或时序体系,它由一组触发器构成.由石英晶体振荡器输出频率稳固的脉冲旌旗灯号,也称时钟脉冲,为CPU 供给时钟基准.时钟脉冲经由一系列计数分频,产生所需的节奏(时钟周期)旌旗灯号.时钟脉冲与周期.节奏旌旗灯号和有关控制前提相联合,可以产生所需的各类工作脉冲.模子机指令体系一条指令必须包含下列信息:操纵码.操纵数的地址.操纵成果的存储地址.下一条指令的地址.指令的根本格局op-code 为操纵码,rs为源存放器,rd 为目标存放器存放器操纵数模子机指令体系,及其指令编码情势设模子机指令体系中包含有五条根本指令,分为算术运算指令.存取指令和控制转移指令等三种类型.五条机械指令分离是:IN(输入).ADD(二进制加法).STA(存数).OUT(输出).JMP(无前提转移).IN 为单字长(8 位二进制),其余为双字长指令,XX H 为addr对应的十六进制地址码.拟定指令流程和微敕令序列(盘算机设计中最症结步调)1.微程序控制概念(1)微敕令和微操纵一条机械指令可以分化成一个微操纵序列,这些微操纵是盘算机中最根本的,不成再分化的操纵.在微程序控制的盘算机中,将控制部件向履行部件发出的各类控制敕令叫做微敕令,它是构成控制序列的最小单位.是以,微敕令是控制盘算机各部件完成某个根本微操纵的敕令.微敕令和微操纵是一一对应的.微敕令是微操纵的控制旌旗灯号,微操纵是微敕令的操纵进程.微敕令有兼容性和互斥性之分.兼容性微敕令是指那些可以同时产生,配合完成某一些微操纵的微敕令;而互斥性微敕令是指在机械中不许可同时消失的微敕令.兼容和互斥都是相对的,一个微敕令可以和一些微敕令兼容,和另一些微敕令互斥.对于单独一个微敕令,就无所谓兼容性或互斥性了.(2)微指令.微地址微指令是指控制存储器中的一个单元的内容,即控制字,是若干个微敕令的聚集,存放控制字的控制存储器的单元地址就称为微地址.一条微指令平日至少包含两大部分信息:微操纵码字段,又称操纵控制字段,该字段指出微指令履行的微操纵;微地址码字段,又称次序控制字段,指出下一条要履行的微指令的地址.(3)微周期所谓微周期是指从控存中读掏出一条微指令并履行划定的响应操纵所需的时光.(4)微程序一系列微指令的有序聚集就是微程序.若干条有序的微指令构成了微程序.微程序可以控制实现一条机械指令的功效.或者说一条机械指令可以分化为特定的微指令序列.一旦机械的指令体系肯定今后,每条指令所对应的微程序被设计好并且存入控存后,控存老是处于只读的工作状况,所以控存一般采取只读存储器(ROM)存放.从新设计控存内容就能增长.删除.修正机械指令体系.在FPGA 中平日采取嵌入式阵列块构成的LPM_ROM 作为控存,存放微指令.(1)程度型微指令一次能界说并履行多个并行操纵微敕令的微指令.按照操纵控制字段的编码办法不合,程度型微敕令又分为三种:第一种是全程度型(不译码法)微指令,第二种是字段译码法程度型微指令,第三种是直接和字段译码相混杂的程度型微指令.(2)垂直型微指令垂直型微指令中设置操纵码字段,由微操纵码划定微指令的功效.垂直型微指令的构造相似于机械指令的构造.在一条微指令中只存一二个微敕令,每条微指令的功效比较简略.是以,实现一条机械指令的微程序要比程度型微指令编写的微程序长得多,它是采取较长的微程序构造去换取较短的微指令构造.3.模子机的微指令uA5~uA0:微程序控制器的微地址输出旌旗灯号,是下一条要履行的微指令的微地址.S3.S2.Sl.S0:由微程序控制器输出的ALU 操纵选择旌旗灯号,以控制履行16 种算术操纵或16 种逻辑操纵中的某一种操纵.M:微程序控制输出的ALU 操纵方法选择旌旗灯号.M=0 履行算术操纵;M=l履行逻辑操纵:微程序控制器输出的进位标记旌旗灯号,Cn=0 暗示ALU 运算时最低位有进位;Cn=1 则暗示无进位. WE:微程序控制器输出的RAM 控制旌旗灯号.当CE=0 时,如WE=0,为存储器读;如WE=1,为存储器写.A9.A8:译码后产生CS0.CS1.CS2 旌旗灯号,分离作为SW_B.RAM.LED 的选通控制旌旗灯号.A 字段(15.14.13):译码后产生与总线相衔接的各单元的输入选通讯号.B 字段(12.11.10):译码后产生与总线相衔接的各单元的输出选通讯号.C 字段(9.8.7):译码后产生分支断定测试旌旗灯号P(1)~P (4)和LDPC 旌旗灯号.履行一条微指令的进程相似于机械指令的履行进程.起首,将微指令从控存CM 中掏出,称为取微指令.对于垂直型微指令还应包含微操纵码的译码时光.然后,履行微指令所划定的各个微操纵.根据微指令的履行方法可分为串行履行和并行履行两种.5.时序安插因为CPU 的工作是分步进行的,并且须要严厉准时控制,是以设置时序旌旗灯号,以便在不合的时光发出不合的微敕令,控制完成不合的操纵.组合逻辑控制方法和微程序控制方法在时序安插上有差别,前者多采取三级时序划分,尔后者往往采取两级时序.这是设计中最症结的步调,这是因为须要根据这一步的设计成果形成最后的控制逻辑.拟定指令流程是将指令履行进程中的每步传送操纵(存放器之间的信息传送),用流程图的情势描写出来,拟定微敕令序列是用操纵时光表列出每步操纵所需的微敕令及其产生前提.7.形成控制逻辑设计的最后一步.采取组合逻辑控制方法或采取程序控制方法,有各自不合的设计办法.在组合逻辑控制方法中,将产生微敕令的前提进行分解.化简,形成逻辑式,从而构成控制器的焦点逻辑电路.在微程序控制方法中,则是根据微敕令来编写微指令,构成微程序,从而构成以控制存储器为焦点的控制逻辑.2.4 微程序设计1.IN指令为了履行输入指令,CPU 要做两件工作.起首,由INPUT 输入装配的数据开关SW输入数据送到数据总线上;其次,经由过程数据总线将输入的数据写入存放器R0 中.2.ADD指令 R0←R0+(MEM)存储单元的地址是存放在紧跟在操纵码后的字节中的,是以,起首要以该字节的内容为地址,即将该单元内容送地址存放器AR;然后,从AR 所指向的RAM 存储单元掏出操纵数送给DR2.因为在取指令操纵码时,PC 已经主动加1,指向下一字节,该地址就是存放操纵数的存储单元的地址.3.STA指令向存储器RAM 写数据操纵STA,以紧跟在操纵码后的字节作为存放操纵数地址,将R0 中的数据存入该地址单元.起首将紧跟在操纵码后的字节的内容送给地址存放器AR.4. OUT指令AR←PC,PC←PC+1;以PC的内容作为存数据的地址BUS←RAM,AR←BUS;AR指向存放操纵数的RAM单元BUS←RAM,DR1←BUSOUT←DR15.JMP指令AR←PC,PC←PC+1 ;以PC的内容作为取数据的地址BUS←RAM,PC←BUS ;将RAM内容送PC,实现程序转移3. CPU设计及微代码3.1 道理图模版取指令阶段完成的义务是将现行指令从主存中掏出来并送至指令存放器中.具体的操纵如下:(1)将程序计数器(PC)中的内容送至存储器地址存放器(AR),并送往地址总线(AB).(2)PC 的内容递增,为取下一条指令做好预备.(3)由控制单元(CU)经控制总线(CB)向存储器发读敕令.(4)从主存中掏出的指令经由过程数据总线(DB)送到指令存放器(IR)中.以上这些操纵对任何一条指令来说都是必须要履行的操纵,所以称为公共操纵.完成取指阶段义务的时光称为取指周期.掏出指令后,指令译码器ID 可辨认和区分出不合的指令类型.此时盘算机进入剖析取数阶段,以获取操纵数.因为各条指令功效不合,寻址方法也不合,所以剖析取数阶段的操纵是各不雷同的.(5)指令存放器(IR)中的内容送指令译码器(ID)进行指令译码.(6)指令译码器(ID)的内容送操纵控制器.(7)操纵控制器产生履行指令的微控制.2. 剖析取数阶段对于无操纵数指令,只要辨认出是哪条具体的指令,即可以直接转至履行阶段,所以不需进入剖析取数阶段.而对于带操纵数指令,为读取操纵数起首要盘算出操纵数的有用地址.假如操纵数在通用存放器内,则不须要再拜访主存;假如操纵数在主存中,则要到主存中去取数.对于不合的寻址方法,有用地址的盘算办法是不合的,有时要多次拜访主存才干掏出操纵数(间接寻址).对于无操纵数指令,只要辨认出是哪条具体的指令,即可以直接转至履行阶段,所以不需进入剖析取数阶段.而对于带操纵数指令,为读取操纵数起首要盘算出操纵数的有用地址.假如操纵数在通用存放器内,则不须要再拜访主存;假如操纵数在主存中,则要到主存中去取数.对于不合的寻址方法,有用地址的盘算办法是不合的,有时要多次拜访主存才干掏出操纵数(间接寻址).别的对于单操纵数指令和双操纵数指令,因为须要的操纵数的个数不合,剖析取数阶段的操纵也不合.3. 履行阶段履行指令阶段完成指令划定的各类操纵.履行阶段完成义务的时光称为履行周期.盘算机的根本操纵进程就是取指令.取操纵数.履行指令,然后再取下一条指令……如斯周而复始,直至碰到停机指令或外来的干涉为止.微程序流程图是根据每条指令的微操纵流程所绘制的,操纵框内给出的是该微操纵要履行的动作.当拟定“取指”微指令时,该微指令的判别测试字段为P(1)测试,根据P(1)的测试成果将消失多路分支.因为操纵码的位数已肯定为4 位,所以可直接将操纵码与微地址码的部分对应.本模子机用指令存放器(IR7~IR0)的高4 位(IR7~IR4)与微地址码的后4 位对应.模子机的微地址码共有六位,微地址码的高三位已固定为001,低三位从000~111 共有八种状况,现设计了五条指令,须要五个分支进口,是以,将低三位中的000B~100B 这五个地址分派给这五条指令,就得到五个分支进口微地址.这五个分支进口(以八进制暗示)分离是10.11.12.13 和14,占用五个固定的微地址单元.其余的微操纵单元的微地址设置,可以将还未应用的微地址按照从小到大的次序依次分派给这些微操纵单元,微地址的分派情形见图5-4.微地址标注在每个微操纵框的左上角,右上角标注的是微指令码.ALU 为运算器;DR0 和DR1 为其输入端的两个暂存存放器;R0 是数据存放器,用来保管数据和运算成果;PC 为程序计数器;IR 和ID分离为指令存放器和指令译码器;AR 和MOMERY 分离为存储地址存放器和存储数据存放器;INPUT 为输入装配;OUTPUT 为输出装配.各根本单元模块的输出端经由过程三态门控制与内部数据总线相衔接;微控制器按照时序产生器的节奏,对指令进行译码后产生同步的控制旌旗灯号.各部件旁边的C 是由微指令译码器输出的控制旌旗灯号,用于控制数据的输入和输出.与数据总线相连的旌旗灯号有些是单向的,有些则是双向的.如数据存放器.存储器.I/O 接口的数据旌旗灯号是双向的,而指令旌旗灯号.地址旌旗灯号.控制旌旗灯号是单向的.现实上在FPGA 中,双向端口元件的表述办法是:输入和输出端口采取两个不合的端口,这时各根本元件的输出端口不克不及直接与内部总线衔接在一路,而是须要经由过程三态门控制今后再衔接到总线上.在向总线输出数据时,不克不及同时有两路或两路以上数据一路输出,不然会产生数据冲突.是以在设计微程序.肯定微操纵时,应留意数据传输中控制旌旗灯号对时序的请求.3.5 微程序控制的基起源基础理3.6 在模子CPU中的软件履行微指令履行情形经由过程此次的设计,我受益匪浅.起首,我对CPU有了根本熟悉,熟悉它的道理,构造,运行;其次,我对微指令的熟悉也有了进一步进步,特殊是指令对应的功效以及对指令的懂得;再次,我对该部件的道理及功效运行有了必定层次的懂得;最后,我必须承认,不管碰到什么问题都要从底层抓起,然后去解决问题,当我对某些器械不懂时,要从书本的最根本概念看起,再到道理,运行层次,构造等去懂得才干真正懂,还有和他人的交换很重要,不懂的问题彼此交换看法可以受益匪浅.我很感激此次机遇让我有了一次锤炼.参考文献:[1] 潘松潘明. 现代盘算机构成道理. 科学出版社.[2] 王爱英.盘算机构成与构造(第四版).清华大学出版社.。

计算机组成大型实验报告—机器指令设计实验

机器指令设计实验-实验报告一、实验目的与要求(1)通过实验分析简单模型机结构,了解计算机工作原理。

(2)掌握计算机微程序控制器的控制方法,掌握计算机指令执行过程。

(3)简单模型计算机部件构架、微程序控制器中微程序代码功能实现、微程序流程、指令系统定义和简单模型计算机汇编语言程序进行验证。

(4)在简单模型计算机基础上设计新的技巧指令,在第二章实验八的基础上实施,使用的实验部件和接线不变,增加5条新机器指令,目的是提高学生对计算机机器指令的理解,锻炼学生自己动手设计模型计算机机器指令的能力。

二、实验原理1.简单模型计算机构架简单模型计算机逻辑结构如图1所示,构成简单模型计算机的实验部件以总线为基本连接通道,主要有以下7个:(1)算术逻辑运算部件ALU UNIT进行算术逻辑运算操作。

(2)存储器部件MEM UNIT,存储模型计算机汇编语言程序和操作数据。

(3)地址寄存器部件ADDRESS UNIT,包含两部分电路,地址寄存器AR:接收存储器程序中的指令地址和指令中的数据地址;指令地址计数器PC:用于指示程序中的指令地址并通过地址缓冲器送往地址寄存器AR。

(4)指令寄存器部件INS UNIT,寄存器当前正在执行的机器指令,此指令的指令码通过指令译码器向微程序控制器指示相应的微程序入口地址;此指令的地址码指示的操作数地址,送往地址寄存器AR。

(5)输入/输出部件INPUT/OUTPUT,操作数据的输入与输出显示。

(7)通用寄存器部件REG UNIT,暂存运算的中间数据。

(7)微程序控制器部件MAIN CONTROL UNIT,控制各部件完成指令的功能。

2.简单模型计算机指令系统此简单模型计算机的指令系统包括控制台指令与机器指令。

共三条控制台指令,由手动控制单元(MANUAL UNIT)的KB,KA开关设定。

控制台指令只能由手工操作一条条指令,不能编写在汇编程序中。

实验八已经给出5条机器指令。

分别是输入指令IN R0,PORTAR,算术加指令ADD R0,[ADDR],寄存器内容送存储器指令STA [ADDR],R0,输出指令OUT [PORTAR],[ADDR],转移指令JMP PORTAR。

计算机组成原理 实验八 简单模型计算机实验

实验八简单模型计算机实验一、实验目的1)通过实验分析简单模型机结构,了解计算机的工作原理。

2)掌握计算机微程序控制器的控制方法,掌握计算机指令执行过程二、实验原理基本整机模型数据框图如图所示,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。

数据的通路从程序计数器PC的地址送到主存的地址寄存器,根据地址寄存器的内容找到相应的存储单元。

存储器中的数据是指令时,那么数据是从RAM送到总线,再从总线送到IR 中。

存储器中的数据是需要加工的数据时,那么数据是从RAM送到总线,再动总线送到通用寄存器中等待加工。

数据加工过程中,两个数据是从总线上将数据分别分时压入两个暂存器中,等待运算部件的加工,在数据加工完成以后。

运算结果是通过三太门送到总线上。

三态门的控制时由微控制器来控制。

图:模型机的数据通路图SW-G三、实验过程1.连线按实验逻辑原理图连接以下控制信号。

1)时钟单元(CLOCK UNIT)的T1-T4接到微程序控制单元(MAIN CONTROL UNIT)的T1-T4.2)手动控制开关单元(MANUAL UNIT)的KA ,KB接到指令单元(INS UNIT)的KA,KB。

3)指令单元(INS UNIT)的J(1)-J(5)、SE6-SE0、B-IR 接到的微程序控制单元(MAIN CONTROL UNIT)的J(1)-J(5)、SE6-SE0、B-IR。

4)输入/输出单元(INPUT/OUTPUT UNIT)IO-W,IO-R接到微程序控制单元(MAINCONTROL UNIT)的IO-W,IO-R,Ai接到地址单元(ADDRESS UNIT)的A0. 5)主存储器单元(MEM UNIT)M-W、M-R接到微程序控制单元(MAIN CONTROL UNIT)的M-W、M-R,A7-A0 接到地址单元(ADDRESS UNIT)的A7-A0.6)地址单元(ADDRESS UNIT)的B-AR、B-PC、PC+1、PC-B接到微程序控制单元(MAIN CONTROLUNIT)的B-AR、B-PC、PC+1、PC-B.7)通用寄存器单元(REG UNIT)的B-R、R0-B 接到微程序控制单元(MAIN CONTROLUNIT)的B-DR、DR-B。

计组综合实验报告(3篇)

第1篇一、实验目的1. 理解计算机组成原理的基本概念和组成结构。

2. 掌握计算机各部件的功能和相互关系。

3. 通过实际操作,加深对计算机组成原理的理解和掌握。

4. 培养实验操作能力和问题解决能力。

二、实验环境1. 实验室:计算机组成原理实验室2. 硬件设备:计算机、示波器、逻辑分析仪、信号发生器等3. 软件:计算机组成原理实验软件三、实验内容1. 计算机基本组成原理实验(1)计算机系统结构实验(2)中央处理器(CPU)实验(3)存储器实验(4)输入/输出(I/O)接口实验2. 计算机组成原理综合实验(1)计算机系统结构综合实验(2)CPU组成与工作原理综合实验(3)存储器组成与工作原理综合实验(4)I/O接口组成与工作原理综合实验四、实验步骤1. 计算机基本组成原理实验(1)计算机系统结构实验1.1 打开计算机组成原理实验软件,查看计算机系统结构图。

1.2 根据实验指导书,理解计算机系统结构的组成和功能。

1.3 分析计算机系统结构中各部件之间的关系。

(2)中央处理器(CPU)实验2.1 查看CPU实验指导书,了解CPU的组成和功能。

2.2 使用示波器观察CPU的工作波形,分析CPU的工作原理。

2.3 通过实验软件,验证CPU的控制信号和时序。

(3)存储器实验3.1 查看存储器实验指导书,了解存储器的组成和功能。

3.2 使用逻辑分析仪观察存储器的读写过程,分析存储器的工作原理。

3.3 通过实验软件,验证存储器的读写操作。

(4)输入/输出(I/O)接口实验4.1 查看I/O接口实验指导书,了解I/O接口的组成和功能。

4.2 使用示波器观察I/O接口的信号波形,分析I/O接口的工作原理。

4.3 通过实验软件,验证I/O接口的通信过程。

2. 计算机组成原理综合实验(1)计算机系统结构综合实验5.1 分析计算机系统结构的组成和功能,总结各部件之间的关系。

5.2 使用实验软件,模拟计算机系统结构的工作过程。

中山大学计算机组成原理实验单周期CPU设计

中⼭⼤学计算机组成原理实验单周期CPU设计《计算机组成原理实验》实验报告(实验三)学院名称:数据科学与计算机学院专业(班级):学⽣姓名:学号:时间:2019 年11 ⽉8 ⽇成绩:实验三:单周期CPU设计与实现⼀.实验⽬的(1) 掌握单周期CPU数据通路图的构成、原理及其设计⽅法;(2) 掌握单周期CPU的实现⽅法,代码实现⽅法;(3) 认识和掌握指令与CPU的关系;(4) 掌握测试单周期CPU的⽅法。

⼆.实验内容设计⼀个单周期CPU,该CPU⾄少能实现以下指令功能操作。

指令与格式如下:==> 算术运算指令加“加”运算。

加“加”运算。

==> 逻辑运算指令加“与”运算。

功能:GPR[rt] ←GPR[rs] or zero_extend(immediate)。

==>移位指令==>⽐较指令==> 存储器读/写指令==> 分⽀指令else pc ←pc + 4特别说明:offset是从PC+4地址开始和转移到的指令之间指令条数。

offset符号扩展之后左移2位再相加。

为什么要左移2位?由于跳转到的指令地址肯定是4的倍数(每条指令占4个字节),最低两位是“00”,因此将offset放进指令码中的时候,是右移了2位的,也就是以上说的“指令之间指令条数”。

else pc ←pc + 4(16)bltz rs, offsetelse pc ←pc + 4。

==>跳转指令(17)j addr说明:由于MIPS32的指令代码长度占4个字节,所以指令地址⼆进制数最低2位均为0,将指令地址放进指令代码中时,可省掉!这样,除了最⾼6位操作码外,还有26位可⽤于存放地址,事实上,可存放28位地址,剩下最⾼4位由pc+4最⾼4位拼接上。

==> 停机指令功能:停机;不改变PC的值,PC保持不变。

三.实验原理单周期CPU指的是⼀条指令的执⾏在⼀个时钟周期内完成,然后开始下⼀条指令的执⾏,即⼀条指令⽤⼀个时钟周期完成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档