东秦 组成原理课设.docx
《东秦 组成原理课设.docx》由会员分享,可在线阅读,更多相关《东秦 组成原理课设.docx(23页珍藏版)》请在冰点文库上搜索。
东秦组成原理课设
东北大学秦皇岛分校
计算机与通信工程学院
计算机组成原理课程设计
专业名称
计算机科学与技术
班级学号
学生姓名
指导教师
袁静波
设计时间
2013.12.23~2014.1.3
课程设计任务书
专业:
计算机科学与技术学号:
学生姓名(签名):
设计题目:
指令系统及机器周期电路设计
一、设计实验条件
综合实验室
二、设计任务及要求
1.7号指令;
2.14号指令;
3.28号指令;
4.33号指令;
5.机器周期产生电路;
6.74LS139译码器。
三、设计报告的内容
1.设计题目与设计任务(设计任务书)
题目:
指令系统及ALU设计
1.7号,14号,28号,33号指令设计;
2.机器周期产生电路;
3.74LS139译码器。
2.前言(绪论)
融会贯通计算机组成原理课程的内容,通过知识的综合运用,加深对计算机系统各个模块的工作原理及相互联系的认识;
学习运用VHDL进行FPGA/CPLD设计的基本步骤和方法,熟悉EDA的设计、模拟调试工具的使用,体会FPGA/CPLD技术相对于传统开发技术的优点;
培养科学研究的独立工作能力,取得工程设计与组装调试的实践经验。
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译码器。
功能:
实现双二—四译码器
表274LS139功能表
【系统设计】
1.模型机逻辑框图
图1整机逻辑框图
图2芯片引脚逻辑框图
图3CPU逻辑框图
2.指令系统设计
第7号指令:
ADDA,EM
指令类型:
算术运算指令
指令格式:
XX
操作码及寻址类型
第14号指令:
SUBA,@R?
指令类型:
算术运算指令
指令格式:
001101
XX
操作码及R?
的选择00,01,10,11
第28号指令:
ORA,#II
指令类型:
逻辑运算指令
指令格式:
010111XX
←操作码
如:
00011000
←8位立即数
第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.指令执行流程
表2指令简介
编号
助记符
功能
机器码
周期总数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
以流程图表示如下:
图4第7号指令流程图
图5第14条指令流程图
图6第28号指令流程图
图7第33号指令流程图
【系统实现】
1、模型机实现
(1)逻辑电路的图形符号表示、功能
图8机器周期产生电路
功能描述:
(2)系统实现
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
entityhlis
PORT(A:
INSTD_LOGIC;
B:
INSTD_LOGIC;
CYA:
INSTD_LOGIC;
CYB:
INSTD_LOGIC;
CLK:
INSTD_LOGIC;
CYAO:
OUTSTD_LOGIC;
CYBO:
OUTSTD_LOGIC);
endhl;
architectureBehavioralofhlis
begin
PROCESS(CLK)IS
BEGIN
IF(CLK'EVENTANDCLK='1')THEN
IF(A='1')THEN
IF(CYA='0'ANDCYB='0')THENCYAO<='1';CYBO<='1';
ENDIF;
IF(CYA='1'ANDCYB='1')THENCYAO<='0';CYBO<='0';
ENDIF;
ENDIF;
IF(B='1')THEN
IF(CYA='0'ANDCYB='0')THENCYAO<='0';CYBO<='1';
ENDIF;
IF(CYA='0'ANDCYB='1')THENCYAO<='1';CYBO<='0';
ENDIF;
IF(CYA='1'ANDCYB='0')THENCYAO<='1';CYBO<='1';
ENDIF;
IF(CYA='1'ANDCYB='1')THENCYAO<='0';CYBO<='0';
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
ENDbehavior;
2、逻辑电路设计
(1)逻辑电路的图形符号表示、功能
图1074LS139
(2)系统实现
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entitylsis
port(
G1,A1,B1,G2,A2,B2:
STD_LOGIC;
Y1:
OUTSTD_LOGIC_VECTOR(0TO3);
Y2:
OUTSTD_LOGIC_VECTOR(0TO3)
);
endls;
architectureBehavioraloflsis
SIGNALIN1:
STD_LOGIC_VECTOR(1DOWNTO0);
SIGNALIN2:
STD_LOGIC_VECTOR(1DOWNTO0);
begin
IN1<=B1&A1;
IN2<=B2&A2;
P1:
PROCESS(G1,IN1)
BEGIN
IF(G1='0')THEN
CASEIN1IS
WHEN"00"=>Y1<="0111";
WHEN"01"=>Y1<="1011";
WHEN"10"=>Y1<="1101";
WHEN"11"=>Y1<="1110";
WHENOTHERS=>Y1<="XXXX";
ENDCASE;
ELSE
Y1<="XXXX";
ENDIF;
ENDPROCESS;
P2:
PROCESS(G2,IN2)
BEGIN
IF(G2='0')THEN
CASEIN2IS
WHEN"00"=>Y2<="0111";
WHEN"01"=>Y2<="1011";
WHEN"10"=>Y2<="1101";
WHEN"11"=>Y2<="1110";
WHENOTHERS=>Y2<="XXXX";
ENDCASE;
ELSE
Y2<="XXXX";
ENDIF;
ENDPROCESS;
endBehavioral;
【系统测试】
(一)、模型机测试(机器周期产生电路)
1、功能仿真
仿真过程如下:
●在sources窗口处右击,加入新的源文件
●创建波形仿真激励文件.tbw:
选TestBenchWaveform,并输入文件名test_alu
●初始化时钟周期及相关参数→finash
●右侧会出现.tbw文件窗口,设置输入引脚的值,存盘
●左侧sources窗口选择“behavioralsimulation”,下面processes窗口会自动出现"ModelsimSimulator"
●双击其中的“Simulatebehavioralmodel”会自动调用“Modelsim”进行仿真,观察波形窗口,观察是否正确
当A=1,B=0,CYACYB=11时,输出CYAOCYBO=00时:
图11
当A=0,B=1,CYACYB=11时,CYAOCYBO=00时:
图12
2、RTL级逻辑电路
图13
(二)硬件测试(74LS139译码器)
1、功能仿真
仿真过程如下:
●在sources窗口处右击,加入新的源文件
●创建波形仿真激励文件.tbw:
选TestBenchWaveform,并输入文件名test_74ls
●初始化时钟周期及相关参数→finash
●右侧会出现.tbw文件窗口,设置输入引脚的值,存盘
●左侧sources窗口选择“behavioralsimulation”,下面processes窗口会自动出现"ModelsimSimulator"
●双击其中的“Simulatebehavioralmodel”会自动调用“Modelsim”进行仿真,观察波形窗口,观察是否正确
图14
仿真证实:
当B1A1=10,B2A2=01时,对应Y1=1101,Y2=1011,与74LS139功能表一致。
2、RTL级逻辑电路
图15
2.结束语
通过此次课程设计我学习到了运用VHDL进行FPGA/CPLD设计的基本步骤和方法,熟悉EDA的设计、模拟调试工具的使用,体会FPGA/CPLD技术相对于传统开发技术的优点,同时培养科学研究的独立工作能力,取得工程设计与组装调试的实践经验。
但是在此过程中也遇到了很多困难,比如在设计开始的阶段对于XILINXISE和ModelsimSE这两个软件就不会用,通过和同学交流我大概了解了软件的用法,在进行ALU仿真时,总是运行不了,经过仔细分析,才发现可能是我的ModelsimSE版本的问题。
通过这次课程设计,使我对一门新的语言有了一些了解,VHDL是一门不同于我们以前学习的软件编程语言的硬件编程语言。
在短短一周的时间内,了解一门编程语言和与其相关的软件是一件不容易的事。
对于我们来说是个挑战,但通过一周的辛苦努力终于完成了既定的实习内容。
但程序中不乏一些有待继续研究的问题。
3.参考资料
[1]程晓荣,翟学明,王晓霞.计算机组成与结构[M].北京:
中国电力出版社,2007.
[2]袁静波,丁顺利,王和兴,宋欣.计算机组成与结构[M].北京:
机械工业出版社,2011.
[3]陈耀和.VHDL语言设计技术[M].北京:
电子工业出版社,2004.
[4]汉泽西.EDA技术及其应用[M].北京:
北京航空航天出版社,2004
四、设计时间与安排
1、设计时间:
2周
2、设计时间安排:
熟悉实验设备、收集资料:
2天
设计图纸、实验、计算、程序编写调试:
7天
编写课程设计报告:
2天
答辩:
1天