我们当时是有两个实验的。一个是计组课内的实验:16位模型机的设计、还有一个是计组的最终大课设:计算机组成与结构综合实验,另一篇文章我将给出综合实验的报告

第一个是课内的设计实验:


  1. 引言
    1.1 设计目的
    (1)掌握计算机的基本组成和工作原理;
    (2)掌握计算机主要功能部件的功能与设计方法;
    (3)掌握MIPS指令集各类指令的功能和执行流程;
    (4)综合运用所学知识,在掌握部件单元电路设计的基础上,进一步设计一台16位的
    CPU,建立计算机整机概念;
    (5)通过本次设计,理论联系实践,进一步加强学生分析问题、解决问题的能力,提高自身硬件设计水平。

1.2 设计任务
对内存中存放的一个数组,计算所有元素之和,然后将和存回内存中。

汇编代码如下:

  1. 详细设计及实现
    2.1 拟定指令系统

分析:


即得出数据流动的方向为:立即数→内存,内存→寄存器,寄存器→寄存器,操作数采用寄存器间接寻址方式,寄存器变址寻址方式,每通过寻址进行一次数组元素相加,则将地址增加两个字节循环次数为数组长度。

2.2 指令格式

即单指令单操作数:INC   BRANCHI

单指令双操作数:mov load store LOADI
双字三操作数:BRANCHEQI BRANCHGTI
2.3 操作码及功能码的编码

附实验书上指令及操作码设计:

2.4 寻址方式

将主存中数据累加并存储到内存单元中的程序如下:
地址 机器码 指令
0000h 2001h 0000h Mov ax,0000h
0002h 2003h 0006h Mov cx,0006h
0004h 4002h 1232h Lea bx,a
0006h 4004h 1232h aaa:Mov, dx,[bx]
0008h 3014h Add ax,dx
0009h 1002h Inc bx
000ah 5000h Loop aaa
000ch 4002h 1323h Lea bx,b
000eh 11323h 001h Mov [bx],ax
0010h 2001h 004ch Mov ah,4ch
0012h 6000h 0021h Int 21h

依据以上的指令系统,将主存中数据累加并存储到内存单元中的程序:

  1. 16位CPU的模型
    3.1 CPU结构设计

分析:系统中所有向数据总线输出数据的模块,其输出口必须使用三态控制器。
且采用单总线结构的16位CPU结构图,包含了基本的功能模块,由寄存器阵列构成的8个16位寄存器Reg0----Reg7;工作寄存器OpReg;算术逻辑运算部件ALU;移位器Shifter;输出寄存器OutReg;比较器Comp;指令寄存器InstrReg:程序计数器ProgCnt;地址寄存器AddrReg。所有功能模块共用16位的三态数据总线进行信息的传送。
控制器模块由状态机实现,控制器依据指令、数据通路通过控制线向各功能模块发出控制命令。
寄存器阵列构成的8个16位寄存器Reg0----Reg7的优点是节省资源、使用方便。它们共用一个三态开关,由控制器选择与数据总线的连接。
工作寄存器OpReg可为ALU、比较器Comp提供一个操作数,而 ALU、比较器的另一操作数直接来自数据总线。
将ALU、移位器Shifter、输出寄存器OutReg串接起来,由控制器统一控制来共同完成一些复杂的操作,由输出寄存器OutReg存储结果,输出寄存器OutReg向总线的输出端含有三态开关。
比较器Comp 由控制器直接控制,比较的结果进入控制器。
地址寄存器AddrReg提供要访问的主存单元的地址,本设计中将程序和数据放在同一存储器中。
程序计数器ProgCnt,不具备清零和+1的功能,存放CPU要执行的下一条指令的地址。
指令寄存器InstrReg存放CPU正在执行的指令。
工作寄存器OpReg,输出寄存器OutReg,指令寄存器InstrReg,程序计数器ProgCnt,地址寄存器AddrReg,均为最基本的寄存器。
为了验证CPU的功能,增加存储器,存储器中存入完成数据块传送所需的程序和数据。
3.2 指令流程以及微操作控制信号
先完成了实验指导书上的七条指令设计(优先给出):
这里因为篇幅只给出ADDU,ADDIU,SW三指令的
1)ADDU指令
数据通路图及控制信号(蓝)如下:

数据通路分析过程:
①取指阶段:需要从程序寄存器PC中取出当前指令地址送给指令存储器InstructionMemory的地址输入端,然后从指令存储器数据输出端口得到指令内容以便下一周期译码,同时要将PC当前内容加2送给PC寄存器,使其指向下一条指令。

②译码阶段:需要从指令中得到Rs寄存器和Rt寄存器的编号,送给寄存器组RegisterFiles的Ra和Rb输入端,从输出端A、B取出其中内容即源操作数,送给运算器输入端以便于下一步进行加法运算,同时需要从指令中取出Rd寄存器编号送给寄存器组Rw输入端作为目的地址,以便之后将运算器运算结果送给寄存器组的输入端W,写入寄存器Rd。

③计算阶段:A、B通过运算部件ALU进行加法运算。

④写回寄存器阶段:将ALU输出端得到的运算结果送给寄存器组的输入端W,写入寄存器Rd。
控制信号:
RegWrite:由于加法功能需要读出寄存器Ra和Rb的内容还需要向Rw寄存器写入内容,所以需要增加一个控制信号控制寄存器组的读/写。
2)ADDIU指令
数据通路及控制信号(红色)如下:

功能:对立即数immediate进行符号扩展后与寄存器Rs的值求和,结果保存到寄存器Rs中.
数据通路分析过程:
①取指阶段:需要从程序寄存器PC中取出当前指令地址送给指令存储器InstructionMemory的地址输入端,然后从指令存储器数据输出端口得到指令内容以便下一周期译码,同时将PC加2送给PC,指向下一条指令。

②译码阶段:需要从指令中的第11位到第9位取出Rs寄存器编号送给寄存器组Ra输入端,从输出端A取出Rs寄存器内容送给运算器A输入端,第11位到第9位取出Rs寄存器编号还要送给Rw输入端作为运算后的目的寄存器编号,取出指令的8到0位送给运算器B输入端,。

③计算阶段:A、B输入的内容送给运算器进行加法运算。

④写回阶段:ALU输出内容送给寄存器组W输入端写回Rw所存的编号的寄存器。
控制信号:
ALUop:控制选择ALU功能为加法。
ALUsrcB:控制选择运算器B输入端的内容来源,本指令中来源于指令低9位扩展到16位后的立即数。
RegWrite:控制寄存器组的读出和写入。
RegDsrc:控制选择寄存器组Rw输入端的来源,本指令中应选择指令11到9位作为寄存器编号。
Jump、PCsource:控制下一条指令的转移。

3)SW指令
功能:寄存器中内容回写到主存
数据通路图及控制信号(粉)如下:

数据通路分析过程:
①取指阶段:需要从程序寄存器PC中取出当前指令地址送给指令存储器InstructionMemory的地址输入端,然后从指令存储器数据输出端口得到指令内容以便下一周期译码,同时将PC加2送给PC,指向下一条指令。

②译码阶段:需要从指令中的第11位到第9位取出Rs寄存器编号送给寄存器组Ra输入端,从输出端A取出Rs寄存器内容送给运算器A输入端,第5位到第0位取出6位立即数经过扩展送给运算器B输入端,同时还要将指令第8位到第6位送给Rb输入端作为输入数据寄存器编号。

③计算阶段:运算器对A、B输入的内容进行加法运算,运算后结果为目的地址需要送给数据存储器地址端addr。

④读寄存器:寄存器组B输出端内容输入数据,将其送给数据存储器数据输入端W。

⑤写回存储器:将数据存储器输入端W的数据写入目的地址addr。
控制信号:
ALUop:控制选择ALU功能为加法。
ALUsrcB:控制选择运算器B输入端的内容来源,本指令中来源于指令低6位扩展到16位后的立即数。
RegWrite:控制寄存器组的读出和写入。
Jump、PCsource:控制下一条指令的转移。
RWmem:控制数据存储器的读出和写入。
Wsrc:控制选择写入寄存器的数据来源,本指令来源于数据存储器输出数据。

每条指令在每个周期控制信号的值:(只给出上面的三条)

到此,由实验指导书得出控制器设计思路如下:

下面给出针对此次解决问题的控制器设计:

3.3 解决此次问题的控制器设计

图片如下:

控制器
寄存器r0-r7共用一个三态开关,由控制器选择与总线的连接。Alu,shifter,outreg串接起来,控制器进行统一控制,以共同完成一些复杂的操作,由outreg存储结果。比较寄存器直接由控制器控制,比较结果送入控制器。


手写的指令周期如下(两幅图片):

几个指令的仿真波形:

ADD,R7 和R3相加

LOAD,R3,[R1] 取数,执行过程中寄存器变化:

STORE R[2],R7,存数

最后一个是BRANCHEQI 0000H,R1=R6时,转0000H

  1. 总结
    4.1 实验难点
    本次实验最让我抓狂的地方是智科专业没有学过《汇编语言》这门课程,导致我的汇编指令不太明白,还好百度查了资料,才明白一些汇编指令对这次实验的作用。还需要对控制器的设计充分熟悉,甚至要到每条指令的执行流程,并对通路图中各个部件的功能有更高的理解,感觉课上学到的知识不能支撑我完成此次实验,不过确是此次实验的基础,课外还需要查询大量的资料,和同学进行讨论,才可以克服这次十六位模型机的设计困难。

(报告心得体会重点:克服困难的过程,感谢老师一定要有,常怀感恩的心很重要!一个人再牛逼,也是别人带出来的,无论老师还是同学,白嫖这种事情,咱们智科牛马不可取)

4.2 心得体会
这个16位模型机对我们理解计组,理解VHDL,理解硬件有很大的引导帮助,非常感谢老师的悉心教导,特别是在CPU总数据通路图设计控制器的实验过程中,我深刻体会到控制器功能的全面以及强大,为今后继续学习计算机的各类知识打下了良好的基础。而且在自主完成实验的过程中,学习到了许多新知识,巩固了计算机的专业知识,同时培养了自己的动手能力。而且在写报告的过程中,需要很大的耐心去截图,去编辑和思考自己的实验报告结构,这对以后的论文编写也提供了一个很好的锻炼机会。

参考文献
白中英,计算机组成原理(第五版). 北京:科学出版社
佚名,16位模型机的设计.石家庄经济学院 2014年1月
Sailist,微程序控制的简单模型机设计,CSDN(https://blog.csdn.net/sailist)

计算机组成与结构课内实验:16位模型机的设计相关推荐

  1. 实验六 基本模型机的设计与实现

    实验六 基本模型机的设计与实现 一.目的任务 完成基本模型机的数据测试,验证并记录运行结果,分析程序的运行过程及各主要功能部件功能. 二.设计内容 1.基本模型机设计与实现 指令系统至少要包括六条不同 ...

  2. 【数据库系统原理】数据库课内实验

    说明:这是武汉理工大学计算机学院[数据库系统原理]课程课内实验. >>点击查看武汉理工大学计算机专业课程资料汇总 >>点击查看WUTer计算机专业实验汇总 谨记:纸上得来终觉浅 ...

  3. 武汉理工大学操作系统 课内实验

    文章目录 前言 主要仪器设备及耗材 一.动态分区管理 实验内容描述 实验基本原理与设计 二.磁盘调度 实验内容描述 实验基本原理与设计 总结 前言 操作系统课内实验有两个,验收的学姐人贼好,只看了验收 ...

  4. 武汉理工大学数值分析课内实验

    文章目录 前言 主要仪器设备及耗材 一.用C语言实现几个多项式插值的程序.(Lagrange插值.Newton插值) 实验内容描述 实验基本原理与设计 分析与设计 实验结果 二.用C语言实现几个求常微 ...

  5. webservice-UML课内实验报告实验三

    1.webservice 现将网上关于webservice的讲解提炼出来,通过一个最简单使用并且方便的例子,告诉大家什么是webservice. 简单来说,webservice就是远程调用技术,也叫X ...

  6. 计算机组成原理复杂模型机设计思路,计算机组成原理实验报告基本模型机和复杂模型机的设计...

    计算机组成原理实验报告基本模型机和复杂模型机的设计 基本模型机设计一设计目的1在掌握部件单元电路实验的基础上,进一步将其组成系统构造一台稍微复杂的模型计算机:2为其定义5条机器指令,并编写相应的微程序 ...

  7. 计算机模型机设计实验报告,计算机组成原理课程设计实验报告-基本模型机设计与实现...

    计算机组成原理课程设计实验报告-基本模型机设计与实现 (12页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 计 算 机 组 成 原 理实 ...

  8. 多思计算机组成原理实验:模型机课程设计

    第十一章 模型机课程设计 计算机组成原理实验教程 基于多思网络虚拟实验系统 张雯雰 实验目的 融会贯通所学知识,设计和调试一台模型计算机 进一步掌握计算机组成的基本原理,建立整机概念 培养工程设计和研 ...

  9. 计算机组成原理模型机设计实验总结,计算机组成原理课程设计实验报告-基本模型机设计与实现.docx...

    计算机组成原理课程设计实验报告-基本模型机设计与实现 计 算 机 组 成 原 理 实 验 报 告 评 语: 成绩 教 师: 年 月 日 班 级: 1403011 学 号: 140301124 姓 名: ...

最新文章

  1. Linux 系统上的库文件生成与使用
  2. Google I/O 大会上的 Android Things 亮点汇总
  3. 《学习opencv》笔记——矩阵和图像处理——cvGEMM,cvGetCol,cvGetCols and cvGetDiag
  4. 一张小票看透支付清结算架构
  5. java值类型和引用类型 == 比较,Java中值类型和引用类型的比较与问题解决
  6. 嫦娥回来了,还有哪些浪漫传说已经实现?
  7. eclipse导入远程git代码及(push、pull、及maven工程导入)
  8. java之模块学习-JAVA的IO流
  9. 100个高质量Java开发者博客 【转】
  10. tftp服务器权限配置文件,tftp服务器权限配置
  11. 人口logistic模型公式_人口预测模型Matlab实现Logistic曲线模型
  12. 115、神州数码交换机配置基本命令
  13. Python 实现 2048 游戏
  14. 毕业设计-电子商务网站(二)
  15. java 指纹匹配算法_java – 从生物识别指纹考勤设备中检索数据
  16. 盘点近些年成功的游戏联名营销
  17. 多走走弯路,才不会有被剧透的乏味
  18. ANDROID XML图像资源文件详细讲解(一)
  19. c++成员函数指针揭秘
  20. Oracle PLSQL

热门文章

  1. GraphPad Prism软件计算IC50与作图
  2. 阅读笔记——A Lip Sync Expert Is All You Need for Speech to Lip Generation In The Wild
  3. Vue2笔记 尚硅谷张天禹
  4. Cisco line vty 0 4命令,远程管理交换机
  5. s2020gc53拼数游戏
  6. 【Niagara笔记】spawn生成
  7. 华为mate10用的android版本,抢不到的手机HUAWEI华为Mate10简单使用报告
  8. word中表格还有内容,却自动断开到下一页,且页面有多余空白部分。
  9. 绘制精美思维导图、流程图软件分享
  10. css实现限制文字字数