跳转至

实验信息概览

第一章 实验信息概览

实验概述

本学期共有6个实验:

实验1:监控程序,熟悉RISC-V汇编语言编程

实验2:ALU实验,熟悉硬件编程环境,基本逻辑门设计

实验3:SRAM实验,熟悉SRAM的基本使用方法

实验4:UART串口实验,熟悉串口的基本输入输出方法

实验5:处理器实验

实验6:完整计算机系统 实验

本学期实验不要求所有同学都参与设计和实现完整的计算机系统,即实验6不是必须的内容。除了最后的实验6之外,前面的5个实验为所有同学必须要独立完成。完成前5个实验是开始实验6的必要条件。实验6是分组大实验,1\~3位同学为一组,鼓励有兴趣的同学组队完成实验6(每一位队员必须要先完成前5个实验)。

实验平台概述

计算机组成原理的实验最终目的是设计并实现一个能够完成基本功能的处理器,并驱动内存以及串口来运行一个简化的操作系统("监控程序")。为了能够和监控程序进行交互,还需要终端程序与监控程序通过串口进行交互。ThinPad开发板提供现场可编程门阵列(FPGA),内存,以及串口。实验的工作是编写一个处理器,将其装载到FPGA中。完成之后的处理器将执行监控程序,并与终端程序交互。监控程序保存在内存中。

它们之间的关系如下图所示:

实验平台提供了FPGA,内存,以及串口硬件。实验的目的就是设计一款处理器,将处理器装载在FPGA处运行。处理器从内存中读出每一条指令,执行每一条指令。有一些指令需要读写内存,另外一些指令需要读写串口。如果进行串口读写的话,将与终端程序进行交互。

完成计算机组成原理实验的要点是:(1)掌握RISC-V的指令,需要实现的指令格式;(2)掌握组合逻辑和时序逻辑的设计方法,重点是状态机的设计;(3)掌握串口和SRAM(内存)的驱动方法。

关于第一点,需要准备两件事情:(1)熟悉RISC-V的指令系统,熟悉RISC-V的汇编程序;(2)熟悉RISC-V的指令格式。必须要详细阅读RISC-V的指令手册,阅读监控程序和终端程序的源代码。监控程序类似于一个简化的操作系统,能够完成简单的接收输入命令,执行命令并输出的流程。监控程序也作为最后的实验6的检验标准,即实验6需要正确运行监控程序。

关于第二点,掌握组合逻辑和时序逻辑的设计方法,这是同学们在数字逻辑课程中学过的内容。有一部分同学对此不是特别熟悉,或者实验技能还没有达标,建议在做实验之前复习一下数字逻辑课程的内容。有一部分同学没有系统的学习过数字逻辑课程,需要自学相关的内容之后再选课计算机组成原理。

关于第三点的内容,主要是需要掌握一下串口和SRAM的硬件行为特征,特别是时序特征和信号的使用方法。在本实验指导书的后面会详细介绍这两个器件的时序特征。同学们在开始相应实验的时候需要仔细体会器件的工作原理和时序。

另外,为了能够进行硬件的实验,掌握硬件描述语言是十分必要的。在硬件语言的选择上,本实验采用了Verilog的顶层项目模板,同学们可以采用Verilog语言进行编程,或者使用其它一些新的语言,例如Chisel,SpinalHDL语言,可以被翻译为Verilog语言。本实验指导书以Verilog举例。

本手册的最后一部分会对Verilog语言进行初步的介绍和讨论。对这部分内容不熟悉的同学务必先学习一下Verilog语言以及Vivado的使用方法,再开展相关的工作。对于其它的语言同学们可以从互联网上搜寻相关的材料和例子。

模拟环境,监控程序,终端程序

课程组提供了能够执行监控程序的模拟环境。模拟环境基于Qemu,运行监控程序,并且可以与终端程序进行交互。最终完成的硬件实验与这里模拟环境执行情况类似,可以作为对比。

如果将监控程序运行在模拟环境中,则它们之间的关系如下图所示:

从上图看到,模拟环境替代了物理实验平台,监控程序保存在模拟内存中,模拟的RISCV处理器执行监控程序。QEMU模拟的RISCV处理器包括了完整的指令集,自然也包括了在实验中需要实现的指令。模拟的处理器会模拟监控程序的每一条指令的执行,并依据指令的功能去驱动模拟的串口,或者完成对模拟内存的读写。模拟串口的行为和实际串口是一致的,也可以和终端程序进行交互。实验最终设计实现的处理器执行监控程序应当获得相同的效果。

实验相关的参考信息

指令集手册

RISC-V官方指令集手册:

https://riscv.org/specifications/isa-spec-pdf/

以下是中文简化版:

http://riscvbook.com/chinese/RISC-V-Reader-Chinese-v2p1.pdf

中文简化版的内容会有不准确的地方,在阅读的时候需要注意,很容易可以看出来。官方指令集手册是正确的。同学们在开始实验5和实验6之前,务必看完中文简化版的第一章,第二章和第三章的内容,对RISC-V的总体指令情况有大致的了解之后再动手。其它各章为扩展指令,可以先不用看,等有需要的时候再看。实验5和实验6的时间安排在相应课堂内容的后面。

硬件开发环境

本课程使用的实验芯片是Xilinx公司开发的FPGA芯片,配合课题组设计的实验开发板,因此必须要使用Vivado集成开发环境。

Vivado集成开发环境只能在Windows或者Linux下面运行,不能在MacOS下面运行。同学们可通过下列方式中获取:

  • Vivado2019.2(Window+Linux版本, 校内服务器,不消耗校园网流量):

http://thinpad.dynv6.net/Xilinx_Vivado_2019.2_1106_2127.tar.gz

  • Xilinx官网下载链接:

https://china.xilinx.com/support/download/index.html/content/xilinx/zh/downloadNav/vivado-design-tools.html

MacOS下面可通过安装虚拟机解决。由于Vivado的安装文件特别巨大,解压缩之后占用很大的空间,安装Vivado需要预留至少40G的可用空间。后面有专门的章节介绍Vivado的使用方法,包括如何进行项目开发,如何进行仿真测试。在安装的时候只需要安装WebPack版本即可,安装完成之后的安装文件可以删除。另外,实验的硬件环境也仅支持此版本的开发,不支持其它版本,请同学们仅使用该版本开发。

监控程序最新版,硬件顶层项目最新版

监控程序最新版(监控程序是比较稳定的,但是有可能会时不时更新一些细节,请保持使用监控程序的最新版):

https://github.com/thu-cs-lab/supervisor-rv.git

获取最新版的源代码之后务必阅读README.md文件。

硬件开发的顶层项目:

https://github.com/thu-cs-lab/thinpad_top

此硬件开发的顶层项目已经标注了开发板的输入输出信号,并有相应的注释,管脚的约束文件(xdc文件,见后文)也已经提供。在实验的过程中,只需要在这个顶层开发项目中插入代码即可。


最后更新: 2021年10月24日