东秦组成原理课设报告.docx
《东秦组成原理课设报告.docx》由会员分享,可在线阅读,更多相关《东秦组成原理课设报告.docx(25页珍藏版)》请在冰豆网上搜索。
东秦组成原理课设报告
东北大学秦皇岛分校
计算机与通信工程学院
计算机组成原理课程设计
专业名称
计算机科学与技术
班级学号
学生姓名
指导教师
设计时间
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;
architectureBehavioralofyjyis
begin
P1:
PROCESS(A)
BEGIN
CASEAIS
WHEN"00"=>Y1<="0111";
WHEN"01"=>Y1<="1011";
WHEN"10"=>Y1<="1101";
WHEN"11"=>Y1<="1110";
WHENOTHERS=>Y1<="1111";
ENDCASE;
ENDPROCESS;
PROCESS(B)
BEGIN
CASEBIS
WHEN"00"=>Y2<="0111";
WHEN"01"=>Y2<="1011";
WHEN"10"=>Y2<="1101";
WHEN"11"=>Y2<="1110";
WHENOTHERS=>Y2<="1111";
ENDCASE;
ENDPROCESS;
endBehavioral;
【系统测试】
(一)、模型机测试
1.功能仿真:
仿真过程如下:
●在sources窗口处右击,加入新的源文件
●创建波形仿真激励文件.tbw:
选TestBenchWaveform,并输入文件名test_74ls
●初始化时钟周期及相关参数→finash
●右侧会出现.tbw文件窗口,设置输入引脚的值,存盘
●左侧sources窗口选择“behavioralsimulation”,下面processes窗口会自动出现"ModelsimSimulator"
●双击其中的“Simulatebehavioralmodel”会自动调用“Modelsim”进行仿真,观察波形窗口,观察是否正确
A=1,B=0,CYA=1,CYB=1;输出结果为:
cya1=0,cyb1=0
图11
2.级RTL逻辑电路
图12
(二)硬件测试
1、功能仿真
仿真过程如下:
●在sources窗口处右击,加入新的源文件
●创建波形仿真激励文件.tbw:
选TestBenchWaveform,并输入文件名test_74ls
●初始化时钟周期及相关参数→finash
●右侧会出现.tbw文件窗口,设置输入引脚的值,存盘
●左侧sources窗口选择“behavioralsimulation”,下面processes窗口会自动出现"ModelsimSimulator"
●双击其中的“Simulatebehavioralmodel”会自动调用“Modelsim”进行仿真,观察波形窗口,观察是否正确
A=11,B=00,输出:
y1=1110,y2=0111
图13
A=01,B=10,输出:
y1=1011,y2=1101
图14
2、RTL级逻辑电路
图15
【总结】
在模拟机的设计中,周期a,b同时为1时,也就是当指令同时为2个周期和4个周期时,输出应为EOF,但是这段程序中输出为00.由于时间关系,我并没有解决这个问题。
在硬件设计实验中,可以在硬件中加入两个使能端控制A,B的输入。
【心得体会】
通过这次课程设计,我学习了VHDL进行FPGA/CPLD设计的基本步骤和方法,可以熟练的掌握xilinx设计程序的使用和modelsim模拟器的模拟方法。
当在这次课设中遇到困难时,在和同学的交流中加深了同学的友谊,同时也让我知道了自己知识的不足。
遇到问题并解决问题是一件很愉快的事情。
在三天时间完成这次课设是一件很艰巨的任务,但我还是尽自己的能力完成了这次课设,虽然程序在设计中还是会有一些问题和瑕疵,但是任务书中的要求全部完成并进行了调试。
在这次实践中我增长了知识,在解决问题的途中学会了自我寻找问题的答案。
将理论和实践结合在一起,为以后工作,科研做下基础。
【参考文献(资料)】
[1]袁静波等.计算机组成与结构.北京:
机械工业出版社,2011.
[2]刘福奇。
基于VHDL的FPGA和Nios实例精炼,北京航空航天大学出版社,2011
[3]陈耀和.VHDL语言设计技术[M].北京:
电子工业出版社,2004.
[4]汉泽西.EDA技术及其应用[M].北京:
北京航空航天出版社,2004
[5]程晓荣,翟学明,王晓霞.计算机组成与结构[M].北京:
中国电力出版社,2007.