湖南大学_数电实验_模型机设计_CPU设计_verilog_课程实验报告

本学期的数电课程实验就是模型机设计,由四次小实验构成,最后一次实验验收要求使用quartus做出一个模型机。

该实验的重要性:该实验的核心在于基于实验指导书设计CPU,从而帮我们理解CPU的工作原理。而CPU作为计算机的核心部件,可以帮助我们引入一个全新的视角来理解操作系统和计算机系统(为之后的课程打基础)。所以建议大家在做这个实验之前,先花时间弄清楚,CPU究竟是怎么工作的。

以下为实验报告,内容较为详细,仅供参考,如有错误敬请斧正!

目录

一、设计目的

二、设计内容

三、 详细设计

3.1 设计的整体架构

①模型机工作的基本形式

②模型机的数据格式

③模型机的指令系统(基于数据格式)

④模型机的寻址方式

⑤模型机的数据通路及说明

⑥控制信号

⑦顶层电路图

 3.2各模块的具体实现

模块1:指令计数器PC

模块2:多路复用器MUX

模块3:随机存储器RAM

模块4:指令寄存器IR

模块5:SM

模块6:指令译码器Decoder

模块7:控制信号产生逻辑Con_Signal

模块8:通用寄存器组Reg

模块9:ALU

模块10:移位逻辑Shift

模块11:状态寄存器PSW

模块12:输入IN

模块13:输出OUT

四、系统测试

五、实验总结、必要体会及建议

5.1 从需要掌握的理论、遇到的困难、解决的办法以及经验教训等方面进行总结。


一、设计目的

本课程力图以“培养学生现代数字系统设计能力”为目标,贯彻以 CPU 设计为核心,以层次化、模块化设计方法为抓手的组织思路,培养学生设计与实现数字系统的能力。 本设计要求在进行了多个单元实验后,综合利用所学的理论知识, 结合在单元实验中所积累的成果(包括已经设计好的功能部件和调试方法),设计出一个简易计算机系统。

二、设计内容

⚫ 按给定的数据格式和指令系统,使用 EDA 工具设计一台用硬连线逻辑控制的简易计算机系统;

⚫ 要求灵活运用各方面知识,使得所设计的计算机系统具有较佳的性能;

⚫ 对所做设计的性能指标进行分析,整理出设计报告。

三、 详细设计

3.1 设计的整体架构

①模型机工作的基本形式

同步电路,采用串行工作方式,即“读取—执行—再读取—再执行……”。

②模型机的数据格式

数据字采用 8 位二进制定点补码表示,其中最高位(第 7 位)为符号位,小数点可视为最左或最右,其数值表示范围分别为:-1≤X<+1 或-128≤X<+127。

③模型机的指令系统(基于数据格式)

注:我们老师更改过跳转指令的操作码,如下图红色标注)

④模型机的寻址方式

指令的高 4 位为操作码,低 4 位分别用 2 位表示目的寄存器和源寄存器的编号, 或表 示寻址方式。共有 2 种寻址方式。

(1)寄存器直接寻址

当 R1 和 R2 均不是“11”时,R1 和 R2 分别表示两个操作数所在寄存器的地址(寄存器 编号),其中 R1 为目标寄存器地址,R2 为源寄存器地址。

(2)寄存器间接寻址

当 R1 或 R2 中有一个为“11”时,表示相应操作数的地址在 C 寄存器中。

⑤模型机的数据通路及说明

计算机的工作过程可以看作是受控下的数据流动,数据流所经过的路径称作机器的数据通路。数据通路不同,指令执行所经过的操作过程就不同,机器的结构也就不一样。

 

 1. 取指令的过程

指令计数器中的内容(即下一条要执行的指令的地址),经选择器送至 RAM 的 地址输入端(开始执行,先把要执行的指令地址传过去);在 DL 和地址输入的共同作 用下,指令在时钟的上升沿从 RAM 中被读出送至总线 BUS 上,在 LD IR 信号的控 制下,BUS 上的指令在时钟的下降沿载入到指令寄存器 IR 中;然后指令计数器加 1 (这一条执行完,计数器加 1,为下一次可以直接用做准备)。

 2. 执行指令--传送类指令

(a)寄存器之间的传送 MOVA R1,R2

 要求完成的操作为(R2)→R1,执行过程为: 由 R2 的编码通过 RAA1、RAA0 从通用寄存器组 A 口读出 R2 的内容,在 S3~S0 和 M 的控制下,经 ALU 送入总线 BUS;由/WE 控制和 R1 的编码选择 RWBA1、RWBA0,将 BUS 上的数据写入通用寄存器 R1。

b)寄存器到内存的传送 MOVB MR2

要求完成的操作为(R2)→(C),执行过程为: 由 M 的编码 11 通过 RWBA1、RWBA0 从通用寄存器 B 口读出 C 寄存器中的地址,在 MADD=2 的控制下,地址通过选择器到达存储器 RAM 的地址输入端;由 R2 的编码通过 RAA1、RAA0 从通用寄存器组 A 口读出 R2 的内容,在 S3~S0 和 M 的控制下,经 ALU 送 入总线 BUS,并在/CS 和 XL 控制下将 BUS 上的数据写入存储器 RAM。

c)内存到寄存器的传送 MOVC R1M

要求完成的操作为((C))→R1,执行过程为: 由 M 的编码 11 通过 RAA1、RAA0 从通用寄存器 A 口读出 C 寄存器中的地址,在 MADD=1 的控制下,地址通过选择器到达存储器 RAM 的地址输入端,/CS 和 DL 使数据出 现在 BUS 上;由/WE 控制和 R1 的编码选择 RWBA1、RWBA0,将 BUS 上的数据写入通用寄存器 R1。

3. 执行指令--算术逻辑运算指令

将编码01(由RAA1RAA0提供)对应的寄存器B中的数据并从通用寄存器组S口读出;

同时将编码00(由RWBA1RWBA0提供)对应的寄存器A中的数据并从通用寄存器组D口读出;

S3-S0M的控制下,2个操作数在ALU中运算后经移位逻辑送入总线BUS

/WE0)控制将BUS上的数据在时钟下降沿写入编码00(由RWBA1RWBA0提供)对应的寄存器A中。

ADDSUB指令影响状态位CfZf

4. 执行指令—转移类指令

(a)JMP,取好指令后,开始一个新的时钟周期,假设上一个取址位置为RAM中的00000000,在取好指令的同时,在pc_inc为1和时钟下降沿的共同作用下,PC现在存放的地址为00000001。执行指令期间,madd[1..0]保持不变,还是00,于是这个00000001通过选择器到达RAM的地址输入端,然后DL为1,在时钟上升沿到来的时候将该地址对应的内容传送到总线上,然后此时pc_ld为1,      在时钟下降沿到来瞬间,将总线上的数据写入到PC中。

bJC,取好指令后,开始一个新的时钟周期,假设上一个取址位置为RAM中的00000000,在取好指令的同时,在pc_inc和时钟下降沿的共同作用下,现在存放的地址为00000001。和JMP比起来,多了一个C为1的条件。若C=0,pc_inc为1,在时钟下降沿PC存储的地址变为00000010。也就是说跳过了00000001地址所存储的指令。

(c)JZ,与JC的区别就在于,判断条件为Z是否为1.

⑥控制信号

⑦顶层电路图

 3.2各模块的具体实现

模块1:指令计数器

  • 20
    点赞
  • 129
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值