计算机专业计算机组成原理微指令扩展综合实验报告.docx
- 文档编号:5546591
- 上传时间:2022-12-19
- 格式:DOCX
- 页数:12
- 大小:112.76KB
计算机专业计算机组成原理微指令扩展综合实验报告.docx
《计算机专业计算机组成原理微指令扩展综合实验报告.docx》由会员分享,可在线阅读,更多相关《计算机专业计算机组成原理微指令扩展综合实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
计算机专业计算机组成原理微指令扩展综合实验报告
华北科技学院计算机学院设计性实验
实验报告
课程名称计算机组成原理B
实验学期2012至2013学年第二学期
学生所在院部计算机学院
年级2010专业班级网络B102
学生姓名李自奇学号201007024202
任课教师席振元
实验成绩
计算机学院制
《计算机组成原理A》课程设计性实验报告
开课实验室:
计算机组成原理实验室2013年5月24日
实验题目
指令扩展实验
一、实验目的
深入了解教学计算机微程序控制器的组成和设计技术,包括Am2910器件的功能与具体用法,教学计算机的总体组成和部件之间的连接方法,总之应该深入理解控制器部件的组成、设计、控制与使用等诸项知识。
二、设备与环境
TEC-XP+教学机,微机一台,装有WindowsXP、ISPLEVER、ispVMSystem等软件。
三、实验内容
在现有的基本指令系统上,扩展2条指令。
指令一:
NXORDR,SR//DR与SR的值进行异或非运算并将结果返回DR
指令二:
SWRMDR,[SR]//DR的值与SR中存储的值对应的内存单元的值互换
四、实验步骤
1、扩展的2条指令
扩展的2条指令的基本信息,包括指令的格式、功能、寻址方式、操作码编码、微程序步数、微程序入口地址
序
号
格式
功能
寻址方式
操作码编码
微程序步数
微程序入口地址
1
NXORDR,SR
DR与SR的值异或非
寄存器直接寻址
22H
1
80
4
SWRMDR,[SR]
DR与[SR]的值互换
DR为寄存器直接寻址,[SR]为寄存器间接寻址
E9H
4
8A
2、指令所对应的微程序
(1)、微程序各字段的含义
入口地址:
指令的微程序入口地址;
下址:
微程序执行完后下一条微程序的地址;00表示需要进行地址转移逻辑,30表示微程序结束。
CI3-0:
判别测试字段,其主要编码及功能如表1。
SCC3-0:
地址转移逻辑字符,仅当CI3-0为0011时有效。
其主要编码及功能如表2。
MRW:
控制对内存和I/O接口的读写,其主要功能如下:
000,写内存;001读内存;010写串口;011读串口;1XX无内存和串口的读写操作。
I2-0:
控制数据来源,其编码及功能见表3。
I8-6:
控制对运算结果的处理,其编码及功能见表3。
I5-3:
运算功能的选择,其编码及功能见表3。
表3Am2901的9位控制码编码及功能
SST:
对CZVS的控制。
SSHSCI:
设置进位输入。
B口:
1000表示IR的DR字段,0000表示不用B口。
A口:
1000表示IR的SR字段,0000表示不用A口。
DC2:
专用寄存器接收控制,其主要编码及功能见表4-1。
DC1:
送内部总线的数据,其主要编码及功能见表4-2。
表4-1
专用寄存器接受控制
表4-2
内部总线数据来源选择控制
DC2编码
译码操作
操作说明
DC2编码
译码操作
操作说明
000
NC
不操作
000
/SWTOIB
送开关内容到内部总线
001
/GIR
指令寄存器接受
001
/RTOIB
送ALU输出到内部总线
010
/
16位机不用
010
/ETOIB
送IR地位字节内容到内部总线
011
/GAR
地址寄存器接受
011
/FTOIB
送程序状态字到内部总线
100
/INTR
恢复原中断优先级
100
/
16位机不用
101
/INTN
接受新中断优先级
101
/
16位机不用
110
/E1
用于开中断指令
110
/INTV
送中断向量到内部总线
111
/D1
用于关中断指令
111
NC
不操作
(2)、指令所对应的微程序
序号
指令
入口地址
下址
CI3-0
SCC3-0
MRW
I2-0
I8-6
I5-3
B口
A口
SST
SSHSCI
DC2
DC1
1
NXORDR,SR
80
30
30
4,1
3,7
8,8
1,0
0,0
4
SWRMDR,[SR]
8A
00
E0
4,3
0,0
8,0
0,0
0,0
00
E0
4,4
1,0
0,8
0,0
3,0
00
E0
1,7
3,0
8,0
0,0
0,0
30
30
0,2
1,0
0,0
0,0
0,1
(1)指令:
NXORDR,SR
该指令共包括一步微指令,该步微指令的功能及各字段值的意义简述如下:
入口地址:
NXOR指令的微程序入口地址为80H;
下址:
30,即下一条指令的存储地址为30H,且为结束程序指令;
CI3-0/SCC3-0:
30
CI3-0为3,转换为二进制为0011,由上表1中的表可知此时进行条件微转移,SCC3-0为0,转换为二进制为0000,其功能为必转移,即执行完该条微指令后必须转移到下一条指令对应的地址。
MRW/I2-0:
4,1
由上图可知,MRW为4,转换为二进制为1XX,由MRW功能可知,其功能为无内存和串口的读写操作;
该指令中I2-0为1,转换为二进制为001,由表3中可知,数据来源于A,B两个寄存器;
I8-I6/I5-I3:
3,7
该指令中I8-I6为3,转换为二进制为011,I5-I3为7,转换为二进制为111,根据表3可知,I8-I6的功能为将运算结果存入B寄存器;I5-I3的功能为异或指令;
B口/A口:
8,8
该指令中B口和A口均为8,指明了A口和B口的地址均为1000,该指令使用了A和B两个寄存器;
SST/SSHSCI:
1,0
该指令中SST为1,即为001,代表CZVS为C(Cy)Z(ZR)V(OV)S(F15);SSHSCI为0,即为000,即表示Cin=0;
DC2/DC1:
0,0
该指令中DC1和DC2分别为0,0,表示为二进制为000,000,由表4-1和表4-2可得,DC1表示送开关内容到内部总线,DC2表示不操作。
(2)指令:
SWRMDR,[SR]
改指令需要四步微指令完成。
第一步:
该指令的入口地址为8A,下址为00,微程序顺序执行,无内存操作,数据来源为011,运算结果送入Q寄存器,并由Y口输出,进行R与S的加法操作,B口为IR的DR,不使用A口数据,状态寄存器的值不变,进位输入为0,专用寄存器无操作,送开关内容到内部总线;
第二步:
微程序的入口地址为8B,下址为00,顺序执行,无内存操作,数据来源为100,运算结果送入Y输出,进行R与S的加法运算,不使用B口数据,A口为IR的SR,状态寄存器的值不变,进位输入为0,地址寄存器接收数据,送开关内容到内部总线;
第三步:
微程序的入口地址为8C,下址为00,顺序执行,对内存进行读操作,运算器外获得数据,运算结果送入B口,并由Y输出,进行R与S的或运算,B口为IR的DR,不使用A口数据,状态寄存器的值不变,进位输入为0,专用寄存器无操作,送开关内容到内部总线;
第四步:
微程序的入口地址为8D,下址为30,执行完后必转,对内存进行写操作,数据来源为010,运算结果送入Y输出,进行R与S的加法运算,不使用A口与B口数据,状态寄存器的值不变,进位输入为0,专用寄存器无操作,送ALU输出到内部总线。
3、ABEL语言源程序编辑以及JED文件生成
利用ISPLEVER软件打开原始代码文件进行修改,将NXOR和ADRM两条指令写入芯片中。
(1)添加指令操作码
NXOR=(IR==[0,0,1,0,0,0,1,0]);
SWRM=(IR==[1,1,1,0,1,0,0,1]);
(2)添加入口地址
MA80=(Y==[10000000]);//80HNXOR指令入口地址
MA8A=(Y==[10001010]);//8AHSWRM指令第一条伪指令入口地址
MA8B=(Y==[10001011]);
MA8C=(Y==[10001100]);
MA8D=(Y==[10001101])
(3)入口地址定义
对NXOR指令做如下修改:
D7=!
C_M&(!
_MAP&(NXOR#......)#NXTADDR7&!
_PL)&!
Bit8;
对ADRM指令做如下修改:
D1=!
C_M&(!
_MAP&(SWRM#······)#NXTADDR1&!
_PL)&!
Bit8;
D3=!
C_M&(!
_MAP&(SWRM#······)#NXTADDR3&!
_PL)&!
Bit8;
D7=!
C_M&(!
_MAP&(NXOR#SWRM#······)#NXTADDR7&!
_PL)&!
Bit8;
(4)下址定义
对NXOR指令做如下修改:
NXTADDR5:
=!
C_M&(MA80#......)&!
Bit8;
NXTADDR4:
=!
C_M&(MA80#......)&!
Bit8;
对ADRM指令做如下修改:
NXTADDR5:
=!
C_M&(MA8D#......)&!
Bit8;
NXTADDR4:
=!
C_M&(MA8D#......)&!
Bit8;
(5)条件转移字段定义
对NXOR指令做如下修改:
CI0:
=!
C_M&(MA80#......)&NRST&!
Bit8;
对ADRM指令做如下修改:
CI3:
=!
C_M&(MA8A#MA8B#MA8C#......)&NRST&!
Bit8;
CI2:
=!
C_M&(MA8A#MA8B#MA8C#......)&NRST&!
Bit8
CI1:
=!
C_M&(MA8A#MA8B#MA8C#......)&NRST&!
Bit8
CI0:
=!
C_M&(MA8D#......)&NRST&!
Bit8
(6)定义MRW
对NXOR指令做如下修改:
!
_MIO00:
=!
(MA80#......)
对ADRM指令做如下修改:
!
_MIO00:
=!
(MA8A#MA8B#......)
_WE00:
=(MA8C#......);
(7)I2-I0,I8-I6,I5-I3定义
I200:
=(MA8B#MA8C#......);
I100:
=(MA8A#MA8C#MA8D#......);
!
I000:
=!
(MA8A#MA8C#......);
I700:
=(MA8C#......);
!
I600:
=!
(MA8B#MA8C#MA8D#MA80#......);
I500:
=(MA80#......);
I400:
=(MA80#......);
I300:
=(MA80#......)
(8)B口、A口定义
B30=(MA80#MA8A#MA8C#......);
A30=(MA8B#MA80#......);
(9)SST/SSHSCI定义
SST000:
=(MA80#......);
(10)DC2DC1的定义
DC2_100:
=(MA8B#......);
DC2_000:
=(MA8B#......);
按照如上代码对源代码进行修改后,利用JED编译软件生成.jed文件。
4、MACH编程
将JED文件下载到MACH器件的过程:
(1)接好教学机上在线MACH编程电缆,将教学机电源打开。
(2)启动ispVMSystem软件,通过主界面的SCAN按钮找到在线编程器件。
(3)双击找到的编程器件,双击Browse按钮选择已经编译好的Jed文件,选择OK按钮。
(4)重新回到主界面,点击GO命令进行编程。
五、编程验证及结果分析
1验证NXORDR,SR指令
本条指令的验证时采用0010和1100来验证,分别将0010送入R1寄存器,1100送入R2寄存中,然后用E2004写入指令的操作码2212,最后运行程序,验证指令。
验证指令SWRM的过程。
说明:
先将数据5送入R1中,再将数据2050送入R2中,用e命令将6送入2050单元中。
执行SWRM指令后,2050单元中的数据变为5,R1中的数据变为6。
指令执行正确。
六、实验体会
通过一上午的指令扩展实验,经过一步步的操作,由软件的正确使用到扩展指令的代码的正确修改,尤其是分析每一条微指令的各个字段值的分析并对代码进行修改,
进而对修改的程序进行正确的编译,最后,对完成的芯片进行代码验证,最终得出了正确的实验结果,经过一步步的实验过程,使我充分理解了每一条微指令的字段的意义以及其作用,理解了指令扩展的方法。
通过本次实验,结合对以前课程上学习的某些指令的理解,更彻底的了解了指令的执行原理,在本次实验中,最重要的是对代码的修改部分,这就要建立在对每一条微指令的属性值的正确理解上,对应具体情况对每一条指令进行相应修改,从而才能正确编译,最后经过代码的验证已经编译好的文件,最终验证指令的扩展成功。
最后,本次实验在一定程度上提高了我对组成原理中一些微指令程序的一系列知识,对Am2910器件的写入与设计使用,同时也提高了我们分析问题,解决问题,以及动手实践的能力。
教师评价
评定项目
A
B
C
D
评定项目
A
B
C
D
基本部件原理清楚
操作熟练
微指令设计合理
解析完整
微程序功能正确
文字流畅
验证程序运行正确
报告规范
其他:
评价教师签名:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机专业 计算机 组成 原理 指令 扩展 综合 实验 报告