寄存器堆实验

实验目的

  1. 理解寄存器堆的电路结构。

  2. 掌握寄存器堆的功能特性。

实验原理

CPU内部包含若干个通用寄存器,用于暂存参加运算的数据和中间结果,这些寄存器的集合就称为通用寄存器组(Genral Register Set)。 寄存器组可以设计为单端口、双端口或三端口。单端口是指读出和写入共用同一组地址或数据端口,所以读出和写入不能同时进行,通常应用于多周期的数据通路。而双端口的读、写端口各自独立,在一个周期中可以同时读出和写入。三端口则有两个读端口和一个写端口可以同时操作,通常应用于单周期和流水线数据通路。和早期的处理器相比,现代处理器的通用寄存器的数量更多,一般称为寄存器堆(Register File),也有译为寄存器文件。本实验完成三端口寄存器堆。

图 1是具有2个读端口和1个写端口的三端口寄存器堆的电路结构。其中RA表示读端口地址(Read Address),RD表示读端口数据(Read Data);WA表示写端口地址(Write Address),WD表示写端口数据(Write Data);WE是写使能(Write Enable)。

三端口寄存器堆
图 1. 三端口寄存器堆的框图

实验任务

  1. 理解图 1结构,设计该寄存器堆。具体要求如下。

    1. 采用层次化设计,将译码器实验完成的2-4译码器作为子电路。

    2. 寄存器字长(数据位宽)为4位。

      寄存器组件使用“Components/组件 ➤ Memory/存储器 ➤ Register/寄存器”。

    3. R0寄存器读出值恒为0。

      图 1中R0寄存器实际并不存在,用常数0作为R0寄存器的读出数据。常数0可以用“常量”组件产生,详见第一章Digital仿真软件使用指南的“几个有用的组件”。

    4. Clk输入使用时钟输入组件

      Clk时钟输入组件及其用法见第一章Digital仿真软件使用指南的“时序电路仿真”。

      虽然Digital仿真软件中有一个现成的寄存器堆组件(位于“Components/组件 ➤ Memory/存储器 ➤ RAM ➤ Register File”),但是它的R0寄存器是可写入的,不具备恒为零的特性。而在RISC指令系统中,通常要求R0恒为0。

  2. 通过仿真验证其功能,并保存仿真过程数据文件。

  3. 实验结果分析

    对仿真过程数据进行分析,从中体现对图 1电路原理的理解。