简介 |
![]()
目录 目录 第1篇环境篇 第1章实验软件环境的安装与配置3 1.1ModelSim的安装配置3 1.2Vivado的安装配置7 1.3Vivado和ModelSim关联13 第2篇工具软件篇 第2章工具软件的主要功能19 2.1Xilinx FPGA器件19 2.2Vivado设计流程20 2.2.1利用Vivado进行功能仿真22 2.2.2设计综合25 2.2.3工程实现27 2.3ModelSim基本使用29 2.3.1新建ModelSim库30 2.3.2创建工程31 第3篇应用篇 第3章单周期CPU的设计与实现35 3.1实验介绍35 3.2总体设计35 3.2.1指令格式35 3.2.2总体数据通路38 3.3主要模块设计40 第4章简单的流水线CPU设计47 4.1实验内容47 4.2实现目标47 4.3流水线CPU介绍与设计47 4.3.1CPU顶层视图47 4.3.2指令集47 4.3.3五级流水线49 第5章静态流水线的设计、分析与验证64 5.1静态流水线的基本原理64 5.2实验介绍65 5.3实验设计66 5.3.1静态流水线的总体结构66 5.3.2总体架构部件的解释说明68 5.3.3实验仿真过程波形图及某时刻寄存器值的物理意义87 5.4实验验证88 5.4.1算法流程图88 5.4.2汇编程序89 5.5流水线的性能指标定性分析(包括吞吐率、加速比、效率及 相关与冲突分析)90 第6章动态流水线的设计、分析与验证94 6.1动态流水线的基本原理94 6.2实验介绍95 6.3实验设计95 6.3.1动态流水线的总体结构96 6.3.2实验仿真过程波形图及某时刻寄存器值的物理意义116 6.4实验验证116 6.4.1算法流程图116 6.4.2汇编程序118 6.5流水线的性能指标定性分析(包括吞吐率、加速比、效率及 相关与冲突分析)119 第4篇综合应用篇 第7章三级存储结构的设计、实现与验证127 7.1三级存储的基本原理127 7.2实验描述127 7.2.1总体框架127 7.2.2实验具体要求128 7.3系统设计与实现129 7.3.1系统设计整体模块图129 7.3.2三级存储子系统设计130 7.3.3系统工作数据流说明131 7.3.4具体模块实现132 7.4实验验证153 7.4.1验证程序153 7.4.2从U盘下板153 7.4.3SD卡写入程序测试154 7.4.4中途更换SD卡测试155 参考文献156
精彩页 第3章单周期CPU的设计与实现〖1〗3.1实 验 介 绍本次实验使用Verilog HDL实现54条MIPS指令的CPU的设计和仿真,本次设计的CPU是单周期的,即每条指令均在一个周期内完成。首先要明确本次MIPS CPU的设计是建立在指令集(Instruction Set Architecture,ISA)的基础上的,ISA告诉CPU设计者CPU应该做什么,而告诉编译器开发者CPU可以做什么。 本次实验要从54条指令开始,熟悉每条指令的功能和格式,确定所需要的部件模块,画出相应的数据通路(可能是某一类指令的数据通路),最后合成总的数据通路,分析确定出所有控制信号并对每条指令进行验证。 实验目标: 深入了解CPU的原理。 熟悉并掌握54条指令的格式和数据通路。 画出实现54条指令的CPU的通路图。 学习使用Verilog HDL设计实现54条指令的CPU。 3.2总 体 设 计〖*4/5〗3.2.1指令格式(1) 理解需要实现的 54条MIPS指令,每条指令的介绍如表3.1所示。表3.154条指令格式表 指令指 令 说 明指 令 格 式OP 3126FUNCT 50指令码十六进制addi加立即数addi rt,rs,immediate00100020000000addiu加立即数(无符号)addiu rd,rs,immediate00100124000000andi立即数与andi rt,rs,immediate00110030000000ori或立即数ori rt,rs,immediate00110134000000sltiu小于立即数置1(无符号)sltiu rt,rs,immediate0010112C000000lui立即数加载高位lui rt,immediate0011113C000000xori异或(立即数)xori rt,rs,immediate00111038000000slti小于置1(立即数)slti rt,rs,immediate00101028000000addu加(无符号)addu rd,rs,rt00000010000100000021and与and rd,rs,rt00000010010000000024beq相等时分支beq rs,rt,offset00010010000000续表 指令指 令 说 明指 令 格 式OP 3126FUNCT 50指令码十六进制bne不等时分支bne rs,rt,offset00010114000000j跳转j target00001008000000jal跳转并链接jal target0000110C000000jr跳转至寄存器所指地址jr rs00000000100000000009lw取字lw rt,offset(base)1000118C000000xor异或xor rd,rs,rt00000010011000000026nor或非nor rd,rs,rt00000010011100000027or或or rd,rs,rt00000010010100000025sll逻辑左移sll rd,rt,sa00000000000000000000sllv逻辑左移(位数可变)sllv rd,rt,rs00000000010000000004sltu小于置1(无符号)sltu rd,rs,rt0000001010110000002Bsra算数右移sra rd,rt,sa00000000001100000003sri逻辑右移sri rd,rt,sa00000000001000000002subu减(无符号)subu rd,rs,rt00000010001000000022sw存字sw rt,offset(base)101011AC000000add加add rd,rs,rt00000010000000000020sub减sub rd,rs,rt00000010001000000022slt小于置1slt rd,rs,rt0000001010100000002Asrlv逻辑右移(位数可变)srlv rd,rt,rs00000000011000000006srav算数右移(位数可变)srav rd,rt,rs00000000011100000007clz前导零计数clz rd,rs01110010000070000020divu除(无符号)divu rs,rt0000000110110000001Beret异常返回eret01000001100042000018jalr跳转至寄存器所指地址,返回地址保存在引号寄存器jalr rs00000000100100000008lb取字节lb rt,offset(base)10000080000000lbu取字节(无符号)lbu rt,offset(base)10010090000000lhu取半字(无符号)lhu rt,offset(base)10010194000000sb存字节sb rt,offset(base)101000A0000000sh存半字sh rt,offset(base)101001A4000000lh取半字lh rt,offset(base)10000184000000mfc0读CPO寄存器mfc0 rt,rd01000000000040000000mfhi读Hi寄存器mfhi rd00000001000000000010mflo读Lo寄存器mflo rd00000001001000000012mtc0写CPO寄存器mtc0 rt,rd01000000000040800000mthi写Hi寄存器mthi rd00000001000100000011续表 指令指 令 说 明指 令 格 式OP 3126FUNCT 50指令码十六进制mtlo写Lo寄存器mtlo rd00000001001100000013mul乘mul rd,rs,rt01110000001070000002multu乘(无符号)multu rs,rt00000001100100000019syscall系统调用syscall0000000011000000000Cteq相等异常teq rs,rt00000011010000000034bgez大于或等于0时分支bgez rs,offset00000104010000break断点break0000000011010000000Ddiv除div rs,rt0000000110100000001A(2) 进行以下步骤。 ① 阅读每条指令,充分了解每条指令所需执行的功能与过程 。以addi指令为例,该指令将寄存器rs里的值与立即数imm相加,结果放到寄存器rt里,注意是符号数的相加。addi rt,rs,imm#reg[rt]=reg[rs]+(sign)imm② 画出每条指令在执行过程中的数据通路图。pc寄存器的值作为地址传到指令寄存器,同时pc+4放回pc寄存器;指令寄存器取出指令,将指令译码,op和func字段送到控制单元,rs送入通用寄存器组的ra接口,取出相应寄存器的值由qa输出,而立即数进行符号位的位拓展;ALU对输入的两个数进行加运算,结果送回通用寄存器组。addi指令数据通路图如图3.1所示。可以 导语 本书实验与理论教学融合,指导流水线CPU的设计与性能评价,是专业的系统结构实验指导书 序言 随着计算机技术的发展,国内各个高校基本都开设 了计算机专业或者与其紧密相关的专业,然而,在该专 业的学生培养方案和课程设置方面出现了一些偏颇—— 过多开设了计算机相关的理论课程,而缺少了实践课程 的开设,同时,对已开设的实践课程也没有贴近实际、 相互贯通、整体综合的系统性提高。本书建立在同济大 学计算机专业已有的硬件综合实践培养方案的基础上, 进行再扩展、再拔高、再实践。同济大学计算机专业的 本科生已经在“数字逻辑”“计算机组成原理”这两门 课程中完成了在FPGA开发板上对基本硬件电路、CPU各 个基础模块、单周期CPU以及多周期CPU的实现,然而现 实应用中的CPU大多都是流水线CPU,因为流水线CPU技 术能够极大地提高CPU的处理效率。因此,本书是在已 经完成的单周期和多周期CPU的基础上,按照课程培养 目标进行CPU的优化实验,设计流水线CPU,依次实现多 功能静态流水线CPU和多功能动态流水线CPU,并实现完 备的三级存储体系,使学生具备自己设计、开发、实现 计算机系统的能力。“计算机系统结构”课程实验项目 的具体任务包括多个CPU设计的基本实验和一个三级存 储体系设计的综合性实验。具体包括:首先以FPGA开发 板、Vivado和ModelSim软件作为实验开发平台,引导学 生设计自己的54条MIPS指令的单周期CPU,掌握CPU的组 成部件及基本工作原理。基本实验二以FPGA开发板、 Vivado和ModelSim软件作为实验开发平台,引导学生设 计一个自己的8条MIPS指令的五级静态流水线CPU,初步 建立流水线的基本概念与流水线的设计方法。基本实验 三以FPGA开发板、Vivado和ModelSim软件作为实验开 发平台,设计自己的不少于31条MIPS指令流水的CPU, 实现多功能的静态流水线,使学生更深入地理解静态流 水线的工作机理和冲突解决机制。基本实验四以FPGA开 发板、Vivado和ModelSim软件作为实验开发平台,设计 自己的不少于31条MIPS指令流水的CPU,实现多功能的 动态流水线,使学生更深入地理解动态流水线的工作机 理和冲突解决机制。三级存储体系设计的综合性实验以 FPGA开发板、Vivado和ModelSim软件作为实验开发平 台,设计与优化Cache高速缓冲存储、SDRAM或DDR与SD 存储卡的三级存储方案,并对不同的路数与块大小的命 中与失效情况进行定量化分析,以确定较优的Cache部 署方案。通过这四项基本实验,构建出自己的中央处理 器,结合FPGA开发板的外围接口,形成综合实验的物理 环境。综合实验是利用两个基本实验的成果和FPGA开发 板的外围接口,研制开发一个基于FPGA开发板的完整的 计算机系统,为操作系统的构建与移植提供充分的硬件 与软件环境。通过多个基本实验和一个综合实验,使学 生加深对理论知识的理解和掌握,完成对计算机系统设 计与优化所需要的根本动手能力的训练。“计算机系统 结构”课程实验项目中安排了4个基本实验项目和1个综 合实验项目。4个基本项目包括: 54条MIPS指令的单周 期CPU设计、简单8条MIPS指令的五级静态流水线CPU设 计、多条指令集的多功能静态流水线CPU设计与优化、 多条指令集的多功能动态流水线CPU设计与优化。综合 实验项目综合运用4个基本项目的成果,设计和实现一 个三级存储体系,包括高速存储器Cache的优化与仿真 分析、主存储器的设计与优化、虚拟存储器的设计与优 化的三级存储架构。本书具有以下特点:(1) 遵照教 育部高等学校教学指导委员会(教指委)最新计算机科 学与技术和软件工程专业及相关专业的培养目标和培养 方案,合理安排计算机系统结构开发技术知识体系,结 合FPGA开发板、Vivado开发软件以及ModelSim仿真软 件的应用,组织相关知识点与内容。本项目的课程实验 全部在Vivado硬件开发软件上使用Verilog语言进行程 序设计,使用ModelSim仿真软件进行模拟与仿真,最终 形成bit型文件在Nexys 4开发板上进行下板运行。(2 ) 注重理论和实践的结合,教材融入面向对象软件开 发过程和工程实践背景的项目案例,使得学生在掌握理 论知识的同时,提高在程序设计过程中分析问题和解决 问题的实践动手能力,启发学生的创新意识,使学生的 理论知识和实践技能都得到全面发展。(3) 知识内容 层层推进,使得学生易于接受和掌握相关的知识内容。 以开发过程为主线,将知识点有机地串联在一起,便于 学生掌握与理解。(4) 教材在章节中提供一定数量的 课外实践题目,采用课内外结合的方式,培养学生进行 软件开发的兴趣,提高学生的工程实践能力,使得学生 能够适应当前社会对软件开发人员的需求。(5) 教材 提供配套的课件、综合案例的源码。本书由秦国锋撰写 ,王力生、陆有军、郭玉臣共同承担实验教学改革任务 ,同济大学计算机国家示范中心和计算机系统结构教研 组进行监督与核查。由于作者水平有限,书中难免有不 妥和疏漏之处,恳请各位专家、同仁和读者批评指正, 并与作者讨论,作者邮箱gfqing@tongji.edu.cn。 作者2019年1月
内容推荐 本书按照课程培养目标进行CPU的优化实验,在FPGA开发板上对基本硬件电路、CPU各个基础模块、单周期CPU以及多周期CPU的实现等基础上,着重介绍如何对CPU进行优化,以及如何设计流水线CPU,并依次实现多功能静态流水线CPU、多功能动态流水线CPU,以及三级存储体系。全书共分为4篇: 第1篇(第1章)为环境篇;第2篇(第2章)为工具软件篇;第3篇(第3~6章)为应用篇;第4篇(第7章)为综合应用篇。本书提供了大量的实验代码,均在相关知识点后面,以便读者进行学习和测试。 本书可作为高等院校计算机、软件工程专业高年级本科生、研究生的教材,也可作为对UML比较熟悉并且对软件建模有所了解的开发人员、相关科技工作者和研究人员的参考用书。 |