首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
用FPGA来写cpu
2024-08-08
自己动手写CPU(基于FPGA与Verilog)
大三上学期开展了数字系统设计的课程,下学期便要求自己写一个单周期CPU和一个多周期CPU,既然要学,就记录一下学习的过程. CPU--中央处理器,顾名思义,是计算机中最重要的一部分,功能就是周而复始地执行指令.其实开始做这部分之前,想到CPU就觉得很麻烦,毕竟时计算机内部最重要的东西,但其实刨开来细看,也就慢慢地接受了,当然我现在也不能说是了如指掌,说简单,毕竟自己还处于学习阶段,甚至可能还没有入门.慢慢来吧,先从简单的开始,一步一个脚印,总能写成的.今天先写在具体写代码之前的思路和设计方案.
自己动手写CPU——寄存器堆、数据存储器(基于FPGA与Verilog)
上一篇写的是基本的设计方案,由于考研复习很忙,不知道下一次什么时候才能打开博客,今天就再写一篇.写一写CPU中涉及到RAM的部件,如寄存器堆.数据存储器等. 大家应该在大一刚接触到计算机的时候就知道ROM.RAM了吧.但也记不得那些繁杂的名称,只知道ROM是只读存储器,RAM是可读写存储器.其实知道这些也就够了.CPU内寄存器堆.数据存储器等部件都是可读出可写入的部件,所以全部属于RAM,其实在ISE中是可以直接进行调用IP核来完成这些操作的,但今天暂且不谈IP核,或许后期会对IP核模块进行详细
自己动手写CPU 笔记
自己动手写CPU 跳转至: 导航. 搜索 文件夹 1 处理器与MIPS 2 可编程逻辑器件与Verilog HDL 3 教学版OpenMIPS处理器蓝图 4 第一条指令ori 5 逻辑.移位与nop 6 移动 7 算术 8 转移 9 Load/Store 10 协处理器 11 异常 12 实践版OpenMIPS 13 小型SOPC 14 验证 15 移植uC/OS-II 16 附录A 教学版OpenMIPS各个模块的接口说明 17 附录B OpenMIPS实现的全部指令及相应机器码 18 參考文
自己动手写CPU之第九阶段(8)——MIPS32中的LL、SC指令说明
将陆续上传新书<自己动手写CPU>,今天是第47篇. 9.7 ll.sc指令实现思路 9.7.1 实现思路 这2条指令都涉及到訪问链接状态位LLbit,能够将LLbit当做寄存器处理,ll指令须要写该寄存器,sc指令须要读该寄存器.同一时候,与对通用寄存器的訪问一样,对LLbit寄存器的写操作也放在回写阶段进行. ll指令在訪存阶段要读取数据存储器中指定地址的数据.还要设置对LLbit寄存器的写操作,写入的值为1,这个写操作会通过MEM/WB模块传递到回写阶段,终于实现对LLbit寄存器的写.
自己动手写CPU之第七阶段(7)——乘累加指令的实现
将陆续上传本人写的新书<自己动手写CPU>.今天是第30篇.我尽量每周四篇 亚马逊的销售地址例如以下.欢迎大家围观呵! http://www.amazon.cn/dp/b00mqkrlg8/ref=cm_sw_r_si_dp_5kq8tb1gyhja4 China-pub的销售地址例如以下: http://product.china-pub.com/3804025 北发的销售地址例如以下: http://book.beifabook.com/Product/BookDetail.aspx?Pl
自己动手写CPU之第五阶段(1)——流水线数据相关问题
将陆续上传本人写的新书<自己动手写CPU>(尚未出版),今天是第15篇,我尽量每周四篇 上一章建立了原始的OpenMIPS五级流水线结构,可是仅仅实现了一条ori指令,从本章開始,将逐步完好. 本章首先讨论了流水线数据相关问题.然后改动OpenMIPS以解决该问题.并在5.3节验证了解决效果.接着对逻辑.移位操作与空指令的指令格式.使用方法.作用进行了一一说明.在5.5节通过扩展OpenMIPS实现了这些指令,最后编写測试程序,对实现效果进行了检验. 5.1 流水线数据相关问题 我们在第4章实
自己动手写CPU之第五阶段(3)——MIPS指令集中的逻辑、移位与空指令
将陆续上传本人写的新书<自己动手写CPU>(尚未出版),今天是第17篇.我尽量每周四篇 5.4 逻辑.移位操作与空指令说明 MIPS32指令集架构中定义的逻辑操作指令有8条:and.andi.or.ori.xor.xori.nor.lui.当中ori指令已经实现了,本章要实现其余7条指令. MIPS32指令集架构中定义的移位操作指令有6条:sll.sllv.sra.srav.srl.srlv. MIPS32指令集架构中定义的空指令有2条:nop.ssnop. 当中ssnop是一种特殊类型的空操
自己动手写CPU之第六阶段(2)——移动操作指令实现思路
将陆续上传本人写的新书<自己动手写CPU>(尚未出版),今天是第21篇,我尽量每周四篇 6.2 移动操作指令实现思路 6.2.1 实现思路 这6条移动操作指令能够分为两类:一类是不涉及特殊寄存器HI.LO的指令,包含movn.movz:还有一类是涉及特殊寄存器HI.LO的指令.包含mfhi.mflo.mthi.mtlo.前一类非常好实现.基本思路与第5章实现逻辑.移位操作指令时类似,仅仅须要改动ID.EX模块就可以.后一类涉及到特殊寄存器HI.LO,须要为OpenMIPS加入HI.LO寄存器.
自己写CPU第四阶段(2)——验证该第一指令ori实现效果
我们会继续上传新书<自己写CPU>(未公布),今天是12片,四篇 书名又之前的<自己动手写处理器>改为<自己动手写CPU> 4.3 验证OpenMIPS实现效果 4.3.1指令存储器ROM的实现 本节将验证我们的OpenMIPS是否实现正确,包括:流水线是否正确.ori指令是否实现正确.在验证之前,须要首先实现指令存储器,以便OpenMIPS从中读取指令. 指令存储器模块是仅仅读的.其接口如图4-7所看到的,还是採用左边是输入接口,右边是输出接口的方式绘制.这样便于理解
自己动手写CPU之第八阶段(4)——转移指令实现过程2
将陆续上传本人写的新书<自己动手写CPU>,今天是第36篇,我尽量每周四篇 开展晒书评送书活动,在亚马逊.京东.当当三大图书站点上,发表<自己动手写CPU>书评的前十名读者,均可获赠<步步惊芯--软核处理器内部设计分析>一书,大家踊跃參与吧!活动时间:2014-9-11至2014-10-20 8.4.3 改动运行阶段的EX 模块 參考图8-6可知,EX模块须要添加一些接口,添加的接口描写叙述如表8-4所看到的. EX模块的代码主要改动例如以下,完整代码请參考本书附带光盘
自己写CPU第九阶段(3)——加载存储指令说明2(swl、swr)
我们会继续上传新书<q=%E8%87%AA%E5%B7%B1%E5%8A%A8%E6%89%8B%E5%86%99CPU&ie=utf-8&src=se_lighten_quotes_f" style="color:rgb(0,0,240); text-decoration:none; position:static; display:inline">自己动手写CPU>,今天是第39篇,我尽量每周四篇.可是近期已经非常久没有实现这个目标了,一
自己写CPU第五级(4)——逻辑、实现移动和空指令
我们会继续上传新书<自己写CPU>(未公布).今天是18片,我每星期试试4 5.5 改动OpenMIPS以实现逻辑.移位操作与空指令 为了实现逻辑.移位操作与空指令(当中nop.ssnop不用特意实现,能够觉得是特殊的逻辑左移指令sll),仅仅须要改动OpenMIPS的例如以下两个模块. 改动译码阶段的ID模块.用以实现对上述指令的译码. 改动运行阶段的EX模块,使其依照译码结果进行运算. 5.5.1 改动译码阶段的ID模块 首先给出例如以下宏定义,都在文件defines.v中定义,读者能够在
自己写CPU第五级(5)——测试逻辑、实现移动和空指令
我们会继续上传新书<自己写CPU>(未公布),今天是19片,我每星期试试4 5.6 測试程序1--測试逻辑操作实现效果 编写例如以下測试程序用于检验逻辑操作指令是否实现正确,文件名称命名为inst_rom.S,在本附带光盘Code\Chapter5_2\AsmTest\LogicInstTest文件夹下有測试程序源文件. .org 0x0 .global _start .set noat _start: lui $1,0x0101 # $1 = 0x01010000 ori $1,$1,0x0
《自己动手写CPU》写书评获赠书活动结果
<自己动手写CPU>写书评获赠图书的读者有: 京东:8***2.16号哨兵.magicyu.kk6803.jddickyd.杰出的胡兵 亚马逊:徐贺.马先童.jaychen.farmfarm007 当当:几何老师 上述童鞋将获赠<步步惊芯--软核处理器内部设计分析> 还有那位童鞋发了评论,可是这里没有列出的,麻烦和我联系哦,能够站内信箱,也能够给我发邮件,邮件地址在书中给出了 2014-1-5 <自己动手写CPU>写书评获赠书活动终于名单出炉了,出版社已经寄出赠书,各位
自己写CPU第九阶段(5)——实现负载存储指令2(改变运行阶段)
我们会继续上传新书<自己动手写CPU>.今天是第42篇.我尽量每周四篇,可是近期已经非常久没有实现这个目标了,一直都有事.不好意思哈. 开展晒书评送书活动,在q=%E4%BA%9A%E9%A9%AC%E9%80%8A&ie=utf-8&src=se_lighten_f" target="_blank" style="position:static; display:inline; color:rgb(51,102,153); text-d
自己动手写CPU之第四阶段(3)——MIPS编译环境的建立
将陆续上传本人写的新书<自己动手写CPU>(尚未出版).今天是第13篇.我尽量每周四篇 4.4 MIPS编译环境的建立 OpenMIPS处理器在设计的时候就计划与MIPS32指令集架构兼容,所以能够使用MIPS32架构下已有的GNU开发工具链.本节将说明怎样安装使用GNU开发工具链以及怎样制作Makefile文件.从而以更加方便.快捷.自己主动的方式对測试程序进行编译.并得到指令存储器ROM的初始化文件inst_rom.data. 4.4.1 VisualBox的安装与设置 GNU工具链要安装
自己动手写CPU之第九阶段(2)——载入存储指令说明2(lwl、lwr)
将陆续上传新书<自己动手写CPU>.今天是第38篇,我尽量每周四篇,可是近期已经非常久没有实现这个目标了.一直都有事,不好意思哈. 开展晒书评送书活动,在q=%E4%BA%9A%E9%A9%AC%E9%80%8A&ie=utf-8&src=se_lighten_f" style="color:rgb(51,102,153); text-decoration:none; font-family:Arial; font-size:14px; line-heigh
自己动手写CPU之第五阶段(2)——OpenMIPS对数据相关问题的解决措施
将陆续上传本人写的新书<自己动手写CPU>(尚未出版).今天是第16篇.我尽量每周四篇 5.2 OpenMIPS对数据相关问题的解决措施 OpenMIPS处理器採用数据前推的方法来解决流水线数据相关问题. 通过补充完好图4-4原始的数据流图,加入部分信号使得能够完毕数据前推的工作,如图5-7所看到的.主要是将运行阶段的结果.訪存阶段的结果前推到译码阶段.參与译码阶段选择运算源操作数的过程. 图5-8给出了为实现数据前推而对OpenMIPS系统结构所做的改动.有两个方面. (1)将处于流水线运行
自己动手写CPU之第七阶段(2)——简单算术操作指令实现过程
将陆续上传本人写的新书<自己动手写CPU>.今天是第25篇.我尽量每周四篇 亚马逊的预售地址例如以下,欢迎大家围观呵! http://www.amazon.cn/dp/b00mqkrlg8/ref=cm_sw_r_si_dp_5kq8tb1gyhja4 China-pub的预售地址例如以下: http://product.china-pub.com/3804025 7.2 简单算术操作指令实现思路 尽管简单算术操作指令的数目比較多.有15条.但实现方式都是相似的,与前几章逻辑.移位操作指令的实
自己动手写CPU之第七阶段(5)——流水线暂停机制的设计与实现
将陆续上传本人写的新书<自己动手写CPU>,今天是第28篇.我尽量每周四篇 China-pub的预售地址例如以下(有文件夹.内容简单介绍.前言): http://product.china-pub.com/3804025 亚马逊的预售地址例如以下,欢迎大家围观呵. http://www.amazon.cn/dp/b00mqkrlg8/ref=cm_sw_r_si_dp_5kq8tb1gyhja4 7.5 流水线暂停机制的设计与实现 7.5.1 流水线暂停机制设计 由于OpenMIPS设计乘累加
自己动手写CPU之第九阶段(4)——载入存储指令实现思路
将陆续上传新书<自己动手写CPU>,今天是第40篇,我尽量每周四篇,可是近期已经非常久没有实现这个目标了,一直都有事,不好意思哈. 开展晒书评送书活动,在q=%E4%BA%9A%E9%A9%AC%E9%80%8A&ie=utf-8&src=se_lighten_f" style="color:rgb(51,102,153); text-decoration:none; display:inline; position:static">亚马逊.
热门专题
python中proto的repeated
powershell 登录ubuntu
github 图床 删除图片
gis鼠标缩放反过来怎么改
edittext点击不弹出键盘
cefsharp多线程
阿里云安全组放行 3306 端口,远程不能访问
qt构造函数中关闭主窗口
PHP读取目录下MP3文件名
redhat 6.8升级7.3
propertygrid控件 序列化
Invalid CORS request nginx 设置
如何设置windows2008r2安全
latex如何将文字标红
nginx return到location
E2E测试框架cypress安装
linux can测试工具
net managet配置远程登录
nginx503的可能
el-table-column type=expand 子表