计算机组成原理课设.docx
《计算机组成原理课设.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课设.docx(36页珍藏版)》请在冰点文库上搜索。
计算机组成原理课设
计算机组成原理
课程设计报告
题目:
设计一台嵌入式CISC模型机
院系:
计算机科学与工程学院
专业:
网络工程
姓名:
麦健豪
学号:
1100380215
一、课程设计的题目和内容
采用定长CPU周期、联合控制方式,并运行能完成一定功能的机器语言源程序进行验证,机器语言源程序功能如下:
输入5个有符号整数(8位二进制补码表示),求最大负数的绝对值并输出显示.
说明:
①5个有符号数从外部输入;
②一定要使用符号标志位(比如说SF),并且要使用为负的时候转移(比如JS)或不为负的时候转移(比如JNS)指令;
③采用单数据总线结构的运算器。
二、系统设计
2.1系统的总体设计
2.2设计控制器的逻辑结构框图
说明:
在T4内形成微指令的微地址,并访问控制存储器,在T2的上边沿到来时,将读出的微指令打入微指令寄存器,即图中的微命令寄存器和微地址寄存器.
2.3设计机器指令和指令系统
指令
对象
功能
机器指令
Mov1
XX,RD
DATA
DATA->RD
0011
TEST
XX,RD
AC锁存FS
0100
JNS
XXXX
ADDR
ADDR—〉PC
0101
INC
XX,RD
RD+1—〉RD
0110
IN
XX,RD
SW->RD
0111
CMP
RS,RD
RS—RD锁存FS
1001
MOV2
RS,RD
RS—>RD
1010
JMP
XXXX
ADDR
ADDR—〉PC
1011
NEG
XX,RD
(0—RD)—>RD
1100
OUT
RS,XX
RS—〉LED
1101
以下是对Rs,Rd的规定:
Rs或Rd
选定的寄存器
00
R0
01
R1
10
R2
模型机规定数据的表示采用定点整数补码表示,单字长为8位,其格式如下:
7
6543210
符号位
尾数
2.4设计时序产生器
2。
5设计微程序流程图
2.6设计操作控制器单元
(1)设计微指令格式与微指令代码表
CISC模型机系统使用的微指令采用全水平型微指令,字长为25位,其中微命令字段为17位,P字段为2位,后继微地址为6位,其格式如下:
设计的具体指令为:
16进制
微地址
LOAD
LDPC
LDAR
LDIR
LDRi
RD_B
RB_B
S1
S0
ALU_B
LDAC
LDDR
WR
CS
SW_B
LED_B
LDFR
P1
P2
后继微地址
00
000000
1110011001001111000
000010
02
000010
1001011001001011010
000000
03
000011
1110011001001111000
001110
04
000100
1000001001101111000
001111
05
000101
1110011001001111001
100000
06
000110
1000001001101111000
010010
07
000111
1000111001001101000
000000
09
001001
1000010001101111000
010101
0A
001010
1000110001001111000
000000
0B
001011
1110011001001111000
011000
0C
001100
1000001001101111000
011001
0D
001101
1000010001000110000
000000
0E
001110
1000111001001011000
000000
0F
001111
1000011011001111100
000000
12
010010
1000111100001111000
000000
15
010101
1000001001011111000
010110
16
010110
1000011001001111100
000000
18
011000
010*********
000000
19
011001
1000111110001111000
000000
30
110000
1000011001001111000
000000
20
100000
010*********
000000
(2)设计地址转移逻辑电路
地址转移逻辑电路是根据微程序流程图的棱形框部分及多个分支微地址,利用微地址寄存器的异步置‘1’端,实现微地址的多路转移的.由于是采用逻辑电路来实现的,故称之为地址转移逻辑电路。
在微地址流程图中,P
(1)(高电平有效)测试时,根据指令的操作I7~I4强制修改后继地址的低四位;在P
(2)(高电平有效)时,根据借位标志FS进行2路分支,并且都在T4内形成后继微指令的微地址.
SE5=((NOTFS)ANDP
(2)ANDT4
SE4=(I7ANDP
(2)ANDT4
SE3=(I6ANDP
(2)ANDT4
SE2=(I5ANDP
(2)ANDT4
SE1=(I4ANDP
(2)ANDT4
2。
7设计单元顶层电路
2。
8编写汇编语言源程序
算法:
R0存入一个整数—4,作为五次输入循环使用;R1用于存储输入的整数;R3用于存入最后的结果,并预存一个最小负数—128.随后如下
Mov1R0,-5
将立即数—4—〉R0
MOV1R2,-128
将立即数-128—>R2
L1
TESTR0
测试R0,锁存SF
JNSL2
非负,即SF=0,跳转L2
INCR0
R0+1
INR1
输入一个整数,并存入R1
TESTR1
测试R1
JNSL1
非负则跳转L1
CMPR2,R1
比较R2,R1的大小,锁存SF
JNSL1
非负则跳转L1
MOV2R1,R2
将R1的内容存入R2
JMPL1
跳转L1
L2
NEGR2
对R2求补
OUTR2
输出结果
2.9机器语言源程序
指令
地址
地址16进制
机器指令
十六进制
备注
Mov1R0,-5
00000000
00
00110000
30
00000001
01
11111011
FB
MOV1R2,—128
00000010
02
00110010
32
00000011
03
10000001
FF
L1
TESTR0
00000100
04
01000000
40
JNSL2
00000101
05
01010000
50
00000110
06
00010010
11
INCR0
00000111
07
01100000
60
INR1
00001000
08
01110001
71
TESTR1
00001001
09
01000001
41
JNSL1
00001010
0A
01010000
50
00001011
0B
00000100
04
CMPR2,R1
00001100
0C
10011001
99
JNSL1
00001101
0D
01010000
50
00001110
0E
00000100
04
MOV2R1,R2
00001111
0F
10100110
A6
JMPL1
00010000
10
10110000
B0
00010001
11
00000100
04
L2
NEGR2
00010010
12
11000010
C2
OUTR2
00010011
13
11011000
D8
CISC模型机的单元电路
3。
1ALU单元
S1
S0
功能
0
0
AC—DR,锁存FS
0
1
AC锁存FS
1
0
自加1
1
1
求补
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH。
ALL;
USEIEEE.STD_LOGIC_UNSIGNED。
ALL;
ENTITYALUIS
PORT(
A:
INSTD_LOGIC_VECTOR(7DOWNTO0);
B:
INSTD_LOGIC_VECTOR(7DOWNTO0);
S1,S0:
INSTD_LOGIC;
BCDOUT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
SF:
OUTSTD_LOGIC
);
ENDALU;
ARCHITECTUREAOFALUIS
SIGNALAA,BB,TEMP:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
PROCESS(S1,S0)
BEGIN
IF(S1=’0’ANDS0=’0’)THEN
TEMP<=A—B;
SF〈=TEMP(7);
BCDOUT<=TEMP(7DOWNTO0);
ELSIF(S1='0'ANDS0='1')THEN
TEMP〈=A-0;
SF〈=TEMP(7);
BCDOUT<=TEMP(7DOWNTO0);
ELSIF(S1=’1’ANDS0='0’)THEN
TEMP<=A+1;
BCDOUT〈=TEMP(7DOWNTO0);
ELSIF(S1='1'ANDS0='1')THEN
TEMP〈=0—A;
BCDOUT<=TEMP(7DOWNTO0);
ENDIF;
ENDPROCESS;
ENDA;
3.2寄存器单元
LDFR上升沿有效。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYLS74IS
PORT(
LDFR:
INSTD_LOGIC;
SF:
INSTD_LOGIC;
FS:
OUTSTD_LOGIC
);
ENDLS74;
ARCHITECTUREAOFLS74IS
BEGIN
PROCESS(LDFR)
BEGIN
IF(LDFR’EVENTANDLDFR=’1')THEN
FS〈=SF;
ENDIF;
ENDPROCESS;
ENDA;
而暂存寄存器与通用寄存器则是使用LS273
通用寄存器功能表
RO_1
R1_B
R2_B
ALU_B
功能
1
1
1
0
输出ALU
0
1
1
1
输出R0
1
0
1
1
输出R1
1
1
0
1
输出R2
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYLS273IS
PORT(
D:
INSTD_LOGIC_VECTOR(7DOWNTO0);
CLK:
INSTD_LOGIC;
O:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)
);
ENDLS273;
ARCHITECTUREAOFLS273IS
BEGIN
PROCESS(CLK)
BEGIN
IF(CLK'EVENTANDCLK=’1’)THEN
O〈=D;
ENDIF;
ENDPROCESS;
ENDA;
3.31:
2分配器单元
输入
输出
WR
LED_B
X[7。
.0]
W1[7.。
0]
W2[7..0]
0
0
X
X[7。
。
0]
其他值
X
X[7。
.0]
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYFEN2IS
PORT(
X:
INSTD_LOGIC_VECTOR(7DOWNTO0);
WR,LED_B:
INSTD_LOGIC;
W1,W2:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)
);
ENDFEN2;
ARCHITECTUREAOFFEN2IS
BEGIN
PROCESS(LED_B,WR)
BEGIN
IF(LED_B=’0’ANDWR=’0’)THEN
W2<=X;
ELSE
W1〈=X;
ENDIF;
ENDPROCESS;
ENDA;
3。
43选1数据选择器单元
LIBRARYIEEE;
USEIEEE。
STD_LOGIC_1164。
ALL;
ENTITYMUX3IS
PORT(
ID:
INSTD_LOGIC_VECTOR(7DOWNTO0);
SW_B,CS:
INSTD_LOGIC;
N1,N2:
INSTD_LOGIC_VECTOR(7DOWNTO0);
EW:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)
);
ENDMUX3;
ARCHITECTUREAOFMUX3IS
BEGIN
PROCESS(SW_B,CS)
BEGIN
IF(SW_B=’0’)THEN
EW<=ID;
ELSIF(CS='0’)THEN
EW〈=N2;
ELSE
EW〈=N1;
ENDIF;
ENDPROCESS;
ENDA;
3。
54选1数据选择器单元
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYMUX4IS
PORT(
C,D,E,F:
INSTD_LOGIC;
X1,X2,X3,X4:
INSTD_LOGIC_VECTOR(7DOWNTO0);
W:
outSTD_LOGIC_VECTOR(7DOWNTO0)
);
ENDMUX4;
ARCHITECTUREAOFMUX4IS
SIGNALSEL:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
SEL〈=F&E&D&C;
PROCESS(SEL)
BEGIN
IF(SEL="1110")THEN—-R0_out
W<=X1;
ELSIF(SEL="1101")THEN——R1_out
W<=X2;
ELSIF(SEL=”1011”)THEN——R2-out
W〈=X3;
ELSIF(SEL="0111")THEN—-R3_out
W〈=X4;
ELSE
null;
ENDIF;
ENDPROCESS;
ENDA;
3。
6程序计数器单元
LIBRARYIEEE;
USEIEEE。
STD_LOGIC_1164.ALL;
USEIEEE。
STD_LOGIC_ARITH。
ALL;
USEIEEE。
STD_LOGIC_UNSIGNED.ALL;
ENTITYPCIS
PORT(
load,LDPC,CLR:
INSTD_LOGIC;
D:
INSTD_LOGIC_VECTOR(7DOWNTO0);
O:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)
);
ENDPC;
ARCHITECTUREAOFPCIS
SIGNALQOUT:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
PROCESS(LDPC,CLR,load)
BEGIN
IF(CLR=’0’)THEN
QOUT<="00000000";
ELSIF(LDPC'EVENTANDLDPC='1')THEN
IF(load='0’)THEN
QOUT〈=D;-—BUS-〉PC
ELSE
QOUT<=QOUT+1;--PC+1
ENDIF;
ENDIF;
ENDPROCESS;
O<=QOUT;
ENDA;
3。
7地址寄存器单元
同寄存器单元
3。
8主存储器单元
即为ROM。
LIBRARYIEEE;
USEIEEE。
STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH。
ALL;
USEIEEE.STD_LOGIC_UNSIGNED。
ALL;
ENTITYROM16IS
PORT(
DOUT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
ADDR:
INSTD_LOGIC_VECTOR(7DOWNTO0);
CS:
INSTD_LOGIC
);
ENDROM16;
ARCHITECTUREAOFROM16IS
BEGIN
DOUT<=”00110000”WHENADDR=”00000000”ANDCS='0'ELSE
"11111011"WHENADDR=”00000001”ANDCS='0’ELSE
”00110010"WHENADDR="00000010”ANDCS='0'ELSE
"10000001”WHENADDR=”00000011”ANDCS='0'ELSE
”01000000”WHENADDR=”00000100"ANDCS=’0'ELSE
”01010000"WHENADDR="00000101”ANDCS='0'ELSE
”00010010”WHENADDR="00000110"ANDCS='0’ELSE
”01100000"WHENADDR=”00000111”ANDCS=’0'ELSE
”01110001"WHENADDR="00001000"ANDCS='0’ELSE
"01000001”WHENADDR=”00001001"ANDCS='0'ELSE
”01010000"WHENADDR=”00001010”ANDCS='0’ELSE
”00000100"WHENADDR="00001011"ANDCS=’0’ELSE
”10011001"WHENADDR=”00001100"ANDCS=’0’ELSE
”01010000"WHENADDR=”00001101”ANDCS='0'ELSE
”00000100”WHENADDR="00001110"ANDCS='0’ELSE
”10100110"WHENADDR=”00001111”ANDCS=’0’ELSE
”10110000"WHENADDR="00010000"ANDCS=’0’ELSE
”00000100”WHENADDR="00010001"ANDCS='0'ELSE
"11000010"WHENADDR=”00010010"ANDCS='0’ELSE
"11011000"WHENADDR="00010011”ANDCS=’0’ELSE
”00000000";
ENDA;
3。
9指令寄存器单元
3。
10时序产生器单元
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED。
ALL;
ENTITYCOUNTERIS
PORT(
Q,CLR:
INSTD_LOGIC;
T2,T3,T4:
OUTSTD_LOGIC
);
ENDCOUNTER;
ARCHITECTUREAOFCOUNTERIS
SIGNALX:
STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
PROCESS(Q,CLR)
BEGIN
IF(CLR=’0’)THEN
T2〈='0';
T3〈='0';
T4〈='0’;
X〈=”00”;
ELSIF(Q’EVENTANDQ=’1')THEN
X<=X+1;
T2<=(NOTX
(1))ANDX(0);
T3〈=X
(1)AND(NOTX(0));
T4<=X
(1)ANDX(0);
ENDIF;
ENDPROCESS;
ENDA;
3。
11操作控制器单元
地址转移逻辑电路ADDR
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164。
ALL;
ENTITYADDRIS
PORT(
I7,I6,I5,I4:
INSTD_LOGIC;
FS,T4,P1,P2:
INSTD_LOGIC;
SE6,SE5,SE4,SE3,SE2,SE1:
OUTSTD_LOGIC
);
ENDADDR;
ARCHITECTUREAOFADDRIS
BEGIN
SE6〈='1';
SE5<=NOT(FSANDP2ANDT4);
SE4〈=NOT(I7ANDP1ANDT4);
SE3<=NOT(I6ANDP1ANDT4);
SE2〈=NOT(I5ANDP1ANDT4);
SE1〈=NOT(I4ANDP1ANDT4);
ENDA;
微地址寄存器
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<=