前 言
计算机系统能力培养是一项综合性、理论性和实践性都很强的教改活动。在教育部高等学校计算机类专业教学指导委员会、国家级实验教学示范中心建设单位联席会计算机学科组、计算机学会体系结构专委会、美国Xilinx公司等机构、组织和企业的大力推动下,高校计算机专业计算机系统能力培养工作得到长足进展,全国众多高校积极加入到这一工作中。
东南大学计算机科学与工程学院是最早参与到该项活动的学院之一。早在2003年就整合了硬件主要课程和系统软件编译原理的相关内容,开设了“计算机系统综合课程设计”,2011年又在教育部高等学校计算机类专业教学指导委员会主持下参与了计算机系统能力培养的实践教学研究活动。多年来,在教育部计算机教指委、国家级实验教学示范中心建设单位联席会计算机学科组和东南大学计算机学院领导的关心下,东南大学计算机学院摸索出了一套完整的基于计算机系统能力培养的贯通式实践课程体系。
本教程涵盖了这套课程体系中有关CPU设计相关课程的实验方案,其中包括“数字逻辑电路实验”、“计算机组成原理实验”和“计算机组成课程设计”三门实践课的内容。本教程力求做到课程实践的贯通性,以设计能运行31条MIPS指令的单周期和多周期Minisys-1 CPU为最终目标,将三门实践课的内容打通,做到自底向上,层层递进,逐步完善。
在具体的实践内容安排上,既保证了全书内容到完整性,又可以作为三门独立的实践课。在实验的形式上,兼顾原理图设计与硬件描述语言设计(Verilog HDL),既强调结构描述和数据流描述,也兼顾行为描述方式。
为了顺应当前EDA技术的发展,本教程注重IP核的设计与应用。本教程放弃了传统数字电路与计算机组成实验中用74系列芯片搭建的实验方式,注重学生学会自行设计具有一定功能逻辑的应用电路和学会根据逻辑需要简化电路。同时,本教程还特别强调学生要学会利用EDA工具,通过仿真时序来检查电路的正确性。
本教程主要章节安排和实践教学建议如下。
第1章 概述。简单介绍了计算机系统和EDA工具及其应用。本章内容适合在计算机组成原理实验之前讲解,其中EDA工具适合在数字逻辑电路实验前讲解。
第2章 Minisys实验板介绍。介绍本教程所使用的实验平台。尽管本教程中大多数实验在原理上与平台无关,但具体到实现,则与平台关系很大。本教程中所有实验的最终下板实现都是在Minisys实验板上完成,资源包中的约束文件也是按照该实验板设计。
第3章 Verilog HDL语言基础。介绍了Verilog HDL语言。本教程大多数实验都是使用Verilog HDL语言设计。因此本章是能够完成本教程实验的关键,应该在数字逻辑电路课程中安排课时讲解本章内容。如果学生熟悉C语言,则该章节着重讲解与C语言不同和具有硬件特性的部分,学时数可以略少,多给学生练习。
第4章 数字逻辑电路实验。本章共设计了11个实验专题,大部分实验专题由几个小实验组成。本教程所有实验软件均采用Xilinx Vivado开发软件,但教程没有用专门的篇幅介绍该软件,而是采用该软件的某项功能第一次被使用的时候,提供详细的操作步骤的办法。因此,本章的前两个实验尤为重要,建议即使不做这章实验的读者,也务必完成本章的前两个实验。本章内容均是围绕CPU设计所需要的基本器件来展开,因此比较适合作为计算机专业“数字逻辑电路”的课程实验。
第5章 计算机组成部件实验。本章共设计了5个实验,大部分实验由几个小实验组成。如果开设了专门的计算机组成课程设计,则本章内容只作为“计算机组成原理”课内小实验,完成CPU基本部件的设计。如果没有专门开设计算机组成课程设计,则本章内容可以和第6章内容合并,作为计算机组成原理实验内容。
第6章 Minisys-1单周期CPU的设计。本章首先介绍CPU的基本结构和工作原理,以及CPU设计的大致流程。然后介绍目标系统Minisys-1处理器。最终,教程通过多个实验,逐步完成Minisys-1单周期CPU的设计。本章内容可作为本科计算机专业“计算机组成课程设计”的基础实验内容。
第7章 Minisys-1汇编语言程序设计。这一章主要是针对程序员,比较详细的讲解了Minisys-1汇编语言,及汇编语言程序设计的技巧。本章内容适合在计算机组成原理课程中作为汇编程序设计的实验内容。
第8章 多周期Minisys-1 CPU的设计。本章在单周期CPU的基础上,通过多个实验修改数据通路,相关部件和增加状态机,完成了多周期CPU的设计。本章适合作为计算机专业“计算机组成课程设计”的选作内容。
本教程的大部分实验是在介绍了原理的基础上,要求读者独立完成设计。不同于大多数教程给出相应设计,本教程并不给出实验的设计答案(答案只通过特殊渠道提供给任课教师)。因此,本教程更适合作为高等院校本科生相关课程的实践(实验)教材,而并不太适合读者自学,请读者留意这个问题。
本教程在设计每个实验的时候,大多包括如下内容。
• 实验目的。介绍本实验目的,要达到的目标。
• 实验内容。介绍本实验要完成的内容。
• 实验预习。为了完成本实验,学生需要预先复习和掌握的知识,一般也会在这部分给出实验的原理。
• 实验步骤。给出实验比较详细的步骤,帮助学生完成实验。
• 思考与拓展。该部分会给出一些讨论题目或难度更高的设计要求,供学有余力的学生完成。
本教程配套的资源包下载地址为:
http://cse.seu.edu.cn/people/yangqs/……,第一作者邮件地址:yangqs@seu.edu.cn。
本教程由东南大学计算机科学与工程学院杨全胜副教授主编并完成统稿工作。参与本教程编写的有南京工程学院计算机工程学院钱瑛副教授,东南大学成贤学院电子与计算机学院院长王晓蔚副教授,东南大学计算机科学与工程学院任国林副教授和吴强高级工程师。
东南大学计算机科学与工程学院研究生李林、徐言、樊飞、江仲鸣、王飞、杨英豪、徐恒煜等参与了本书实验的设计、验证以及绘图工作。东南大学计算机学院2003届~2018届全体本科同学用自己的实践不仅验证了本课程内容的正确性,还帮助我们完善了课程内容。
本教程的撰写和与之相关的教改活动还得到了教育部计算机教指委秘书长北京航空航天大学马殿富教授以及国家级实验教学示范中心建设单位联席会计算机学科组负责人清华大学杨士强教授的热情指导。与本教材相关的教改活动还得到了美国Xilinx公司全球大学计划部陆佳华先生以及依元素科技有限公司的大力支持。在此,我们对所有帮助我们的老师和同学表示衷心的感谢。另外,我们还要特别感谢清华大学出版社的编辑们在编辑本教程期间给予我们的极大的帮助。
由于我们水平有限,书中难免会有不足之处,殷切希望得到广大同仁和读者的批评指正。
编者于南京江宁九龙湖畔
目 录
前 言
目 录
第1 章 概述
1.1 计算机系统概述
1.1.1 计算机系统层次
1.1.2 计算机硬件的基础部件
1.1.3 计算机系统组成
1.1.4 计算机存储结构类型
1.1.5 计算机指令集类型
1.1.6 单周期、多周期和流水线处理器
1.2 EDA工具及其运用
1.2.1 EDA工具的分类
1.2.2 EDA技术的运用
思考题 1
第2 章 Minisys实验板介绍
2.1 Minisys实验板概述
2.1.1 主芯片XC7A100T关键资源
2.1.2 Minisys实验板资源
2.2 Minisys板上存储器
2.2.1 DDR3 SDRAM
2.2.2 SRAM
2.2.3 非易失串行Flash
2.3 时钟
2.4 基本I/O设备
2.4.1 拨码开关与LED灯
2.4.2 按键开关
2.4.3 4×4矩阵键盘
2.4.4 七段数码管
2.4.5 VGA模块
2.4.6 蜂鸣器
2.4.7 麦克风
思考题 2
第3 章 VerilogHDL语言基础
3.1 Verilog HDL设计初步
3.1.1 Verilog HDL设计流程简介
3.1.2 Verilog HDL语言与C语言的比较
3.1.3 基本的VerilogHDL模块
3.2 Verilog HDL语言要素
3.2.1 词法
3.2.2 数据类型
3.2.3 寄存器和存储器
3.3 Verilog HDL的描述风格
3.3.1 结构描述方式
3.3.2 数据流描述方式
3.3.3 行为描述方式
3.4 Verilog HDL的行为语句
3.4.1 结构说明语句
3.4.2 块语句
3.4.3 赋值语句
3.4.4 条件分支语句
3.4.5 循环控制语句
3.4.6 编译预处理语句
3.5 有限状态机
3.5.1 有限状态机的基本概念
3.5.2 用VerilogHDL语言设计有限状态机
思考题 3
第4 章 数字逻辑电路实验
4.1 VIVADO工具与Verilog语言的使用
4.1.1 拨码开关与LED灯——熟悉vivado和实验台
4.1.2 可配置输入端口数和数据宽度的“与门”IP核设计
4.1.3 多种基本门电路的IP核设计
4.1.4 74系列基本逻辑门电路芯片的设计
4.2 多路选择器的设计与IP核封装
4.2.1 1位2选1多路选择器-使用IP核
4.2.2 可配置输入端口数和数据位宽的多选1多路选择器IP核设计
4.2.3 8选1多路选择器74151芯片的设计
4.2.4 32位多路选择器的设计
4.3 译码器、比较器和编码器的设计
4.3.1 74138译码器的设计
4.3.2 74682比较器的设计
4.3.3 优先编码器的设计
4.4 加法器的设计
4.4.1 8位加法器的设计
4.5 锁存器和触发器的设计
4.5.1 同步RS触发器设计
4.5.2 异步清零和置1的D触发器设计
4.6 寄存器文件的设计
4.6.1 带有异步清零和wen使能端的D触发器的设计
4.6.2 8位寄存器的设计
4.6.3 寄存器文件的设计
4.7 分频器、计数器和脉冲宽度调制器PWM的设计
4.7.1 分频器的设计
4.7.2 计数器的设计
4.7.3 带模计数器的设计
4.7.4 脉冲宽度调制器的设计
4.8 8位7段数码管控制的设计
4.8.1 1位7段数码管控制器的设计
4.8.2 8位7段数码管控制器的设计
4.8.3 六十进制数字时钟的设计
4.9 移位寄存器的设计
4.9.1 4位移位器的设计
4.9.2 并转串输出模块的设计
4.9.3 8位桶形移位器的设计
4.9.4 32位桶形移位器的设计
4.10 状态机的设计
4.10.1摩尔状态机检测“1101”序列
4.10.2米里状态机检测“1101”序列
4.11 综合实验
4.11.1一个逻辑电路小系统的设计
第5 章 计算机组成部件实验
5.1 加减法器的设计
5.1.1 可变位宽的加减法器IP核的设计
5.1.2 8位加减法器的设计
5.2 乘法器的设计
5.2.1 无符号数乘法器的设计
5.2.2 有符号数乘法器的设计
5.2.3 利用Vivado自带的乘法器IP核进行乘法器的设计
5.3 除法器的设计
5.3.1 无符号数除法器的设计
5.3.2 有符号数除法器的设计
5.4 运算器的设计
5.4.1 8位运算器的设计
5.4.2 用BlockDesign设计8位运算器
5.5 存储器的扩展
5.5.1 使用IP核和存储器位扩展技术设计存储器
5.5.2 使用IP核和存储器字扩展技术设计存储器
第6 章 Minisys-1单周期CPU的设计
6.1 CPU结构与工作原理
6.1.1 CPU的功能与结构
6.1.2 CPU的工作原理
6.2 CPU的设计流程
6.2.1 分析指令系统
6.2.2 确定CPU结构参数
6.2.3 设计数据通路
6.2.4 设计译码单元和控制单元
6.3 目标系统Minisys-1概述
6.4 Minisys-1 的寄存器和指令系统
6.4.1 Minisys-1的寄存器组
6.4.2 Minisys-1的指令系统概述
6.4.3 Minisys-1指令集详解
6.5 Minisys-1单周期CPU设计
6.5.1 预备知识
6.5.2 Minisys-1数据通路的设计
6.5.3 创建Minisys项目
6.5.4 Minisys-1控制单元的设计
6.5.5 Minisys-1时钟的设计
6.5.6 Minisys-1取指单元的设计
6.5.7 Minsys-1译码单元的设计
6.5.8 Minisys-1执行单元的设计
6.5.9 Minisys-1存储单元的设计
6.6 Minisys-1 CPU的简单接口的设计
6.6.1 为Minisys-1加IO功能
6.6.2 24位LED的设计
6.6.3 24位拨码开关的设计
6.6.4 思考与拓展
6.7 Minisys-1 CPU的顶层设计与下载
6.7.1 顶层文件的设计
6.7.2 顶层文件的仿真
6.7.3 整体项目的下板验证
第7 章 Minisys-1汇编语言程序设计
4.1. Minisys-1 汇编语言
4.1.1. 指令的汇编语句格式
4.1.2. 汇编伪指令
4.1.3. 汇编程序结构
7.2 Minisys-1汇编程序设计
7.2.1 程序常见功能的Minisys-1汇编语言实现
7.2.2 Minisys-1汇编练习
第8 章 多周期Minisys-1CPU的设计
8.1 多周期CPU的基本结构
8.1.1 多周期CPU的基本思想
8.1.2 多周期CPU的基本结构
8.2 多周期CPU的设计
8.2.1 数据通路修改
8.2.2 多周期Minisys-1状态机设计
8.2.3 相关部件的修改
主要参考文献
我们欢迎关心新工科建设、双一流建设的老师加入Xilinx大学计划,我们有一系列的培养方案改革案例、最新课改成果、可以供您参考,关于联合实验室建设、课程改革、Vivado软件捐赠、校企共建课程、FPGA师资培训、学生竞赛、学生讲座等联系我们。
联系方式:edu@e-elements.com

E-Elements
FPGA我们是认真的!


