东北大学秦皇岛分校组成课设报告.docx
《东北大学秦皇岛分校组成课设报告.docx》由会员分享,可在线阅读,更多相关《东北大学秦皇岛分校组成课设报告.docx(22页珍藏版)》请在冰豆网上搜索。
东北大学秦皇岛分校组成课设报告
东北大学秦皇岛分校
计算机与通信工程学院
计算机组成原理课程设计
专业名称
计算机科学与技术
班级学号
2153127
学生姓名
黎楠
指导教师
张冬丽
设计时间
2017.12.18~2017.12.29
课程设计任务书
专业:
计算机与通信工程学院学号:
*******学生姓名(签名):
设计题目:
指令系统及微地址修改电路设计
一、设计实验条件
1207实验室
硬件:
PC机
软件:
XilinxISEModelSim
编程语言:
VHDL
二、设计任务及要求
1.设计5号指令、21号指令、32号指令、56号指令;
2.断点方式下的微地址修改逻辑电路,实现“取指后,获取6、21、32、56号指令的微程序入口地址”;
3.8位求补器。
三、设计报告的内容
1.设计题目与设计任务(设计任务书)
【题目:
指令系统及微地址修改电路设计】
1.5号,21号,32号,56号指令设计;
2.断点方式下的微地址修改逻辑电路,实现“取指后,获取6、21、32、56号指令的微程序入口地址”;
3.8位求补器。
2.前言(绪论)(设计的目的、意义等)
融会贯通计算机组成原理课程的内容,通过知识的综合运用,加深对计算机系统各个模块的工作原理及相互联系的认识;
学习运用VHDL进行FPGA/CPLD设计的基本步骤和方法,熟悉EDA的设计、模拟调试工具的使用,体会FPGA/CPLD技术相对于传统开发技术的优点;
培养科学研究的独立工作能力,取得工程设计与组装调试的实践经验。
3.设计主体(各部分设计内容、分析、结论等)
【模型机逻辑框图】
图1整机逻辑框图
图2芯片引脚逻辑框图
图3CPU逻辑框图
【微操作控制信号】
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做何种运算。
3.1.指令系统设计:
第5号指令:
助记符:
ADDA,R?
格式:
操作码和地址码
操作码:
ADD
地址码:
A,R
功能:
累加器A“与”寄存器R?
的值
寻址方式:
寄存器直接寻址
第21号指令:
助记符:
ANDA,R?
格式:
操作码和地址码
操作码:
AND
地址码:
A,R
功能:
累加器A“与”寄存器R?
的值
寻址方式:
寄存器直接寻址
第32号指令:
助记符:
MOVA,#II
格式:
操作码和地址码
操作码:
MOV
地址码:
A,#II
功能:
将立即数II送到累加器A中
寻址方式:
立即数寻址
第56号指令:
助记符:
RLCA
格式:
操作码和地址码
操作码:
RLC
地址码:
A
功能:
累加器A带进位左移
寻址方式:
累加器寻址
【指令格式】
第5号指令:
ADDA,R?
指令类型:
算术运算指令
指令格式:
000100
XX
操作码寻址类型
第21号指令:
ANDA,R?
指令类型:
逻辑运算指令
指令格式:
010100
XX
操作码寻址类型
第32号指令:
MOVA,#II
指令类型:
数据传送指令
指令格式:
011111XX
←操作码
如:
00011000
←8位立即数
第56号指令:
RLCA
指令类型:
移位指令
指令格式:
110111
XX
【指令执行流程】
表1各指令执行流程图
编号
助记符
功能
机器码
周期总数
节拍数
微操作
控制信号
涉及硬件
1
FATCH
取指令
000000
010
T2
PC->MAR
PCOE,
MAREN
PC,MAR,EM,W,IR
T1
EM->W
EMEN,
EMRD,
WEN
T0
W->IR
PC+1->PC
IREN
5
ADDA,R?
将寄存器R?
的值加入累加器A中
000100
100
T4
R->W
RRD
X2~X0
WEN
R,DBUS,W,ALU,F
T3
ALU(A+W)->A
S2S1S0
=011
AENFEN
21
ANDA,R?
累加器A“与”寄存器R?
的值
010100
100
T4
R->W
RRD
X2~X0
WEN
R,DBUS,W,ALU
T3
ALU(A&W)->A
S2S1S0
=011
AENFEN
32
MOVA,#II
将立即数II送到累加器A中
011111
101
T5
PC->MAR
PCOE,
MAREN
PC,MAREM,W,A,
ALU
T4
EM->DBUS->W
EMEN
EMRD
WEN
T3
W->DBUS->A
AEN
56
RLCA
累加器A带进位左移
110111
100
T4
A->ALU->L
X=110
FEN
CN=1
R,DBUS,W,A,
FCN
T3
L->DBUS->A
AEN
【流程图】
图4第5号指令流程图
图5第21号指令流程图
图6第32号指令流程图
图7第56号指令流程图
3.2.模型机硬件设计:
题目:
断点方式下的微地址修改逻辑电路,实现“取指后,获取6、21、32、56号指令的微程序入口地址”
【逻辑电路的图形符号表示、功能】
表2各指令微程序入口地址
编号
指令助记符
标志位P1P0
微程序入口地址
1
FATCH
001
6
ADDA,@R?
00
101
21
ANDA,R?
01
010
32
MOVA,#II
10
011
56
RLCA
11
100
【微程序入口地址】
图8微程序入口地址
【源代码】
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
entityln_zlxtis
Port(addr1:
inSTD_LOGIC_VECTOR(2DOWNTO0);
P1P0:
inSTD_LOGIC_VECTOR(1DOWNTO0);
addr2:
outSTD_LOGIC_VECTOR(2DOWNTO0));
endln_zlxt;
architectureBehavioralofln_zlxtis
begin
PROCESS(addr1,P1P0)
BEGIN
IFP1P0(1DOWNTO0)="00"THEN
addr2(2DOWNTO0)<=addr1(2DOWNTO0)+'1';
ELSE
addr2(2DOWNTO0)<=addr1(2DOWNTO0)+P1P0(1DOWNTO0);
ENDIF;
ENDPROCESS;
endBehavioral;
【结果】
图9微程序入口地址
【RTL级逻辑电路】
图10RTL级逻辑电路
【仿真】
●在sources窗口处右击,加入新的源文件
●创建波形仿真激励文件.tbw:
选TestBenchWaveform,并输入文件名YUMIAO
●初始化时钟周期及相关参数→finish
●右侧会出现.tbw文件窗口,设置输入引脚的值,存盘
●左侧sources窗口选择“behavioralsimulation”,下面processes窗口会自动出现"ModelsimSimulator"
●双击其中的“Simulatebehavioralmodel”会自动调用“Modelsim”进行仿真,观察波形窗口,观察是否正确
第一组测试:
输入:
code_in=110,10
图11输入波形
输出:
code_out=000
图12输出波形
第二组测试:
输入:
code_in=101,10
图13输入波形
输出:
code_out=111
图14输出波形
3.3.数字电路:
题目:
8位求补器
功能:
对输入的8位二进制进行求补计算
【功能描述】输入code_in是8位二进制原码,输出code_out是8位二进制补码。
【源代码】
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
entityln_szdlis
Port(code_in:
inSTD_LOGIC_VECTOR(7DOWNTO0);
code_out:
outSTD_LOGIC_VECTOR(7DOWNTO0));
endln_szdl;
architectureBehavioralofln_szdlis
begin
Process(code_in)
BEGIN
code_out(7)<=code_in(7);
ifcode_in(7)='0'THEN
code_out(6DOWNTO0)<=code_in(6DOWNTO0);
ELSE
code_out(6DOWNTO0)<=NOTcode_in(6DOWNTO0)+'1';
ENDIF;
ENDPROCESS;
endBehavioral;
【结果】
图15八位求补器
【RTL级逻辑电路】
图16RTL级逻辑电路
【仿真】
●在sources窗口处右击,加入新的源文件
●创建波形仿真激励文件.tbw:
选TestBenchWaveform,并输入文件名YUMIAO
●初始化时钟周期及相关参数→finish
●右侧会出现.tbw文件窗口,设置输入引脚的值,存盘
●左侧sources窗口选择“behavioralsimulation”,下面processes窗口会自动出现"ModelsimSimulator"
●双击其中的“Simulatebehavioralmodel”会自动调用“Modelsim”进行仿真,观察波形窗口,观察是否正确
第一组测试:
输入:
code_in=10110010
图17输入波形
输出:
code_out=11001110
图18输出波形
第二组测试:
输入:
code_in=00111010
图19输入波形
输出:
code_out=00111010
图20输出波形
3.结束语(设计的收获、体会等)
在课程设计中,我尝试在自己的电脑上安装了相应程序,由于程序的版本与window版本不兼容,出现了部分功能不能实现的情况,尤其是不能出现仿真波形。
使用了机房电脑后问题解决。
通过这次课设,我对上课所学的知识有了进一步的认识,对计算机硬件也有了更清晰的了解,尤其是CPU的内部结构。
在实验之前对于XILINXISE和ModelsimSE这两个软件一点也不了解,所以对软件的研究也耗费了很多精力。
虽然中间出现了很多问题,通过向其他同学请教和查找资料,最终都得到很好地解决。
短短的几天,我学到了很多。
尤其是锻炼了自己动手操作的能力,提高了自己查阅更多有用资料的效率。
通过这次课程设计,我深刻体会到了实践的重要性。
4.参考资料
[1]袁静波等.计算机组成与结构.北京:
机械工业出版社,2011.
[2]陈耀和.VHDL语言设计技术[M].北京:
电子工业出版社,2004.
[3]李云松,宋锐.XilinxFPGA数据基础(VHDL)版[M].陕西:
西安电子科技大
学出版社,2008.
[4]xilinx_ISE_9.1中文教程
网址:
[5]VHDL语言快速入门必读
网址:
四、设计时间与安排
1、设计时间:
2周
2、设计时间安排:
熟悉实验设备、收集资料:
2天
设计图纸、实验、计算、程序编写调试:
5天
编写课程设计报告:
2天
答辩:
1天