计算机CPU工作原理的实验

(一)实验类型:验证性+设计性

(二)实验类别:综合性专业基础实验

(三)实验学时数:8学时

(四)实验目的

理解和验证参考代码,并在其基础上,通过适当改造,尝试设计一个简单的CPU,并测试其结果。

(五)实验内容

设计一个能验证计算机CPU工作原理的实验系统,包括取指部分、指令译码部分、执行部分、通用寄存器组以及存储器,并测试其结果。

(六)实验要求

    根本目标:缩小到8位的数据通路,也即是4OP4位的地址码。(参考代码是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

读写内存

 

传送地址

AR<-地址

 

读内存,

IR<-读出内容

 

                  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

****

组 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值