最新计算机组成原理课程设计.docx
《最新计算机组成原理课程设计.docx》由会员分享,可在线阅读,更多相关《最新计算机组成原理课程设计.docx(23页珍藏版)》请在冰豆网上搜索。
最新计算机组成原理课程设计
东北大学秦皇岛分校
计算机与通信工程学院
计算机组成原理课程设计
专业名称
计算机科学与技术
班级学号
学生姓名
指导教师
设计时间
2014.12.23~2015.1.3
课程设计任务书
专业:
计算机与通信工程学院学号:
学生姓名:
设计题目:
一、设计实验条件
808实验室
二、设计任务及要求
1.7号指令;
2.14号指令;
3.28号指令;
4.33号指令;
5.机器周期产生电路;
6.74ls139译码器。
设计要求
独立设计一台模型计算机中的部分指令及一些数字电路部件。
三、设计报告的内容
1.设计题目与设计任务
题目:
指令系统及ALU设计
1.7号,14号,28号,33号指令设计;
2.机器周期产生电路;
3.74LS139译码器。
2.前言(绪论)
加强对计算机组成原理的理解,并将理论和时间结合在一起,在实践中体会设计和学习的乐趣,并进一步了解计算机各个模块的原理。
3.设计主体
【课程设计内容】
1.指令系统设计
第7号指令:
助记符:
ADDA,EM
格式:
操作码和地址码
操作码:
ADD
地址码:
A,EM
功能:
将存储器EM地址的值加入累加器A中
寻址方式:
直接寻址
第14号指令:
助记符:
SUBA,@R?
格式:
操作码和地址码
操作码:
SUB
地址码:
A,@R?
功能:
从累加器A中减去间址存储器的值
寻址方式:
寄存器间接寻址
第28号指令:
助记符:
ORA,#II
格式:
操作码和地址码
操作码:
OR
地址码:
A,#II
功能:
累加器A“或”立即数II
寻址方式:
立即数寻址
第33号指令:
助记符:
MOVR?
A
格式:
操作码和地址码
操作码:
MOV
地址码:
R?
A
功能:
将A中的值送入R?
中
寻址方式:
寄存器间接寻址
2.模型机硬件设计:
题目:
机器周期产生电路
功能:
设计电路,实现A、B类指令分别有2和4个机器周期。
3.逻辑电路设计:
题目:
74LS139译码器。
功能:
实现双二—四译码器
机器周期
A
B
CYACYB
CYA‘CYB’
CYACYB
CYA’CYB’
M0
00
11
00
01
M1
01
10
M2
10
11
M3
11
00
11
10
【系统设计】
1.模型机逻辑框图
图1
图2
图3
2.指令系统设计
第7号指令:
ADDA,EM
指令类型:
算术运算指令
寻址方式:
直接寻址
指令格式:
001110
XX
操作码及寻址类型
第14号指令:
SUBA,@R?
指令类型:
算术运算指令
寻址方式:
寄存器间接寻址
指令格式:
001101
XX
操作码及R?
的选择00,01,10,11
第28号指令:
ORA,#II
指令类型:
逻辑运算指令
寻址方式:
立即数寻址
指令格式:
010111XX
操作码
第33号指令:
MOVR?
A
指令类型:
数据传送指令
寻址方式:
寄存器间接寻址
指令格式:
001001
XX
操作码及R?
的选择00,01,10,11
3.微操作控制信号
1、XRD:
外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。
2、EMWR:
程序存储器EM写信号。
3、EMRD:
程序存储器EM读信号。
4、PCOE:
将程序计数器PC的值送到地址总线ABUS上(MAR)。
5、EMEN:
将程序存储器EM与数据总线DBUS接通,由EMWR和EMRD决
是将DBUS数据写到EM中,还是从EM读出数据送到DBUS。
6、IREN:
将程序存储器EM读出的数据打入指令寄存器IR。
7、EINT:
中断返回时清除中断响应和中断请求标志,便于下次中断。
8、ELP:
PC打入允许,与指令寄存器IR3、IR2位结合,控制程序跳转。
9、FSTC:
进位置1,CY=1
10、FCLC:
进位置0,CY=0
11、MAREN:
将地址总线ABUS上的地址打入地址寄存器MAR。
12、MAROE:
将地址寄存器MAR的值送到地址总线ABUS上。
13、OUTEN:
将数据总线DBUS上数据送到输出端口寄存器OUT里。
14、STEN:
将数据总线DBUS上数据存入堆栈寄存器ST中。
15、RRD:
读寄存器组R0-R3,寄存器R?
的选择由指令的最低两位决定。
16、RWR:
写寄存器组R0-R3,寄存器R?
的选择由指令的最低两位决定。
17、CN:
决定运算器是否带进位移位,CN=1带进位,CN=0不带进位。
18、FEN:
将标志位存入ALU内部的标志寄存器。
19、WEN:
将数据总线DBUS的值打入工作寄存器W中。
20、AEN:
将数据总线DBUS的值打入累加器A中。
21-23:
X2~X0:
X2、X1、X0三位组合来译码选择将数据送到DBUS上的寄存器。
24-26:
S2~S0:
S2、S1、S0三位组合决定ALU做何种运算。
4.指令执行流程
编号
助记符
功能
机器码
周期总数CT
节拍数
微操作
控制信号
涉及的硬件
1
_FATCH_
取指令
000000XX
10
T2
PC→MAR
PCOE,MAREN
PC,MAR,EM,W,IR
T1
EM→W
EMEN,EMRD,WEN
T0
W→IR
IREN
PC+1
7
ADDA,
EM
将存储器EM地址的值加入累加器A中
001110XX
111
T7
PC→MAR
POCE,MAREN
PC,MAR,EM,W,A,ALU,F
T6
EM→W
PC→PC+1
EMEN,EMRD,WEN
T5
W→MAR
WEN,WAREN
T4
EM→W
EMEN,WEN
T3
A+W→DBUS→A
S2~S0,AEN,FEN
14
SUBA,
@R
从累加器A中减去间址存储器的值
001101XX
101
T5
R?
→DBUS→MAR
RRD,MAREN,
X2~X0
R,DBUS,MAR,EM,A,W,ALU,F
T4
EM→W
EMEN,EMRD,WEN
T3
ALU(A-W)→DBUS
→A
S2~S0,AEN,FEN
28
ORA,#II
累加器A“或”立即数II
011011XX
101
T5
PC→MAR
PCOEMAREN
PC,MAR,EM,W,A,
ALU,F
T4
EM→W,
PC→PC+1
EMEN,EMRDWEN
T3
WORA→DBUS
→A
S2~S0,AEN
33
MOVR?
A
将A中的值送入R?
中
100000XX
011
T3
A→DBUS→R?
AEN
A,DBUS,A
流程图如下:
图47号指令流程图
图5第14号指令
图628号指令
图7第33号指令
指令周期安排:
图8分3号指令
【系统实现】
1.模型机实现
1)逻辑电路的图形符号表示、功能
图9
(2)系统实现
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
--Uncommentthefollowinglibrarydeclarationifusing
--arithmeticfunctionswithSignedorUnsignedvalues
--useIEEE.NUMERIC_STD.ALL;
--Uncommentthefollowinglibrarydeclarationifinstantiating
--anyXilinxprimitivesinthiscode.
--libraryUNISIM;
--useUNISIM.VComponents.all;
entitycycleis
Port(A:
inSTD_LOGIC;
B:
inSTD_LOGIC;
CYA:
inSTD_LOGIC;
CYB:
inSTD_LOGIC;
CLK:
inSTD_LOGIC;
cya1:
OUTSTD_LOGIC;
cyb1:
OUTSTD_LOGIC);
endcycle;
architectureBehavioralofcycleis
begin
PROCESS(CLK)IS
BEGIN
IF(CLK'EVENTANDCLK='1')THEN
IF(A='1')THEN
IF(CYA='0'ANDCYB='0')THEN
cya1<='1';cyb1<='1';
ENDIF;
IF(CYA='1'ANDCYB='1')THEN
cya1<='0';cyb1<='0';
ENDIF;
ENDIF;
IF(B='1')THEN
IF(CYA='0'ANDCYB='0')THEN
cya1<='0';cyb1<='1';
ENDIF;
IF(CYA='0'ANDCYB='1')THEN
cya1<='1';cyb1<='0';
ENDIF;
IF(CYA='1'ANDCYB='0')THEN
cya1<='1';cyb1<='1';
ENDIF;
IF(CYA='1'ANDCYB='1')THEN
cya1<='0';cyb1<='0';
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
endBehavioral;
1、逻辑电路设计
(1)逻辑电路的图形符号表示、功能
图10
(2)系统实现
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
----Uncommentthefollowinglibrarydeclarationifinstantiating
----anyXilinxprimitivesinthiscode.
--libraryUNISIM;
--useUNISIM.VComponents.all;
entityyjyis
Port(A:
inSTD_LOGIC_VECTOR(1downto0);
B:
inSTD_LOGIC_VECTOR(1downto0);
Y1:
outSTD_LOGIC_VECTOR(3downto0);
Y2:
outSTD_LOGIC_VECTOR(3downto0));
endyjy;
architectureBehavi