计算机组成原理课程设计说明书.docx
《计算机组成原理课程设计说明书.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计说明书.docx(45页珍藏版)》请在冰点文库上搜索。
计算机组成原理课程设计说明书
计算机组成原理课程设计说明书
计算机组成原理课程设计说明书
题目:
设计求负数平方和的CISC模型计算机
院(系):
计算机科学与工程学院
专业:
计算机科学与技术
学生姓名:
学号:
指导教师:
陈智勇
1课程设计的题目与内容
1.1题目
设计一台嵌入式CISC模型计算机(采用定长CPU周期、联合控制方式),并运行能完成一定功能的机器语言程序进行验证,机器语言源程序功能如下:
连续输入5个有符号整数(用8位二进制补码表示,十六进制数输入),求所有负数的平方和并输出显示。
说明:
15个有符号数从外部输入;
2一定要使用符号位(比如说SF),并且要使用负的时候转移(比如说JS)或不为负的时候转移(比如说JNS)指令;
3采用三数据总线结构的运算器,采用RAM,先将输入数据依次存放在RAM的某一连续的存储区域内,再依次读出判断是否为负数,若为负数再求其平方和。
1.2内容
(1)完成系统的总体设计,画出模型机数据通路框图;
(2)设计微程序控制器(CISC模型计算机)的逻辑结构框图;
(3)设计机器指令格式和指令系统;
(4)设计时序产生器电路;
(5)设计所有机器指令的微程序流程图;
(6)设计操作控制器单元;
在CISC模型计算机中,设计的内容包括微指令格式(建议采用全水平型微指令)、微指令代码表(根据微程序流程图和微指令格式来设计)和微程序控制器硬件电路(包括地址转移逻辑电路、微地址寄存器、微命令寄存器和控制存储器等。
具体电路根据微程序控制器的逻辑结构框图、微指令格式和微指令代码来设计)。
(7)设计模型机的所有单元电路,并用VHDL语言(也可使用GDF文件----图形描述文件)对模型机中的各个部件进行编程,并使之成为一个统一的整体,即形成顶层电路或顶层文件;
(8)由给出的题目和设计的指令系统编写相应的汇编语言源程序;
(9)根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其设计到模型机中的ROM中去;
(10)使用EDA软件进行功能仿真,要保证其结果满足题目的要求;(其中要利用EDA软件提供的波形编辑器,选择合适的输入输出信号及中间信号进行调试。
)
(11)器件编程,并在EDA实验平台上进行操作演示。
2系统总体设计
2.1CISC模型机数据通路框图的设计
2.2操作控制器的逻辑框图的设计
2.3模型机的指令系统和所有指令的指令格式的设计
1)I/O指令
输入指令(IN1)格式:
15141312
1110
98
76543210
操作码
××
Rd
××××××
输出指令(OUT1)格式:
15141312
1110
98
76543210
操作码
Rs
××
××××××
2)转移指令
非零条件转移指令(JNZ)格式:
15141312
1110
98
76543210
操作码
××
××
地址addr
非负条件转移指令(JNS)格式:
15141312
1110
98
76543210
操作码
××
××
地址addr
无条件转移指令(JMP)格式:
15141312
1110
98
76543210
操作码
××
××
地址addr
3)MOV指令
MOV指令格式:
15141312
1110
98
76543210
操作码
××
Rd
立即数im
4)相加指令
相加指令(ADD)格式:
15141312
1110
98
76543210
操作码
Rs
Rd
××××××
5)有符号乘法指令
乘法指令(IMUL)格式:
15141312
1110
98
76543210
操作码
××
Rd
××××××
6)加1指令
加1指令(INC)格式:
15141312
1110
98
76543210
操作码
××
Rd
××××××
7)减1指令
减1指令(DEC)格式:
15141312
1110
98
76543210
操作码
××
Rd
××××××
8)相与指令
相与指令(AND)格式:
15141312
1110
98
76543210
操作码
××
Rd
××××××
9)字符串存储指令
乘法指令(STO)格式:
15141312
1110
98
76543210
操作码
Rs
××
地址addr
10)字符串存储指令
乘法指令(STOI)格式:
15141312
1110
98
76543210
操作码
Rs
Rd
××××××
11)取数指令
取数指令(LAD)格式:
15141312
1110
98
76543210
操作码
Rs
Rd
××××××
指令系统表:
指令助记符
指令格式
功能
15--12
1110
98
7-----------0
IN1Rd
0001
××
Rd
××××××××
输入设备→Rd
MOVRd,im
0010
××
Rd
im
立即数→Rd
LAD(Rs),Rd
0011
Rs
Rd
××××××××
((Rs))→Rd
ADDRs,Rd
0100
Rs
Rd
××××××××
(Rs)+(Rd)→Rd
INCRd
0101
××
Rd
××××××××
(Rd)+1→Rd
DECRd
0110
××
Rd
××××××××
(Rd)-1→Rd
JNZaddr
0111
××
××
addr
若不等,则addr→PC
STORs,addr
1000
Rs
××
addr
(Rs)→addr
JMPaddr
1001
××
××
addr
addr→PC
OUT1Rs
1010
Rs
××
××××××××
(Rs)→输出设备
STOIRs,(Rd)
1011
Rs
Rd
××××××××
(Rs)→(Rd)
IMULRd,Rd
1100
××
Rd
××××××××
(Rd)×(Rd)→Rd
ANDRd,Rd
1101
××
Rd
××××××××
(Rd)∧(Rd)→Rd
JNSaddr
1110
××
××
addr
若不为正,则addr→PC
其中,对源寄存器Rs与目的寄存器Rd的规定如下:
Rs或Rd
选定的寄存器
00
R0
01
R1
10
R2
11
R3
模型机规定数据的表示采用定点整数补码表示,单字长为8位,其格式如下:
7
6543210
符号位
尾数
2.4时序产生电路的设计
T1、T2、T3、T4与CLR、Q之间的关系图如图1所示。
图1
2.5机器指令的微程序流程图以及微指令的设计
要设计微程序控制器,首先要设计微程序流程图以及微指令,其次再设计地址转移逻辑电路以及其它逻辑单元电路,设计步骤如下:
1.根据指令格式和指令系统设计所有机器指令的微程序流程图,并确定每条微指令的微地址和后继微地址;
2.设计微指令格式和微指令代码表;
3.设计地址转移逻辑电路;
4.设计微程序控制器中的其它逻辑单元电路,包括微地址寄存器、微命令寄存器和控制存储器。
其中,微程序流程图设计如下图所示:
微指令流程图设计完成后,开始设计微指令格式和微指令代码表,按照要求,CISC模型机系统使用的微指令采用全水平型微指令,字长为28位,其中微命令字段为19位,P字段为3位,后继微地址为6位,其格式如下:
LOADLDPCLDARLDIRLDRiLDPSWRS_BS2S1S0ALU_BSW_BLED_BRD_DCS_DRAM_BCS_IADDR_BCS_IP1P2P3u5-uO
按照以上格式,依据自身设计的微指令流程图,可以得到以下的微指令代码表:
2.6地址转移逻辑电路的设计
地址转移逻辑电路是根据微程序流程图中的棱形框部分及多个分支微地址,利用微地址寄存器的异步置“1”端,实现微地址的多路转移。
由于微地址寄存器中的触发器异步置“1”端低电平有效,与µA5~µA0对应的异步置“1”控制信号SE6~SE1的逻辑表达式为:
SE6=ZF·P(3)·T4
SE5=ZF·P
(2)·T4
SE4=I15·P
(1)·T4
SE3=I14·P
(1)·T4
SE2=I13·P
(1)·T4
SE1=I12·P
(1)·T4
2.7软件清单
●ALU设计:
其中S2,S1,S0表示的是算术逻辑运算单元ALU,其功能表为:
S2
S1
S0
功能
0
0
0
X+Y
0
0
1
X-Y
0
1
0
X+1
0
1
1
X-1
1
0
0
Y∧Y
1
0
1
X∨Y
1
1
0
Y
1
1
1
Y×Y
VHDL源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_SIGNED.all;
ENTITYALUIS
PORT(
X:
INSTD_LOGIC_VECTOR(7DOWNTO0);
Y:
INSTD_LOGIC_VECTOR(7DOWNTO0);
S2,S1,S0:
INSTD_LOGIC;
ALUOUT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
SF,ZF:
OUTSTD_LOGIC
);
ENDALU;
ARCHITECTUREAOFALUIS
SIGNALAA,BB,TEMP:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
PROCESS
BEGIN
IF(S2='0'ANDS1='0'ANDS0='0')THEN--ADD
AA<=X;
BB<=Y;
TEMP<=AA+BB;
ALUOUT<=TEMP(7DOWNTO0);
SF<=TEMP(7);
IF(TEMP="10000000"ORTEMP="00000000")THEN
ZF<='1';
ELSE
ZF<='0';
ENDIF;
ELSIF(S2='0'ANDS1='0'ANDS0='1')THEN--CMP(SUB)
ALUOUT<=X-Y;
IF(XSF<='1';
ZF<='0';
ELSIF(X=Y)THEN
SF<='0';
ZF<='1';
ELSE
SF<='0';
ZF<='0';
ENDIF;
ELSIF(S2='0'ANDS1='1'ANDS0='0')THEN--INC
AA<=Y;
TEMP<=AA+1;
ALUOUT<=TEMP(7DOWNTO0);
SF<=TEMP(7);
IF(TEMP="10000000"ORTEMP="00000000")THEN
ZF<='1';
ELSE
ZF<='0';
ENDIF;
ELSIF(S2='0'ANDS1='1'ANDS0='1')THEN--DEC
AA<=Y;
TEMP<=AA-1;
ALUOUT<=TEMP(7DOWNTO0);
SF<=TEMP(7);
IF(TEMP="10000000"ORTEMP="00000000")THEN
ZF<='1';
ELSE
ZF<='0';
ENDIF;
ELSIF(S2='1'ANDS1='0'ANDS0='0')THEN--AND
TEMP<=YANDY;
ALUOUT<=TEMP;
SF<=TEMP(7);
IF(TEMP="10000000"ORTEMP="00000000")THEN
ZF<='1';
ELSE
ZF<='0';
ENDIF;
ELSIF(S2='1'ANDS1='0'ANDS0='1')THEN--OR
TEMP<=XORY;
ALUOUT<=TEMP;
SF<=TEMP(7);
IF(TEMP="10000000"ORTEMP="00000000")THEN
ZF<='1';
ELSE
ZF<='0';
ENDIF;
ELSIF(S2='1'ANDS1='1'ANDS0='0')THEN--Rd->BUS
ALUOUT<=Y;
SF<=Y(7);
ELSIF(S2='1'ANDS1='1'ANDS0='1')THEN--IMUL
TEMP<=Y*Y;
SF<=TEMP(7);
ALUOUT<=TEMP;
IF(TEMP="10000000"ORTEMP="00000000")THEN
ZF<='1';
ELSE
ZF<='0';
ENDIF;
ELSE
ALUOUT<="00000000";
ZF<='0';
ENDIF;
ENDPROCESS;
ENDA;
算术逻辑单元ALU电路图如图2所示:
图2
●4选1数据选择器MUX4
VHDL源程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYMUX4_1IS
PORT(
R0,R1,R2,R3:
INSTD_LOGIC_VECTOR(7DOWNTO0);
X:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
I11,I10:
INSTD_LOGIC
);
ENDMUX4_1;
ARCHITECTUREAOFMUX4_1IS
BEGIN
PROCESS
BEGIN
IF(I11='0'ANDI10='0')THEN
X<=R0;
ELSIF(I11='0'ANDI10='1')THEN
X<=R1;
ELSIF(I11='1'ANDI10='0')THEN
X<=R2;
ELSE
X<=R3;
ENDIF;
ENDPROCESS;
ENDA;
4选1选择器MUX4电路图如图3所示:
图3
●5选1数据选择器MUX5
VHDL源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYMUX5IS
PORT(
SW_B,RS_B,RAM_B,ADDR_B,ALU_B:
INSTD_LOGIC;
SW,RS,RAM,ADDR,ALU:
INSTD_LOGIC_VECTOR(7DOWNTO0);
W:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)
);
ENDMUX5;
ARCHITECTUREAOFMUX5IS
SIGNALSEL:
STD_LOGIC_VECTOR(4DOWNTO0);
BEGIN
SEL<=SW_B&RS_B&RAM_B&ADDR_B&ALU_B;
PROCESS(SEL)
BEGIN
IF(SEL="01111")THEN
W<=SW;
ELSIF(SEL="10111")THEN
W<=RS;
ELSIF(SEL="11011")THEN
W<=RAM;
ELSIF(SEL="11101")THEN
W<=ADDR;
ELSIF(SEL="11110")THEN
W<=ALU;
ELSE
NULL;
ENDIF;
ENDPROCESS;
ENDA;
5选1数据选择器电路图如图4所示:
图4
●状态字器存器PSW
VHDL源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYPSWIS
PORT(
LDPSW:
INSTD_LOGIC;
ZI,SI:
INSTD_LOGIC;
FZ,FS:
OUTSTD_LOGIC
);
ENDPSW;
ARCHITECTUREAOFPSWIS
BEGIN
PROCESS(LDPSW)
BEGIN
IF(LDPSW'EVENTANDLDPSW='1')THEN
FZ<=ZI;
FS<=SI;
ENDIF;
ENDPROCESS;
ENDA;
状态字寄存器PSW电路图如图5所示:
图5
●微程序控制器CROM
CROM的电路图如图6所示:
图6
其内部电路图如图7所示:
图7
其组成的部件有以下:
Ø地址转移逻辑ADDR
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYADDRIS
PORT(
I15,I14,I13,I12:
INSTD_LOGIC;
FZ,FS,T4,P1,P2,P3:
INSTD_LOGIC;
SE6,SE5,SE4,SE3,SE2,SE1:
OUTSTD_LOGIC
);
ENDADDR;
ARCHITECTUREAOFADDRIS
BEGIN
SE6<=NOT((NOTFS)ANDP3ANDT4);
SE5<=NOT((NOTFZ)ANDP2ANDT4);
SE4<=NOT(I15ANDP1ANDT4);
SE3<=NOT(I14ANDP1ANDT4);
SE2<=NOT(I13ANDP1ANDT4);
SE1<=NOT(I12ANDP1ANDT4);
ENDA;
地址转移逻辑ADDR电路图如图8所示:
图8
Ø微命令寄存器MCOMMAND
VHDL源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_SIGNED.ALL;
ENTITYMCOMMANDIS
PORT(
T2,T3,T4:
INSTD_LOGIC;
D:
INSTD_LOGIC_VECTOR(20DOWNTO0);
LOAD,LDPC,LDAR,LDIR,LDRI,LDPSW,RS_B,S2,S1,S0:
OUTSTD_LOGIC;
ALU_B,SW_B,LED_B,RD_D,CS_D,RAM_B,CS_I,ADDR_B,P1,P2,P3:
OUTSTD_LOGIC
);
ENDMCOMMAND;
ARCHITECTUREAOFMCOMMANDIS
SIGNALDATAOUT:
STD_LOGIC_VECTOR(20DOWNTO0);
BEGIN
PROCESS(T2)
BEGIN
IF(T2'EVENTANDT2='1')THEN
DATAOUT(20DOWNTO0)<=D(20DOWNTO0);
ENDIF;
LOAD<=DATAOUT(20);
LDPC<=DATAOUT(19)ANDT4;
LDAR<=DATAOUT(18)ANDT3;
LDIR<=DATAOUT(17)ANDT3;
LDRI<=DATAOUT(16)ANDT4;
LDPSW<=DATAOUT(15)ANDT4;
RS_B<=DATAOUT(14);
S2<=DATAOUT(13);
S1<=DATAOUT(12);
S0<=DATAOUT(11);
ALU_B<=DATAOUT(10);
SW_B<=DATAOUT(9);
LED_B<=DATAOUT(8);
RD_D<=NOT(NOTDATAOUT(7)AND(T2ORT3));
CS_D<=NOT(NOTDATAOUT(6)ANDT3);
RAM_B<=DATAOUT(5);
CS_I<=DATAOUT(4);
ADDR_B<=DATAOUT(3);
P1<=DATAOUT
(2);
P2<=DATAOUT
(1);
P3<=DATAOUT(0);
ENDPROCESS;
ENDA;
微命令寄存器MCOMMAND电路图如图9所示:
图9
Ø微地址寄存器aa
VHDL源程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYMMMIS
PORT(
SE:
INSTD_LOGIC;
T2:
INSTD_LOGIC;
D:
INSTD_LOGIC;
CLR:
INSTD_LOGIC;
UA:
OUTSTD_LOGIC
);
ENDMMM;
ARCHITECTUREAOFMMMIS
BEGIN
PROCESS(CLR,SE,T2)
BEGIN
IF(CLR='0')THEN
UA<='0';
ELSIF(SE='0')THEN
UA<='1';
ELSIF(T2'EVENTANDT2='1')THEN
UA<=D;
ENDIF;
ENDPROCESS;
ENDA;
微程序寄存器内部电路图如图10所示:
图10
微地址寄存器aa合成图如图11所示:
图11
Ø微地址转换器F1
VHDL源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYF1