当前位置: 首页 > news >正文

自己动手写CPU——寄存器堆、数据存储器(基于FPGA与Verilog)

  上一篇写的是基本的设计方案,由于考研复习很忙,不知道下一次什么时候才能打开博客,今天就再写一篇。写一写CPU中涉及到RAM的部件,如寄存器堆、数据存储器等。

  大家应该在大一刚接触到计算机的时候就知道ROM、RAM了吧。但也记不得那些繁杂的名称,只知道ROM是只读存储器,RAM是可读写存储器。其实知道这些也就够了。CPU内寄存器堆、数据存储器等部件都是可读出可写入的部件,所以全部属于RAM,其实在ISE中是可以直接进行调用IP核来完成这些操作的,但今天暂且不谈IP核,或许后期会对IP核模块进行详细的阐述。

  首先来说一说寄存器组,由于指令时MIPS指令,采用32位定长指令字,存数据的寄存器地址位宽都为5位,所以寄存器堆为32x32位的寄存器组。书上或者老师给的一些原理图都复杂的看不懂,其实只要理解透彻了寄存器堆是很简单的。如图为寄存器堆的输入输出结构图。

  首先说写入,要将32位的数据写入32x32的寄存器堆中,那么必定有一个写使能信号(we),还得有一个写入数据寄存的地址(Rw)。当写入使能(we)为1时,表示我现在要向寄存器中写入数据了,那么立马通过Rw在寄存器组([31:0] Reg_Data [31:0]——32个32位寄存器)找到对应的32位寄存器,例如Rw = 5'd16,那么找到的就应该是32位寄存器组中32’d16的寄存器。找到要写入的寄存器后,将要写入的数据赋给寄存器即可。读出其实和写入是一样的,想要读出一段数据,就必须先找到存放数据的寄存器,那么依旧通过地址来寻找,当Ra = 5'd16时,那么找到的就是32位寄存器组中32’d16的寄存器,再将寄存器中的数据输出即可。仿真后波形如图。  寄存器堆如果理解了,那数据存储器就非常简单了,都是同样的道理,先通过地址找到对应的寄存器,然后将数据输进去或者将里边的数据输出来就可以,在此就不再赘述了。

  以上就是关于寄存器堆和数据存储器的全部,时间有限,可能写的有些粗糙,代码这些东西,还是重在理解,理解透彻了,写出来加上仿真真的是分分钟的事。

  今天就......emmmmm到次结束。

 

  

转载于:https://www.cnblogs.com/shirleylvyilei/p/8711198.html

相关文章:

  • OO1-3总结
  • nodejs使用log4js记录日志
  • WPF 自定义TextBox带水印控件,可设置圆角
  • SnapKit 最佳实践
  • Linux的磁盘配额
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 100. bootstrap 弹出对话框bootbox.confirm
  • jetty的使用
  • mysql架构
  • 详解node.js中的可读流(Readable)和可写流(Writeable)
  • 一文看懂JeffDean等提出的ENAS到底好在哪?
  • MXNet 作者李沐:用深度学习做图像分类,教程+代码
  • Map集合、散列表、红黑树介绍
  • centos7.4系统的虚拟机网络配置教程
  • win10 php安装redis 扩展
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Iterator 和 for...of 循环
  • javascript面向对象之创建对象
  • JavaScript学习总结——原型
  • NSTimer学习笔记
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • underscore源码剖析之整体架构
  • vue.js框架原理浅析
  • 阿里云Kubernetes容器服务上体验Knative
  • 从零开始学习部署
  • ------- 计算机网络基础
  • 删除表内多余的重复数据
  • 什么是Javascript函数节流?
  • 新版博客前端前瞻
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 怎样选择前端框架
  • 走向全栈之MongoDB的使用
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • ​520就是要宠粉,你的心头书我买单
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #git 撤消对文件的更改
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (十) 初识 Docker file
  • (十)c52学习之旅-定时器实验
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (四)鸿鹄云架构一服务注册中心
  • (一)基于IDEA的JAVA基础12
  • (译)2019年前端性能优化清单 — 下篇
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)LINQ之路
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .net解析传过来的xml_DOM4J解析XML文件
  • ?