2329408386 / cpu Goto Github PK
View Code? Open in Web Editor NEW一个基于mips指令集的单周期cpu
一个基于mips指令集的单周期cpu
/** *文件名: README.pdf *作者: 李程鹏 */ 1. 基本描述: 这是17~18秋季学年期末, 实现的一个以verilog为硬件描述语言, 基于mips指令集, 运行在Xilinx Nexyz4开发板上的单周期cpu. 主要功能模块包括: 控制器, 运算器, 显示器, 以及总线模块. 实现的mips指令一共有20条, 包括8条R型指令, 8条I型指令, 2条J型指令, 2条自定义指令. 用户可以运用这20条mips汇编指令, 实现逻辑,算数,分支,循环以及输入输出等基本程序功能. 2. 使用手册: (1) 接口说明: 如下图(/pictures/clockMode/0.jpg)所示的N4开发板, 最下面为开关(sw),显示数字的区域为七段数码管,2者之间为 led灯,开关 和led灯从左到右编号为15~0. 开关向上拨为1,在下面时为0. 我使用sw15作为模式选择开关, sw15为0时,表示调试模式,sw15为1时,表示时钟模式. sw14~sw13用于控制显示到数码管的内容, sw14~sw13=00, 表示显示数据存储器的内容, 01表 示显 示寄存器堆的内容, 10表示显示指令存储器的内容, 11表示显示当前的pc值. 我设置的数据 存储器,寄存 器堆,指令存储器的大小都是32, 所以统一用sw4~sw0用于控制显示的位置. led15~led0用于显示当前指令的控制信号(判断表见data/0.opAndFunc.txt). N17按 钮用 于调试模式时的单步, C12按钮用于复位操作. (2) 举例说明: 比如用户输入一条: add $0,$0,$1 的指令, 初始时$0=10,$s1=3, 我们设置 sw15=0,sw14~sw13=01, 即为调试模式, 并显示寄存器内容. 当我们按下N17, 就执行这条指令, 此时把 sw4~sw0置为0, 就可以看到0号寄存器显示的结果为13, 并且led灯显示当前的控制信号. 3. 文件说明: 根目录下面2个文件夹: codes,data和pictures. (1) 对于codes: sources文件夹存放设计文件, sim文件夹里面存放仿真文件, constrs文件夹里面存放限制文件. (2) 对于data: 用于存放过程记录文件. (a) 0.opAndFunc.txt: 以类似json文件的格式存放需要实现的20条汇编指令, 及其对应的 operand字段和funct字段. 并判断出每条指令的控制信号, 为方便阅读, 每个字段均以16进制的形式保存. (b) 1.codes.txt: 测试这20条指令所设计的mips汇编程序 (c) 2.results.txt: 对每一条测试指令执行后, 相应的寄存器,数据存储器,pc值的变化 (d) 3.interface.txt: 接口说明 (3) 对于pictures: 用于存放结果文件. clockMode和debugMode2个文件夹分别存放时钟模式和调试模式下的结果. 4. 设计流程: (1) 查阅mips文档(http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html), 把需要实现的指令按R型,I型,J型和自定义类型归类, 分解出每条指令的Operand(31:26)字段和funct(5:0)字段, 记录在文件data/0.opAndFunc.txt中. (2) 设计包含所有实现指令的测试代码,记录到文件data/1.codes.txt中. (3) 设计cpu需要的主要模块(文件的组织并不完全按照逻辑模块的形式): (a) 指令存储器堆: 存放用户需要指行的指令 (b) 寄存器堆: 存放0到31号寄存器 (c) 数据存储器: 存放0到31号数据存储器的内容 (d) 控制器: 用于根据指令的operand字段, 选择需要进行的操作 (e) 运算器: 根据输入和控制信号, 执行相应的计算, 根据控制信号, 决定运算结果的返回位置 (f) 显示器: 对输入的数据, 显示对应内容到7段数码管上. (g) 总线: 连接以上各个模块. (4) 一条指令的执行流程: 我们以add $0,$0,$1为列, 首先, 在时钟上升沿时,根据当前的pc值, 从指令存储器中取出指令, 通过控制器分解出operand和funct字段, 判断出为add指令, 然后从寄存器堆中取出rs,rt和rd寄存器, 将rs和rt寄存器放入运算器模块参与运算, 结果写入数据存储器. 在时钟下降沿时, 把结果写回rd寄存器, 并更新pc值, 开始寻找下一条要执行的指令.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.