logo资料库

FPGA模型机课程设计.doc

第1页 / 共27页
第2页 / 共27页
第3页 / 共27页
第4页 / 共27页
第5页 / 共27页
第6页 / 共27页
第7页 / 共27页
第8页 / 共27页
资料共27页,剩余部分请下载后查看
一、设计的目的和任务
二、系统方案设计
1. 所完成的指令系统
2.数据通路设计
三、系统测试
1. 测试环境
2.功能仿真
四、课程设计总结
1、设计中出现的问题及如何解决
2、设计感想和建议
西 安 邮 电 大 学 (计算机学院) FPGA 模 型 机 课 程 设 计 报 告 专业名称: 计算机科学与技术 班 级: 计科 1601 学生姓名: 李 媛 学号(8 位): 04161008 指导教师: 董 梁 设计起止时间:2019 年 6 月 24 日-2019 年 7 月 5 日 1
一、设计的目的和任务 1.设计的目的 主要围绕设计一个完整的模型计算机展开,包括设计模型机的基本架构、数据通路、 运算器、存储器、总线、通用寄存器、输入\输出端口等硬件部件,以及指令系统。指 令系统可以采用 MIPS 32 位处理器指令格式实现。要求实现基本的 Load-Store-ALU 类 型 20 条指令,在此基础上可以自行扩展需要实现的指令,包括乘除运算、条件转移、 异常与中断、原子操作等指令。 2.设计的任务 第一周周一: FPGA 模型计算机整体方案设计,分组并根据所学《基于 VerilogHDL 的 FPGA 设计基础》和《计算机组成原理》课程的知识,认真研究题目要求,查阅有关资 料,熟悉 FPGA 开发板的结构,完成方案设计。 第一周周二: 模型计算机各功能电路设计。根据总体方案,自行运用 VerilogHDL 语言进 行运算器设计、存储器设计、输入\输出端口设计、总线接口设计等。即要求完 成 20 条 MIPS 整数指令,基本能够在 Modelsim 上进行功能仿真,运算、转移和 存储功能需测试正确。 第一周周三: 模型机指令系统设计。根据搭建的模型机数据通路图,选择扩展的指令格 式和指令功能。扩展指令系统的选择可以参照 MIPS 32 位处理器指令集,选择 MIPS12 条整数指令或 MIPS 与中断相关指令。要求能够画出指令格式和指令功能, 能够画出处理器内部实现结构图,包括时序信号和控制信号,可以采用单周期或 多级流水线方案。 2
第一周周四: 完成模型机指令系统实现。根据设计好的指令系统实现方案,在 Modelsim 上进行功能仿真。要求将所有设计的机器指令都仿真正确,包括:数据流通、时 序节拍、寄存器的读写,输入输出端口的访问、接口控制信号等。所有指令功能 测试正确。 第一周周五: 模型机整体的联调和使用 FPGA 开发板。根据前期设计工程中出现的问题进 行查漏补缺。在此基础上,可以将设计的机器指令编写简短程序,在 Modelsim 上进行功能仿真。指导教师对学生小组进行中期检查,主要观察指令运行结果, 包括数据寄存器打入是否正确,转移指令是否正确设置 PC,访存指令实现等。 第二周周一: 模型机下载 FPGA 实现。将在 Modelsim 里仿真验证通过的模型机程序,通过 ISE/Vivado 综合工具,下载到 FPGA 开发板上。要求能够正确的生成程序存储器 IP,引脚映射正确,复位和时钟信号正确。模型机程序下载到 FPGA 开发板上后, 能够通过简单的机器指令进行测试。 第二周周二: 模型机在 FPGA 上的功能测试。将模型机程序正确下载到 FPGA 开发板上后, 能够用机器指令编写简短的程序,测试模型机的功能。要求:用机器指令编写的 程序应在 Modelsim 上仿真通过,明确实验结果。将功能相同的机器指令程序在 FPGA 上进行测试,应该保证结果一致。该测试程序自行设计,需将所设计指令逐 一验证以确保正确。 第二周周三: 模型机在 FPGA 上简单的输入输出实现。使用 FPGA 开发板上的按键作为输入, LED 和数码管作为输出。编写机器指令程序,按键控制实现流水灯和数码管的显 示等功能。该实现程序自行设计,还可以考虑串口通信、VGA 显示、键盘输入等 功能,测试程序越多,功能越强大为佳。 3
第二周周四: 模型机在 FPGA 上简单应用的实现。使用 FPGA 开发板,编写机器指令程序, 实现交通灯,秒表,速度控制,打乒乓球等简单的应用。该应用程序自行编写, 题材不限。可以进行显示器点亮测试、USB 通信测试等功能实现。 第二周周五: FPGA 模型机设计结果答辩,向老师进行功能展示、设计方案讲解、设计步骤 讲解、实验结果正确性分析等。 二、系统方案设计 1. 所完成的指令系统 1.1 立即数操作指令 1.2 寄存器操作类指令 1.3 移位操作类指令 4
1.4 存储器操作类指令 1.5 跳转类指令 1.6 乘除类指令 5
1.7 中断类指令 2.数据通路设计 2.1 总体通路图 6
2.2 取指部件 2.2.1 设计思路 取指阶段取出指令存储器中的指令,同时,PC 值递增,准备取下一条指令,包 括 PC、IF/ID 两个模块。 7
2.2.2 遇到问题 如果在取指时发生异常,指令地址该如何保存,保存到寄存器 EPC 的值是 PC-4, 还是是 PC?区别是怎样的? 2.2.3 解决方法 此时可以引入延迟槽,引入之前,处理器执行转移指令的顺序是: 转移指令->转移目标地址的指令 引入延迟槽之后,处理器执行转移指令的顺序是: 转移指令->延迟槽指令->转移目标地址的指令 在中间插入了延迟槽指令,当延迟槽中的指令发生异常时,如果在寄存器 EP 存 槽指令的地址,那么从异常处理例程返回时,将回到延迟槽指令的地址处,可见没有 发生转移,这样就不是被打断之前的指令顺序,所以,为了恢复原来的指令顺序,在 这里将延迟槽之前的转移指令的地址保存到寄存器 EPC 中,也就是 PC-4。 2.3 译码部件 2.3.1 设计思路 IF/ID 模块的输出连接到 ID 模块,那么,我们的指令此时已经进入译码阶段, 在此阶段,将对取到的指令进行译码:给出要进行的运算类型,以及参与运算的操作 数。译码阶段包括 Regfle, ID 和 ID/EX 三个模块。 ID 模块的作用是对指令进行译码,得到最终运算的类型、子类型、源操作数 1、 源操作数 2、要写入的目的寄存器地址等信息,其中运算类型指的是逻辑运算、移位 运算、算术运算等,子类型指的是更加详细的运算类型,比如:当运算类型是逻辑运 算时,运算子类型可以是逻辑“或”运算、逻辑“与"运算、逻辑“异或"运算等。 8
分享到:
收藏