文档库 最新最全的文档下载
当前位置:文档库 › 杭电计组实验9-实现R-I型指令的CPU设计实验

杭电计组实验9-实现R-I型指令的CPU设计实验

杭电计组实验9-实现R-I型指令的CPU设计实验
杭电计组实验9-实现R-I型指令的CPU设计实验

实验报告

2018 年 6 月 1 日成绩:

三、电路图

顶层电路内部结构

四、引脚配置(约束文件)

NET "LED[7]" LOC = T11;

NET "LED[6]" LOC = R11;

NET "LED[5]" LOC = N11;

NET "LED[4]" LOC = M11;

杭电计组实验报告10

计组实验十 老师:包健 一、源代码测试模块代码: module Top( inputinclk, inputmem_clk, inputrst, outputreg[7:0] LED, input [3:0] SW ); wireclk; MyButtonmb( .clk_100MHz(mem_clk), .BTN(inclk), .BTN_Out(clk) ); wire [31:0] ALU_F; wire [31:0] M_R_Data; wire ZF; wire OF; wire [31:0]PC; My_I_CPUmy_i_cpu( .clk(clk), .mem_clk(mem_clk), .rst(rst), .ALU_F(ALU_F), .M_R_Data(M_R_Data), .ZFF(ZF), .OF(OF), .PC_out(PC) ); always@(*) begin case(SW) 4'd0:LED=ALU_F[7:0]; 4'd1:LED=ALU_F[15:8]; 4'd2:LED=ALU_F[23:16]; 4'd3:LED=ALU_F[31:24]; 4'd4:LED=M_R_Data[7:0];

4'd5:LED=M_R_Data[15:8]; 4'd6:LED=M_R_Data[23:16]; 4'd7:LED=M_R_Data[31:24]; 4'd8:LED={ZF,6'd0,OF}; 4'd12:LED=PC[7:0]; 4'd13:LED=PC[15:8]; 4'd14:LED=PC[23:16]; 4'd15:LED=PC[31:24]; default:LED=8'b0000_0000; endcase end endmodule 顶层模块代码: moduleMy_I_CPU( inputclk, inputmem_clk, inputrst, output [31:0] ALU_F, output [31:0] M_R_Data, output ZFF, output OF, output [31:0]PC_out ); //wire clk_n = ~clk; wire[31:0] codes; wire [31:0]PC_new; reg [31:0]PC; Inst_Fetch1 inst_fetch( .PC(PC), .rst(rst), .clk(clk), .Inst_codes(codes), .PC_new(PC_new) ); wire[5:0] OP; wire[5:0] func;

杭电计组期末习题-包健

微操作控制信号 图1 图2 题1、某8位模型机采用微程序控制器,结构如图1所示。其中MEM为主存,R0~R3是通用寄存器。各部件的控制信号均已标出,控制信号的命名准则是:‘→’符号前的是数据发送方部件,‘→’符号后的是数据接收方部件,并且控制信号中的B表示总线;J1#控制指令译码,其他读写信号具有普通意义。例如:B→DA1表示总线上的数据送入DA1暂存器;ALU→B#表示ALU运算的结果送到总线上(低电平有效)。 (1)图1中有22个微操作控制信号,另外3个信号J1#~J3#是用于微指令转移的判别测试条件。在微指令中,控制字段采用直接控制法,判别测试字段采用译码法编码,下址字段8位,则微指令字长多少位?该模

型机的控存容量是多少?MEM→DA1,微指令必须发送的微操作控制信 号是什么? (2)模型机的某条指令的微程序流程图如图2所示,写出该条指令的功能、寻址方式、指令第二字的含义。 (3)(5分)根据图1所示的数据通路,写出ADD RD,[ADDR]指令的微程序流程图。 指令功能为(RD)+(ADDR)→RD,即寄存器RD的内容加内存单元ADDR的 内容送回RD寄存器。指令格式如下: 题2、设32位计算机主存容量为4GB,存储器按字节编址,Cache容量为256KB,每块32字节,Cache按2路组相联方式组织,则主存地址至少需(1) 位,其中“标记”字段(2) 位,Cache组地址(3) 位,块内地址(4) 位,主存地址656DECH可映射到Cache的第(5) 行。 题3:设X=2.75,Y= -12/32 (1)写出X和Y的规格化浮点数,设浮点数阶码6位(包含一位符号位)用移码表示, 尾数6位(包含一位符号位)用补码表示,阶码在前,尾数在后; (2)用浮点数计算[X+Y]浮,请写出计算过程。

计组实验报告

计算机组成原理实验报告 实验1:VERILOG 设计基础 专业班级:14级计算机二班 学号:14048001 姓名:杨娜 学号:14048003 姓名:周蓉 实验地点:理工楼901 实验时间:2016年5月14日

实验十VGA显示控制器的设计 一、实验目的 1、学习VERILOG的基本语法和编程规则 2、掌握通用寄存器等常用基本数字模块的VERILOG描述和基本设计方法 3、理解带使能控制和异步清零的8位寄存器的设计原理 4、掌握使用VERILOG设计和验证带使能控制和异步清零的8位寄存器的方法 5、掌握移位寄存器的设计方法 二、实验任务 1、设计一个带使能控制和异步清零的8位寄存器REG8X,实现8位输入的锁存,在时钟的上升沿处得到一个8位的输出和一个8位的反向输出,将结果显示在发光二极管。 模块的端口描述如下: 模块的参考物理结构如下: R7 R6 R i R 0 7 6 i 0 带使能控制和异步清零的8位寄存器 模块的使用注意事项

1.数据源D(7..0)一直加在寄存器的数据输入端; 2.周期性的时钟信号Clock一直加在寄存器的时钟输入端 3.使能信号Enable控制寄存器是否接受数据。当Enable = '0'时,寄存器不 接受数据,保持原来的状态不变;当Enable = '1'时,在时钟信号Clock正 跳变时,寄存器接受并保存当时D(7..0)的数据; 4.本寄存器其它方面的功能与上述的寄存器相同。 完成的参考电路图如下:dout=q 2、设计一个有左、右移位功能的8位寄存器REGSHIFT8,并仿真验证。

三、实验内容 1、通过输入数据先进行计算,并通过实验进行验证REG8X。 (1)、将清零信号Resetn(sw17)设为0,将输入信号D(sw7~sw0)设为10101010,观察输出信号Q(ledr7~ledr0)和Qb(ledg7~ledg0),观察并记录输出。 (2)、将清零信号Resetn(sw17)设为1,在时钟信号处输入一个上升沿(按下key0),观察并记录输出。 (3)、将输入信号D(sw7~sw0)设为01010101,观察并记录输出。 (4)、在时钟信号处输入一个上升沿(按下key0),观察并记录输出。 (5)、自行完善设计表格,观察并记录测试输出。 实验数据表 2、通过输入数据先进行计算,并通过实验进行验证REGSHIFT8。 (1)、测试清零信号Resetn (2)、测试移位功能 (3)、测试寄存功能 (4)、自行设计表格观察并记录测试输出。 实验数据表

杭电计组实验1-全加器设计实验

杭电计组实验1-全加器设计实验 杭州电子科技大学计算机学院实验报告实验项目:实验1-全加器设计实验课程名称:计算机组成原理与系统结构课程设计姓名: 学号: 同组姓名: 学号: 实验位置(机号): 自己的笔记本实验日期: 指导教师: 实验内容(算法、程序、步骤和方法)一、实验目的(1),学习ISE工具软件的使用及仿真方法(2)学习FPGA程序的下载方法(3)熟悉Nexys3实验板(4)掌握运用VerilogHDL进行结构描述与建模的技巧和方法(5)掌握二进制全加器的原理和设计方法二、实验仪器ISE工具软件三、步骤、方法(1)启动XilinxISE 软件,选择File-NewProject,输入工程名,默认选择后,点击Next按钮,确认工程信息后点击Finish按钮,创建一个完整的工程。 (2)在工程管理区的任意位置右击,选择NewSource命令。弹出NewSourceWizard对话框,选择VerilogModule,并输入Verilog文件名shiyan1,点击Next按钮进入下一步,点击Finish完成创建。 (3)编辑程序源代码,然后编译,综合;选择Synthesize--XST项中的CheckSyntax右击选择Run命令,并查看RTL视图;如果编译出错,则需要修改程序代码,直至正确。 (4)在工程管理区将View类型设置成Simulation,在任意位置右击,选择NewSource命令,选择VerilogTestFixture选项。输入文件名shiyan1_test,点击Next,点击Finish,完成。编写激励代码,观察仿真波形,如果验证逻辑有误,则修改代码,重新编译,仿真,直至正确。 (5)由于实验一并未链接实验板,所以后面的链接实验板的步骤此处没有。 操作过程及结果一、操作过程实验过程和描述: moduleshiyan1(A,B,C,F,Ci);inputA,B,C;outputF,Ci;wireA,B,C,F,Ci;wi reS1,S2,S3;xorXU1(F,A,B,C),XU2(S1,A,B);andAU1(S2,A,B),AU2(S3,S1,C);or OU1(Ci,S2,S3);endmodule仿真代码 moduleshiyan1_test;//InputsregA;regB;regC;//OutputswireF;wireCi;/ /InstantiatetheUnitUnderTest(UUT)shiyan1uut(.A(A),.B(B),.C(C),.F(F),. Ci(Ci));initialbegin//InitializeInputsA=0;B=0;C=0;//Wait100nsforgloba lresettofinish#100;//AddstimulushereA=0;B=0;C=0;#100A=0;B=0;C=1;#100A =0;B=1;C=0;#100A=0;B=1;C=1;#100A=1;B=0;C=0;#100A=1;B=0;C=1;#100A=1;B= 1;C=0;#100A=1;B=1;C=1;EndRTL图 二、结果 思考题: ((1)根据查看顶层模块RTL的最外层的输入输出接口,和实验指导书式(14.1)所示电路相比,该电路图的输入输出引脚和这个加法器的引脚图式是相符合的。 ((2))尝试使用数据流描述方式现实现

计算机组成原理实验

实验一 实验目的:通过了解高级语言源程序和目标机器代码的不同表示及其相互转换,深刻理解高级语言和机器语言之间的关系,以及机器语言和不同体系结构之间的关系。 实验要求:对教材1.3.5 节给出的hello.c 源程序进行编译、链接,最终生成可执行目标代码。 实验报告: 1. 说明你做实验的过程(重要步骤用屏幕截图表示)。 第一步:下载FlexHEX软件。 第二步:编写hello.c源代码。#include Int main() { Printf(“Hello!\n”); Return 0; } 第三步:用FlexHEX打开hello world源程序 第四步:用FlexHEX打开hello world可执行文件。 第五步:比较源程序文件的内容和可执行文件的内容 2. 给出源程序(文本文件)的内容(用十六进制形式表示)。 3. 给出可执行目标文件(二进制文件)的内容(用十六进制形式表示)。

4.(1)分析同一个源程序在不同机器上生成的可执行目标代码是否相同。 答:不相同。因为对于不同的机器其硬件组成不同,例如:CPU。所以同一个源程在不同机器上生成的可执行目标代码是不同的。 (2)你能在可执行目标文件中找出函数printf ()对应的机器代码段吗?能的话,请标示来。 答:不能。因为源程序中的printf函数在可执行文件中已转换为机器语言。被翻译的机器语言中有printf函数,但是不知道是从哪一段开始翻译的。 (3)为什么源程序文件的内容和可执行目标文件的内容完全不同? 答:因为源程序文件时可以直接编写的。而可执行文件是被机器语言翻译过后的执 行内容。所以内容不同。

计算机组成原理实验报告 算术逻辑运算单元实验

西华大学数学与计算机学院实验报告 课程名称:计算机组成原理年级:2011级实验成绩: 指导教师:祝昌宇姓名:蒋俊 实验名称:算术逻辑运算单元实验学号:312011*********实验日期:2013-12-15 一、目的 1. 掌握简单运算器的数据传输方式 2. 掌握74LS181的功能和应用 二、实验原理 (1)ALU单元实验构成 1、结构试验箱上的算术逻辑运算单元上的运算器是由运算器由2片74LS181构成8字长的ALU 单元。 2、2片74LS373作为2个数据锁存器(DR1、DR2),8芯插座ALU-OUT作为数据输入端,可通过短8芯扁平电缆,把数据输入端连接到数据总线上。 3、运算器的数据输出由一片74LS244(输出缓冲器)来控制,8芯插座ALU-OUT作为数据输出端,可通过短8芯扁平电缆把数据输出端连接到数据总线上。 (2)ALU单元的工作原理 数据输入锁存器DR1的EDR1为低电平,并且D1CK有上升沿时,把来自数据总线上的数据打入锁存器DR1。同样,使EDR2为低电平,并且D2CK有上升沿时,把来自数据总线上的数据打入锁存器DR2。 算术逻辑运算单元的核心是由2片74LS181构成,它可以进行2个8位二进制数的算术逻辑运算,74LS181的各种工作方式可通过设置其控制信号来实现(S0、S1、S2、S3、M、CN)。当实验者正确设置了74LS181的各个控制信号,74LS181会运算数据锁存器DR1、DR2内的数据。由于DR1、DR2已经把数据锁存,只要74LS181的控制信号不变,那么74LS181的输出数据也不会发生改变。 输出缓冲器采用74LS244,当控制信号ALU-O为低电平时,74LS244导通,把74LS181的运算结果输出到数据总线;ALU-O为高电平时,74LS244的输出为高阻。

杭电计组实验3-多功能ALU设计实验

杭电计组实验3-多功能ALU设计实验杭州电子科技大学计算机学院 实验报告 实验项目: 课程名称:计算机组成原理与系统结构课程设计 姓名: 学号: 同组姓名: 学号: 实验位置(机号): 实验日期: 指导教师: 一、实验目的 (1)学习多功能ALU的工作原理,掌握运算器的设计方法。 (2)掌握运用Verilog HDL进行数据流描述与建模的技巧和方法,掌握运算器的设计方 法。 二、实验仪器 实验 ISE工具软件 内容三、步骤、方法 (算(1)启动Xilinx ISE软件,选择File->New Project,输入工程名 shiyan2,默认选择后,点法、击Next按钮,确认工程信息后点击Finish按钮,创建一个完整的工程。程(2)在工程管理区的任意位置右击,选择New Source命令。弹出New Source Wizard对序、话框,选择Verilog Module,并输入Verilog 文件名shiyan3,点击Next按钮进入下一步,点步骤击Finish完成创建。 和方(3)编辑程序源代码,然后编译,综合;选择Synthesize--XST项中的Check Syntax右击法) 选择Run命令,并查看RTL视图;如果编译出错,则需要修改程序代码,直至正确。

(4)在工程管理区将View类型设置成Simulation,在任意位置右击,选择New Source命 令,选择Verilog Test Fixture选项,输入实验名shiyan3_test。点击Next,点击Finish,完成。 编写激励代码,观察仿真波形,如果验证逻辑有误,则修改代码,重新编译,仿真,直至 正确。 (5)由于实验三并未链接实验板,所以后面的链接实验板的步骤此处没有。 一,操作过程 实验过程和描述: module shiyan3(ALU_OP,AB_SW,OF,ZF,F); reg [31:0]A,B; input [2:0]ALU_OP; input [2:0]AB_SW; 操作 wire OF; 过程 reg ZF; 及结reg [31:0]F; 果 output OF; output ZF; output F; reg C32; always@(*) begin case(AB_SW)

[笔记]杭电计组实验3-多功能ALU设计实验

[笔记]杭电计组实验3-多功能ALU设计实验杭州电子科技大学计算机学院 实验报告 实验项目: 课程名称:计算机组成原理与系统结构课程设计 姓名: 学号: 同组姓名: 学号: 实验位置(机号): 实验日期: 指导教师: 一、实验目的 (1)学习多功能ALU的工作原理,掌握运算器的设计方法。 (2)掌握运用Verilog HDL进行数据流描述与建模的技巧和方法,掌握运算器的设计方 法。 二、实验仪器 实验 ISE工具软件 内容三、步骤、方法 (算(1)启动Xilinx ISE软件,选择File->New Project,输入工程名 shiyan2,默认选择后,点法、击Next按钮,确认工程信息后点击Finish按钮,创建一个完整的工程。程(2)在工程管理区的任意位置右击,选择New Source命令。弹出New Source Wizard对序、话框,选择Verilog Module,并输入Verilog 文件名shiyan3,点击Next按钮进入下一步,点步骤击Finish完成创建。

和方(3)编辑程序源代码,然后编译,综合;选择Synthesize--XST项中的Check Syntax右击法) 选择Run命令,并查看RTL视图;如果编译出错,则需要修改程序代码,直至正确。 (4)在工程管理区将View类型设置成Simulation,在任意位置右击,选择New Source命 令,选择Verilog Test Fixture选项,输入实验名shiyan3_test。点击Next,点击Finish,完成。 编写激励代码,观察仿真波形,如果验证逻辑有误,则修改代码,重新编译,仿真,直至 正确。 (5)由于实验三并未链接实验板,所以后面的链接实验板的步骤此处没有。 一,操作过程 实验过程和描述: module shiyan3(ALU_OP,AB_SW,OF,ZF,F); reg [31:0]A,B; input [2:0]ALU_OP; input [2:0]AB_SW; 操作 wire OF; 过程 reg ZF; 及结reg [31:0]F; 果output OF; output ZF; output F; reg C32; always@(*) begin case(AB_SW)

杭电计组实验5-存储器设计实验

杭电计组实验5-存储器设计实验

实验报告 2018 年 5 月 5 日成绩: 姓名阳光男学号16041321 班级16052317 专业计算机科学与技术课程名称《计算机组成原理与系统结构试验》 任课老 师张翔老师 指导老 师 张翔老师机位号默认 实验序 号5 实验名 称 《实验五存储器设计实验》 实验时 间2018/5/12 实验地 点 1教211 实验设 备号 个人电脑、 Nexys3开发板 一、实验程序源代码

存储器顶层电路代码: module top_RAM_B(Mem_Addr,C,Mem_Write,Clk,LED); input [7:2]Mem_Addr;//开关的3、4、5、6、7、8位 input Mem_Write,Clk;//clk为按键C9,读写使能信号为按键C4,0为读,1为写input [1:0]C;//选择写入数据+读操作时选择显示字节,为开关1、2位 output reg [7:0]LED; wire [31:0]M_R_Data;//存在存储器里的32位读出数据 reg [31:0]M_W_Data;//寄存在暂存器的32位写入数据 RAM_B test_ram ( .clka(Clk), //输入时钟信号 .wea(Mem_Write), //输入读写信号 .addra(Mem_Addr[7:2]), //输入5位地址信号 .dina(M_W_Data), //写入32位数据 .douta(M_R_Data) //读出32位数据 ); always@(*) begin LED=0;//初始化 M_W_Data=0;//初始化 if(!Mem_Write)//读操作 .clka(clka), .wea(wea), .addra(addra), .dina(dina), .douta(douta) ); initial begin // Initialize Inputs clka = 0; wea = 0; addra = 0; dina = 0;

计组实验报告2016

电 子 科 技 大 学 实验报告

(一) 一实验名称:8位算术逻辑运算实验 二实验学时:4学时 三实验内容、目的和实验原理: 实验目的: 1. 掌握算术逻辑运算器单元ALU(74LS181)的工作原理。 2. 掌握模型机运算器的数据传送通路组成原理。 3. 验证74LS181的组合功能。 4. 按给定数据,完成实验指导书中的算术/逻辑运算。 实验原理: 1. 运算器由两片74LS181以并/串形式构成8位字长的ALU。 2. 运算器的输出经过一个三态门(74LS245)和数据总线相连。 3. 运算器的两个数据输入端分别由两个锁存器(74LS273)锁存。 4. 锁存器的输入连至数据总线,数据开关(INPUT DEVICE)用来给出参与运算的数据,并经过一三态门(74LS245)和数据总线相连。 5. 数据显示灯(BUS UNIT)已和数据总线相连,用来显示数据总线内容。 四实验器材(设备、元器件) 1. DVCC实验机一台 五实验步骤: 连接线路,仔细检查核对后接通电源。 用二进制数据开关KD0-KD7向DR1和DR2寄存器置入8位运算数据。 检验DR1和DR2置入的数据是否正确。 验证74LS181的算术和逻辑运算功能。 填写实验报告表3-1中的空白数据。

六实验数据及结果分析(包括各种截图:实验过程截图、界面截图、操作截图、运算结果截图): 七实验结论、心得体会和改进建议:

实验结论: 1. S3、S2、S1、S0、M、Cn、LDDR1、LDDR2、ALU-B、SW-B均为电平信号,与"SWITCH UNIT"中的二进制开关对应相接,用于模拟产生电平控制信号。开关状态打上去是高电平,打下来是低电平。 2. 数据开关输入数据时,要打开SW-B,关闭ALU-B 心得体会: 1. 通过这次实验我掌握了算术逻辑运算器单元ALU(74LS181)工作原理。 2. 通过这次实验我掌握了模型机运算器的数据传送通路组成原理。 3. 通过这次实验我验证了74LS181的组合功能。

杭电计组实验报告9

计组实验九 老师:包健 一、源代码 测试模块代码: moduleTest_Top; // Inputs reginclk; regmem_clk; regrst; reg [3:0] SW; // Outputs wire [7:0] LED; // Instantiate the Unit Under Test (UUT) Top uut ( .inclk(inclk), .mem_clk(mem_clk), .rst(rst), .LED(LED), .SW(SW) ); reg [2:0] i; initial begin // Initialize Inputs inclk = 0; mem_clk = 0; rst = 0; SW = 0; i=0; // Wait 100 ns for global reset to finish #100; rst = 1; #100; rst =0 ;

#100; forever begin #100; mem_clk=~mem_clk; i=i+1; if(i==3'b000) inclk=~inclk; end end endmodule 顶层模块代码: moduleMy_I_CPU( inputclk, inputmem_clk, inputrst, output [31:0] ALU_F, output [31:0] M_R_Data, output ZF, output OF ); wireclk_n = ~clk; wire[31:0] codes; Inst_Fetch1 inst_fetch( .rst(rst), .clk(clk), .Inst_codes(codes) ); wire[5:0] OP; wire[5:0] func; wire[2:0] ALU_OP; wirerd_rt_s; wireimm_s; wirert_imm_s; wirealu_mem_s; wireWrite_Reg;

计算机组成原理实验报告2

计算机组成原理实验报告

F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); M : IN STD_LOGIC; CN : IN STD_LOGIC; CO : OUT STD_LOGIC ); END ALU181; ARCHITECTURE behav OF ALU181 IS SIGNAL A9 : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL B9 : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL F9 : STD_LOGIC_VECTOR(8 DOWNTO 0); BEGIN A9 <= '0' & A ; B9 <= '0' & B ; PROCESS(M,CN,A9,B9) BEGIN CASE S IS WHEN "0000" => IF M='0' THEN F9<=A9 + CN ; ELSE F9<=NOT A9; END IF; WHEN "0001" => IF M='0' THEN F9<=(A9 or B9) + CN ; ELSE F9<=NOT(A9 OR B9); END IF; WHEN "0010" => IF M='0' THEN F9<=(A9 or (NOT B9))+ CN ; ELSE F9<=(NOT A9) AND B9; END IF; WHEN "0011" => IF M='0' THEN F9<= "000000000" - CN ; ELSE F9<="000000000"; END IF; WHEN "0100" => IF M='0' THEN F9<=A9+(A9 AND NOT B9)+ CN ; ELSE F9<=NOT (A9 AND B9); END IF; WHEN "0101" => IF M='0' THEN F9<=(A9 or B9)+(A9 AND NOT B9)+CN ; ELSE F9<=NOT B9; END IF; WHEN "0110" => IF M='0' THEN F9<=(A9 - B9) - CN ; ELSE F9<=A9 XOR B9; END IF; WHEN "0111" => IF M='0' THEN F9<=(A9 or (NOT B9)) - CN ; ELSE F9<=A9 and (NOT B9); END IF; WHEN "1000" => IF M='0' THEN F9<=A9 + (A9 AND B9)+CN ; ELSE F9<=(NOT A9)and B9; END IF; WHEN "1001" => IF M='0' THEN F9<=A9 + B9 + CN ; ELSE F9<=NOT(A9 XOR B9); END IF; WHEN "1010" => IF M='0' THEN F9<=(A9 or(NOT B9))+(A9 AND B9)+CN ; ELSE F9<=B9; END IF; WHEN "1011" => IF M='0' THEN F9<=(A9 AND B9)- CN ; ELSE F9<=A9 AND B9; END IF; WHEN "1100" => IF M='0' THEN F9<=(A9 + A9) + CN ; ELSE F9<= "000000001"; END IF; WHEN "1101" => IF M='0' THEN F9<=(A9 or B9) + A9 + CN ; ELSE F9<=A9 OR (NOT B9); END IF; WHEN "1110" => IF M='0' THEN F9<=((A9 or (NOT B9)) +A9) + CN ; ELSE F9<=A9 OR B9; END IF; WHEN "1111" => IF M='0' THEN F9<=A9 - CN ; ELSE F9<=A9 ; END IF; WHEN OTHERS => F9<= "000000000" ; END CASE; END PROCESS; F<= F9(7 DOWNTO 0) ; CO <= F9(8) ; END behav;

计算机组成原理实验七~九

计算机学院学院计算机科学与技术专业班___组、学号 姓名协作者______________ 教师评定_______________ 实验题目实验七中断实验 一、实验目的: 1.加深理解计算机系统中断的工作原理及处理过程。 2.学习和掌握中断产生、响应、处理等技术。 3.掌握中断服务子程序的编写要点,进行一次硬、软件的综合调试。 二、实验设备与器材: TEC-XP+教学实验系统和仿真终端软件PCEC。 三、实验说明和原理: 1)要求中断隐指令中执行关中断功能,如果用户中断服务程序允许被中断,必须在 中断程序中执行EI开中断命令。 2)教学机的中断系统共支持三级中断,由三个无锁按键确定从右到左依次为一、二、 三级中断,对应的P1、P0的编码分别是01、10、11,优先级也依次升高,这决定了 它们的中断向量,为XXX4、XXX8、XXXC。可以看到,每级中断实际可用空间 只有四个字节,故这个空间一般只存放一条转移指令,而真正的用户中断服务程序 则存放在转移指令所指向的地址。 3)用户需扩展中断隐指令、开中断指令、产中断指令、中断返回指令及其节拍。 四、实验内容: 1)扩展中断隐指令,为中断隐指令分配节拍,中断隐指令用到12个节拍,为了和一般 指令相区别,应将其节拍T3设计为1.

2)扩展开中断指令EI、关中断指令DI、中断返回指令IRET。 3)确定中断向量地址。中断微量的高12位由开关确定为(0001001000000)。三级中 断对应的中断微量为2404H、2408H、240CH。当有中断请求且被响应后,将执行 存放在该中断的中断微量所指向的内存区的指令。 4)真写中断微量表。在上述2404H、2408H、240CH地址写入三条JR转移指令,JR指 令的OFFSSET是-128~127之间,但在PCEC16中输入时,用户不需要计算偏移量, 直接输入要转向的绝对地址即可。 5)编写中断服务程序。中断服务程序可以放在中断微量表之后,中断服务程序可以实 现在程序正常运行时在计算机屏幕上显示与优先级相对应的不同字符。 6)写主程序。可编写一死循环,要求先开中断。 五、实验步骤与中断程序编写: 1)填写中断向量表 a)将数据开关的高12位设置成:0010 0100 0000,即选择三级中断的中断向量为 2404H、2408H、240CH。 b)中断向量一共有16位,高12位由数据开关SWH7-0和SWL7-4决定;后四位有无 锁按键决定,分别为01、10、11,所以中断向量的16位为2404 、2408 、240C。 c)向量表指令填写: (2404)JR 2420 (2408)JR 2430 (240C)JR 2440 2)编写中断程序 用A、E命令从2420H单元开始输入下面和程序:(标有*的语句表示要用E命令输入)2420:PUSH R0 2421:PUSH R3 2422:MVRD R3,31 2424:JR 2450 2430:PUSH R0 2431:PUSH R3

相关文档
相关文档 最新文档