《计算机组成原理》课程设计.docx
《《计算机组成原理》课程设计.docx》由会员分享,可在线阅读,更多相关《《计算机组成原理》课程设计.docx(18页珍藏版)》请在冰豆网上搜索。
![《计算机组成原理》课程设计.docx](https://file1.bdocx.com/fileroot1/2022-12/14/ecebb123-cad5-4ed0-ab13-3af90cd32b27/ecebb123-cad5-4ed0-ab13-3af90cd32b271.gif)
《计算机组成原理》课程设计
华北科技学院
课程设计说明书
设计名称:
__计算机组成原理课程设计___
班级:
计科B12-1第__7_组
小组成员:
____、_____、___
设计内容:
_扩展4条指令MBMC、NOTD、SHTD、SUBN
设计时间:
__2015-1-12__至__2015-1-23_
指导教师:
_席振元、梁生科、顾涛、邵铁君、于咏霞
小组总体情况:
1、工作量:
大(),较大(),一般(),较小()
2、难易度:
难(),较难(),一般(),简单()
3、报告规范度:
规范(),较规范(),一般(),不规范()
评阅教师:
_____
课题组成员及分工
姓名
完成的主要内容
写实验报告,指令验证,ABEL程序编辑
指令扩展,ABEL语言源程序的编辑与修改
指令扩展,监控程序的编辑,烧入芯片
签字
成绩评定
小组成员 :
1、工作量:
大(),较大(),一般(),较小()
2、难易度:
难(),较难(),一般(),简单()
3、答辩情况:
基本操作:
熟练(),较熟练(),一般(),不熟练()
基本原理:
清楚(),较清楚(),基本清楚(),不清楚()
4、学习态度:
优秀(),良好(),中等(),一般()
总评成绩:
_________
小组成员 :
1、工作量:
大(),较大(),一般(),较小()
2、难易度:
难(),较难(),一般(),简单()
3、答辩情况:
基本操作:
熟练(),较熟练(),一般(),不熟练()
基本原理:
清楚(),较清楚(),基本清楚(),不清楚()
4、学习态度:
优秀(),良好(),中等(),一般()
总评成绩:
_________
小组成员 :
1、工作量:
大(),较大(),一般(),较小()
2、难易度:
难(),较难(),一般(),简单()
3、答辩情况:
基本操作:
熟练(),较熟练(),一般(),不熟练()
基本原理:
清楚(),较清楚(),基本清楚(),不清楚()
4、学习态度:
优秀(),良好(),中等(),一般()
总评成绩:
_________
1.课程设计目的
通过计算机组成原理课程设计,进一步熟练掌握计算机各功能部件的内部构造和相互之间的联系(部件配置、相互连接和作用)、各功能部件的性能参数的相互匹配、机器指令级的各种功能和特性。
进一步将所学知识融会贯通、达到知识的系统化,进一步提高硬件系统设计的能力,为以后的更高一级的硬件设计打下坚实基础。
2.课程设计任务
在现有的TEC-XP+教学机指令系统上扩展4条指令。
要求:
(1)4条指令至少要用到4种寻址方式;
(2)4条指令分别由1步、2步、3步、4步完成;
(3)监控命令A、U必须能够支持这4条指令。
3.系统组成原理及实现
对用到的原理进行简要说明。
(1)运算器
TEC-XP系统机上的运算器,选8或16位字长,分别由2或4片4位的位片结构的器件组成,作为讲解运算器的实例和教学实验的对象,有很强的典型性。
运算器部件主要包括两组独立的8位字长的运算器,各自由2片位片结构的运算器AM2901组成;还有状态标志(CZVS)寄存器和教学实验所需的相关逻辑部件。
AM2901的结构如下图所示:
I3
I4
I5I6
I7
I0I8
I1
I2
4位运算器芯片Am2901内部结构框图
第一个组成部分是算逻运算部件ALU,完成3种算术运算和5种逻辑运算,共计8种功能。
其输出为F,两路输入为S、R,最低位进位Cn,四个状态输出信号如图所示。
第二个组成部分是通用寄存器组,由16个寄存器构成,并通过B口与A口地址选择被读的寄存器,B口地址还用于指定写入寄存器。
通过B口地址、A口地址读出的数据将送到B、A锁存器,要写入寄存器的数据由一个多路选择器送来。
第三个组成部分是乘商寄存器Q,它能对自己的内容完成左右移位功能,其输出可以送往ALU,并可接收ALU的输出结果。
一组三选一门和另一组二选一门用来选择送向ALU的R、S输入端的数据来源,包括Q寄存器、A口、B口、外部输入D数据的8种不同组合。
第四个组成部分是5组多路选通门,包括一组三选一门完成把ALU的输出、或左移一位、或右移一位的值送往通用寄存器组,最高、最低位移位信号有双向入/出问题。
一组三选一门完成Q寄存器的左移一位、或右移一位、或接收ALU输出值的功能,最高、最低位移位信号有双向入/出问题。
一组二选一门,选择把A口数据或ALU结果送出芯片,以给出输出Y的数据,Y输出的有无还受输出使能/OE信号的控制,仅当/OE为低时才有Y输出,/OE为高,Y输出为高阻态。
TEC-XP计原l6系统的运算器部件主体部分由4片长度为4位的位片结构运算器芯片Am2901组成。
4片Am2901之间的连接如图所示。
4片Am2901连接图
16位运算器结构框图
(2)微程序控制器
微程序控制器的组成与实现,以及微指令格式及各字段意义。
入口地址:
指令的微程序入口地址;
下址:
微程序执行完后下一条微程序的地址;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口。
(3)内部总线和特定寄存器的控制
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
不操作
4.扩展4条指令
(1)4条指令的格式及功能
4条扩展指令的格式、功能、寻址方式、操作码编码、微程序步数、微程序入口地址如下表。
指令格式
功能
寻址方式
编码
操作步数
入口
MBMCDR,SR
SR的值取非和DR的值相与
SR,DR均为直接寻址
22H
一步
80H
NOTDDR,SR
SR的值和SR的值相与,取反
SR,DR均为直接寻址
A1H
两步
81H
SHTDDR
DR值乘以二再加二
DR直接寻址
E3H
三步
83H
SUBNDR,[SR]
求DR,[SR]的差,再取反
DR直接寻址
SR间接寻址
E9H
四步
90H
(2)指令所对应的微程序
每条机器指令对应的微程序、每条微指令的功能及各字段值的意义如下表:
序号
指令
入口地址
下址
CI3-0
SCC3-0
MVR
I2-0
I8-6
I5-3
B口
A口
SST
SSHSCI
DC2
DC1
1
MBMCDR,SR
80
30
30
4,1
3,5
8,8
1,0
0,0
2
NOTDDR,SR
81
00
E0
4,1
3,4
8,8
1,0
0,0
30
30
4,3
3,7
8,0
1,0
0,0
3
SHTDDR
83
00
E0
4,3
7,0
8,0
6,4
0,0
00
E0
4,3
3,0
8,0
1,1
0,0
30
30
4,3
3,0
8,0
1,1
0,0
4
SUBNDR,[SR]
90
00
E0
4,4
1,0
0,8
0,0
3,0
00
E0
4,3
0,0
8,0
0,0
0,0
00
E0
1,6
3,1
8,0
0,1
0,0
30
30
4,3
3,7
8,0
1,0
0,0
(3)ABEL语言源程序编辑以及JED文件生成
MBMC=(IR==[0,0,1,0,0,0,1,0]);
NOTD=(IR==[1,0,1,0,0,0,0,1]);
SHTD=(IR==[1,1,1,0,0,0,1,1]);
SUBN=(IR==[1,1,1,0,1,0,0,1]);
MA80=(Y==[1,0,0,0,0,0,0,0]);
MA81=(Y==[1,0,0,0,0,0,0,1]);
MA82=(Y==[1,0,0,0,0,0,1,0]);
MA83=(Y==[1,0,0,0,0,0,1,1]);
MA84=(Y==[1,0,0,0,0,1,0,0]);
MA85=(Y==[1,0,0,0,0,1,0,1]);
MA90=(Y==[1,0,0,1,0,0,0,0]);
MA91=(Y==[1,0,0,1,0,0,0,1]);
MA92=(Y==[1,0,0,1,0,0,1,0]);
MA93=(Y==[1,0,0,1,0,0,1,1]);
//入口地址:
D0=!
C_M&(!
_MAP&(NOTD#SHTD#SUB#OR#CMP#MVRR#DEC#SHR#JR#PSHF#PUSH#POP#POPF#STRR#LDRR#LDPC#MVRD#CALA#RET#IRET#DI#ASR#RCR#STC#LDRA#LDRX#STRA#STRX#SBB#JRS#JRNS)#NXTADDR0&!
_PL)&!
Bit8;
D1=!
C_M&(!
_MAP&(SHTD#AND#OR#TEST#MVRR#SHL#SHR#IN_#OUT#POP#POPF#LDRR#LDPC#JMPA#CALA#RET#IRET#NOT#ASR#CLC#STC#JMPR#LDRA#STRA)#NXTADDR1&!
_PL)&!
Bit8;
D2=!
C_M&(!
_MAP&(ADD#SUB#AND#OR#INC#DEC#SHL#SHR#PSHF#PUSH#POP#POPF#MVRD#JMPA#CALA#IRET#RCL#RCR#CLC#STC#LDRX#STRA#CALR)#NXTADDR2&!
_PL)&!
Bit8
D3=!
C_M&(!
_MAP&(XOR_#CMP#TEST#MVRR#INC#DEC#SHR#SHL#STRR#LDRR#LDPC#MVRD#JMPA#CALA#EI#DI#JMPR#JRS#JRNS#LDRA#LDRX#STRA)#NXTADDR3&!
_PL)&!
Bit8;D4=!
C_M&(!
_MAP&(SUBN#JRC#JRNC#JRZ#JRNZ#JR#IN_#OUT#PSHF#PUSH#POP#POPF#STRR#LDRR#LDPC#MVRD#JMPA#CALA#EI#DI#ADC#SBB#NOT#ASR#RCL#RCR#CLC#STC#JMPR#LDRA#LDRX#STRA)#NXTADDR4&!
_PL)&!
Bit8;
D5=!
C_M&(!
_MAP&(RET#IRET#JRS#JRNS#CALR#STRX)#NXTADDR5&!
_PL)&!
Bit8;
D6=!
C_M&(!
_MAP&(EI#DI#IRET#ADC#SBB#NOT#ASR#RCL#RCR#CLC#STC#JMPR#JRS#JRNS#LDRA#LDRX#STRA#STRX#CALR)#NXTADDR6&!
_PL)&!
Bit8;
D7=!
C_M&(!
_MAP&(MBMC#NOTD#SHTD#SUBN)#NXTADDR7&!
_PL)&!
Bit8;
//下址:
NXTADDR7:
=0;
NXTADDR6:
=0;
NXTADDR5:
=!
C_M&(MA80#MA82#MA85#MA93#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA0C#MA0D#MA0E#MA0F#MA10#MA11#MA13#MA14#MA16#MA18#MA1A#MA1C#MA1E#MA22#MA24#MA30#MA3F#MA50#MA51#MA52#MA53#MA54#MA55#MA56#MA57#MA58#MA59#MA5A#MA63#MA66#MA68#MA69#MA6A)&!
Bit8;
NXTADDR4:
=!
C_M&(MA80#MA82#MA85#MA93#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA0C#MA0D#MA0E#MA0F#MA10#MA11#MA12#MA13#MA14#MA15#MA16#MA17#MA18#MA1A#MA1C#MA1D#MA22#MA24#MA30#MA3F#MA50#MA51#MA52#MA53#MA54#MA55#MA56#MA57#MA58#MA59#MA5A#MA5C#MA5E#MA60#MA63#MA66#MA69#MA6A)&!
Bit8;
NXTADDR3:
=!
C_M&(MA15#MA17#MA1D#MA30#MA5C#MA5E#MA60)&!
Bit8;
NXTADDR2:
=!
C_M&(MA12#MA17#MA1D#MA1E#MA5C#MA5E)&!
Bit8;
NXTADDR1:
=!
C_M&(MA15#MA30#MA31#MA60#MA68)&!
Bit8;
NXTADDR0:
=!
C_M&(MA3F#MA68)&!
Bit8;
//CI3-0,SCC3-0定义:
CI3:
=!
C_M&(MA81#MA83#MA84#MA90#MA91#MA92#MA00#MA01#MA02#MA19#MA1B#MA89#MA1F#MA20#MA21#MA23#MA3A#MA3B#MA3C#MA3D#MA3E#MA5B#MA5D#MA5F#MA61#MA62#MA64#MA65#MA67#MA89)&NRST&!
Bit8;
CI2:
=!
C_M&(MA81#MA83#MA84#MA90#MA91#MA92#MA00#MA01#MA02#MA19#MA1B#MA89#MA1F#MA20#MA21#MA23#MA3A#MA3B#MA3C#MA3D#MA3E#MA5B#MA5D#MA5F#MA61#MA62#MA64#MA65#MA67)&NRST&!
Bit8;
CI1:
=!
C_M&1&NRST&!
Bit8;
CI0:
=!
C_M&(MA80#MA82#MA85#MA93#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA0C#MA0D#MA0E#MA0F#MA10#MA11#MA12#MA13#MA14#MA15#MA16#MA17#MA18#MA1A#MA1C#MA1D#MA1E#MA22#MA24#MA30#MA31#MA3F#MA50#MA51#MA52#MA53#MA54#MA55#MA56#MA57#MA58#MA59#MA5A#MA5C#MA5E#MA60#MA63#MA66#MA68#MA69#MA6A)&NRST&!
Bit8;
SCC3:
=!
C_M&0&NRST&!
Bit8;
SCC2:
=!
C_M&(MA10#MA12#MA15#MA17#MA69)&NRST&!
Bit8;
SCC1:
=!
C_M&(MA12#MA15#MA17#MA30)&NRST&!
Bit8;
SCC0:
=!
C_M&(MA15#MA17#MA69)&NRST&!
Bit8;
//MVR,I2-I0定义:
!
_MIO00:
=!
(MA80#MA81#MA82#MA83#MA84#MA85#MA90#MA91#MA93#MA00#MA01#MA03#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA0C#MA0D#MA0E#MA0F#MA10#MA11#MA12#MA15#MA17#MA19#MA1B#MA89#MA1D#MA1E#MA1F#MA21#MA23#MA30#MA31#MA3A#MA3B#MA3D#MA3F#MA50#MA51#MA52#MA53#MA54#MA55#MA56#MA57#MA58#MA59#MA5A#MA5B#MA5D#MA5F#MA61#MA64#MA66#MA67#MA69#MA6A);
REQ00:
=(MA13#MA14);
_WE00:
=(MA92#MA02#MA14#MA18#MA1C#MA20#MA24#MA5C#MA5E#MA60#MA62#MA68);
I200:
=(MA90#MA92#MA0B#MA11#MA12#MA14#MA1A#MA1B#MA89#MA1C#MA20#MA24#MA30#MA3C#MA3F#MA5A#MA5C#MA5E#MA60#MA62#MA65#MA66#MA6A);
I100:
=(MA82#MA83#MA84#MA85#MA91#MA92#MA93#MA01#MA0C#MA0D#MA0E#MA0F#MA12#MA13#MA14#MA15#MA17#MA19#MA1C#MA1D#MA1E#MA1F#MA20#MA21#MA22#MA23#MA24#MA30#MA31#MA3B#MA3D#MA3E#MA3F#MA52#MA53#MA54#MA55#MA5B#MA5C#MA5D#MA5F#MA60#MA61#MA63#MA64#MA67);
!
I000:
=!
(MA80#MA81#MA82#MA83#MA84#MA85#MA91#MA93#MA00#MA01#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0C#MA0D#MA0E#MA0F#MA11#MA12#MA13#MA14#MA15#MA17#MA19#MA1C#MA1D#MA1E#MA1F#MA20#MA21#MA23#MA24#MA30#MA31#MA3B#MA3D#MA3F#MA50#MA51#MA52#MA53#MA54#MA55#MA5B#MA5C#MA5D#MA5E#MA5F#MA60#MA61#MA62#MA63#MA64#MA67#MA6A)
//I8-I6,I5-3定义:
I800:
=(MA83#MA0E#MA0F#MA53#MA54#MA55);
I700:
=(MA80#MA81#MA82#MA83#MA84#MA85#MA92#MA93#MA00#MA01#MA04#MA05#MA06#MA07#MA08#MA0B#MA0C#MA0D#MA0E#MA11#MA14#MA15#MA17#MA1C#MA1D#MA1E#MA1F#MA21#MA22#MA23#MA24#MA31#MA3B#MA3D#MA3F#MA50#MA51#MA52#MA54#MA5A#MA5B#MA5D#MA5F#MA61#MA64#MA66#MA67#MA6A);
!
I600:
=!
(MA80#MA81#MA82#MA83#MA84#MA85#MA90#MA92#MA93#MA00#MA02#MA03#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA0C#MA0D#MA0E#MA0F#MA10#MA11#MA12#MA13#MA14#MA15#MA16#MA18#MA19#MA1A#MA1B#MA89#MA1C#MA21#MA24#MA3A#MA3B#MA3C#MA3D#MA3E#MA3F#MA50#MA51#MA52#MA53#MA54#MA55#MA56#MA57#MA58#MA59#MA5A#MA5C#MA5E#MA60#MA62#MA63#MA64#MA65#MA66#MA68#MA69#MA6A)
I500:
=(MA80#MA81#MA82#MA93#MA06#MA08#MA0A#MA52);
I400:
=(MA82#MA93#MA07#MA08#MA52);
I300:
=(MA80#MA82#MA92#MA93#MA00#MA05#MA07#MA09#MA0D#MA15#MA21#MA3B#MA3D#MA51#MA52#MA64);
//B口,A口定义:
B30=(MA80#MA81#MA82#MA83#MA84#MA85#MA91#MA92#MA93#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA0C#MA0D#MA0E#MA0F#MA19#MA1C#MA50#MA51#MA52#MA53#MA54#MA55#MA63);
B300:
=B30&IR7;
B20=(MA00#MA01#MA11#MA15#MA17#MA1D#MA1E#MA1F#MA21#MA22#MA23#MA24#MA31#MA3B#MA3D#MA3F#MA5A#MA5B#MA5D#MA5F#MA61#MA64#MA66#MA67#MA6A);
B200:
=(!
B30&B20#B30&IR6);
B10=0;
B100:
=(!
B30&B10#B30&IR5);
B00=(MA00#MA01#MA11#MA1D#MA1E#MA1F#MA22#MA24#MA31#MA3F#MA5A#MA5B#MA5D#MA5F#MA61#MA66#MA6A);
B000:
=(!
B30&B00#B30&IR4);
A30=(MA80#MA81#MA90#MA04#MA05#MA06#MA07#MA08#MA09#MA0A#MA0B#MA1A#MA1B#MA89#MA50#MA51#MA5A#MA5E#MA62#MA66);
A300:
=(A30&IR3);
A20=(MA00#MA01#MA11#MA17#MA1D#MA1E#MA1F#MA22#MA23#MA31#MA3C#MA5B#MA5D#MA5F#MA61#MA65#MA67#MA6A);
A200:
=(!
A30&A20#A30&IR2);
A10=0;
A100:
=(!
A30&A10#A30&IR1);
A00=(MA00#MA01#MA11#M