(一)实验类型:验证性+设计性
(二)实验类别:综合性专业基础实验
(三)实验学时数:8学时
(四)实验目的
理解和验证参考代码,并在其基础上,通过适当改造,尝试设计一个简单的CPU,并测试其结果。
(五)实验内容
设计一个能验证计算机CPU工作原理的实验系统,包括取指部分、指令译码部分、执行部分、通用寄存器组以及存储器,并测试其结果。
(六)实验要求
根本目标:缩小到8位的数据通路,也即是4位OP和4位的地址码。(参考代码是16位数据通路,也即8位OP和8位的地址码)
(参见实践报告.doc中的9-11页的指令系统总体说明)
学生按照实验要求,在实验平台上实现具有存储与运算功能的计算机系统,并能通过测试,以验证其正确性。具体要求如下:
(1)取指及调试(组长兼任)。
熟悉指令取指过程,并把16位的部分改为8位。使用DebugController和系统中的调试模块(reg_testa.vhd,reg_test.vhd)。
(2)熟悉电原理图的连接,以通用寄存器组部分为例。
实现上,用实验4所用的简单通用寄存器组(4个寄存器+1个2-4译码器+2个4选1多路开关)设计方法,替代参考代码中的通用寄存器组部分。
(3)学习和掌握控制逻辑。
设计一套指令集(可在原参考代码指令集的基础上做删减,从中选取16条基本的指令),并修改控制器中指令集的译码部分。
(4)执行部件,ALU的改造。
可在原参考代码的基础上,改变某些运算功能的实现方式,比如加、减、增1、减1等算术运算。
实现上,原参考代码采用了最少编码量的“+”、“-”号实现。可以改用通过port map语句调用系统自带的加法器,也可以进一步自己编写加法器,然后用port map语句调用。
(5)存储器部分的加入。
原参考代码采用的带外部存储器的模式。实现上,可以在实验3的基础上,设计一个适合加到本CPU系统的存储器部分,通过与原参考代码系统连接外带存储器的数据线、控制线和地址线相连接。
此部分设计中,存储器的指令置入是一个难点。可以考虑简单点的作为只读模式把指令写死在存储器中(可用于验证指令的执行);或者考虑在reset的那一拍里,实现存储器中待指令的置入。
存储器模块单独调试可行后再加到系统上。
(七)实验设备
TEC-CA组成原理实验箱。
(八)实验课承担单位:信息学院
(九)总结构图(组长负责组织填写)
(十)指令集(组长负责组织填写)
(参考实验大纲中的示例,结合各小组自己的设计),撰写内容可参照参考材料的 实践报告.doc中的指令系统总体说明 (p9-11页)
(1) 指令格式分类(按指令字长和操作数不同):
① 单字单操作数指令
7 4 |
3 2 |
1 0 |
OPCODE DEST_REG 00
OPCODE OFFSET
包括:DEC,INC, JR,JRC,JRNC,JRZ,JRNZ
② 单字双操作数指令
7 4 |
3 2 |
1 0 |
OPCODE DEST_REG SOUR_REG
包括:ADD,SUB,AND,CMP, OR, LDRR,STRR
③双字单操作数指令
7 4 |
3 2 |
1 0 |
OPCODE 00 00
ADR
包括:JMPA
④双字双操作数指令
7 4 |
3 2 |
1 0 |
OPCODE DEST_REG 00
DATA
包括:MVRD
(2) 指令的分组及节拍:
读取指令:地址寄存器<-指令地址,修改PC内容使其指向下一条将要执行的指令;
读内存,指令寄存器<-读出的内容。
执行指令:通用寄存器之间的运算或传送,可1步完成;
读写内存,通常要两步完成。
根据指令的执行步骤不同,可以把全部指令分为A、B两组。其中A组指令完成的是通用寄存器之间的数据运算或传送,或其他一些特殊操作,在取指之后可一步完成,包括:ADD,SUB,AND,CMP,OR,DEC,INC ,JR,JRC,JRNC,JRZ,JRNZ;B组指令完成的是一次内存读写操作,在取指之后可两步完成,包括:JMPA,LDRR,STRR,MVRD。
在控制器方面我们选用了组合逻辑控制器方案。使用节拍来标记每条指令的执行步骤。由指令而定,在我们的系统中不同的执行步骤只有5个,故使用3位节拍就足够了。
000
001
|
|
|
B组指令
101 111
A组指令
011
(3) 指令汇总表:
指令格式 |
汇编语句 |
操作数个数 |
CZVS |
指令类型 |
功能说明 |
0000DRSR |
ADD DR,SR |
2 |
**** |
|
DR<-DR+SR |
0001DRSR |
SUB DR,SR |
2 |
**** |
|
DR<-DR-SR |
0010DRSR |
AND DR,SR |
2 |
**** |
A |
DR<-DR and SR |
0011DRSR |
CMP DR,SR |
2 |
**** |
|
DR-SR |
0100DRSR |
OR DR,SR |
2 |
**** |
组 |