2读1写通用寄存器堆设计实现

文章目录

  • 2读1写通用寄存器堆设计实现
  • 一、接口设计
  • 二、接口结构
  • 三、设计实现

一、接口设计

寄存器堆数量32个,存储数据位宽为32bit,采用二维数组实现,读和写有可能同时发生,其中0号寄存器为常0(无论写什么数据,寄存器值都为0)

二、接口结构

三、设计实现

<

//-------------------------
//File Name:datapath.v
//Designer:Liang Genyuan
//-------------------------
module mem_block(clk,nrst,stall,ren,raddr1,raddr2,wen,waddr,wdata,rs1,rs2);
input  clk;
input  nrst;
input  stall;
input  ren;
input  [4:0]raddr1;
input  [4:0]raddr2;
input  wen;
input  [4:0]waddr;
input  [31:0]wdata;
output [31:0]rs1;
output [31:0]rs2;reg [31:0] mem [31:0];
reg wen_reg;
reg waddr_reg;
reg ren_reg;
reg raddr1_reg;
reg raddr2_reg;
reg [31:0]rs1;
reg [31:0]rs2;
integer i;always@(posedge clk or negedge nrst)beginif(!nrst)beginwen_reg<=0;waddr_reg<=0;ren_reg<=0;raddr1_reg<=0;raddr2_reg<=0;endelse beginwen_reg<=wen;waddr_reg<=waddr;ren_reg<=ren;raddr1_reg<=raddr1;raddr2_reg<=raddr2;end
endalways@(posedge clk or negedge nrst)beginif(!nrst)beginfor(i=0;i<=31;i=i+1)mem[i]<=32'b0;endelse if(stall==0&&wen_reg==1)beginmem[waddr_reg]<=wdata;endelse beginfor(i=0;i<=31;i=i+1)mem[i]<=mem[i];end
endalways@(posedge clk or negedge nrst)beginif(!nrst)beginrs1<=0;rs2<=0;endelse if(ren==1)beginrs1<=mem[raddr1_reg];rs2<=mem[raddr2_reg];endelse beginrs1<=0;rs2<=0;end
endendmodule

2读1写通用寄存器堆设计实现相关推荐

  1. (转)【CPU微架构设计】分布式多端口(4写2读)寄存器堆设计

    寄存器堆(Register File)是微处理的关键部件之一.寄存器堆往往具有多个读写端口,其中写端口往往与多个处理单元相对应.传统的方法是使用集中式寄存器堆,即一个集中式寄存器堆匹配N个处理单元.随 ...

  2. 读《写给大家看的设计书》

    读<写给大家看的设计书> 这段时间略读了一遍<写给大家看的设计书>第四版,作为一名开发者来说,这种设计细胞确实不怎么样.通过略读也有一些收获,而贯穿全文的"4大基本原 ...

  3. 【Java面试高频-集合】- 读写的场景设计集合是怎么样?对于读多写少要如何设计的呢?对于读少写多又该如何设计呢?

    Java集合-读写的场景 1 读多写少的场景 **CopyOnWrite的思想.**读数据不加锁,写数据的时候利用拷贝的副本来执行. ReadWriteLock的思想也可以. 那么 写线程现在把副本数 ...

  4. 数据库设计 读多写少、写多读少、写多读多各场景数据库建设方案

    数据库建设方案 读多写少 写多读少 写多读多 数据库集群方案优缺点 读多写少 解决方案:采用传统关系型数据库足以应对,若并发量很大,采用mysql集群即可应对! 写多读少 1.业务场景:滴滴.饭堂刷卡 ...

  5. android 集成同一interface不同泛型_Dig101:Go之读懂interface的底层设计

    Dig101: dig more, simplified more and know more 今天我们聊聊万物皆可为的接口(interface)底层设计. interface 被定义为一组方法的签名 ...

  6. 【收藏】C#面试题整理笔试篇(最全1000+道带答案)300道填空 + 300道选择 + 300道判断 + 70道读程序写结果和看程序填空 + 100道简答题

    <程序员>曾陪伴了无数开发者成长.<新程序员>全新归来,推荐给大家! <新程序员> 一.填空: 1.操作符( && )被用来说明两个条件同为真的情况 ...

  7. 杭电 2016 计算机组成原理,杭电计算机组成原理寄存器堆设计实验4.doc

    杭州电子科技大学计算机学院 实验报告 课程名称:计算机组成原理 实验项目:寄存器堆设计实验 指导教师 实验位置: 姓 班 级: 学 号: 日 期:2015年5月7日 实验目的学习和使用Verlilog ...

  8. 这是我读过写得最好的【秒杀系统架构】分析与实战!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:http://rrd.me/ewVWv 1 秒杀业务分析 2 ...

  9. 多读多写多实践---给初学编程者的建议

    今天偶尔翻出了大一时候使用的谭浩强<C语言程序设计习题集和上机指导>,发现里面的代码格式真的不敢恭维.原来我们就是看着这些书本来学习成长过来的,当然,他的<c语言程序设计>我觉 ...

最新文章

  1. 【OpenCV 4开发详解】深度神经网络应用实例
  2. RxJava使用(一)基本使用
  3. RK2908开机时间分析及优化
  4. onnx模型部署(一) ONNXRuntime
  5. SetBkMode函数用法详解
  6. 14.5.5.1 An InnoDB Deadlock Example 一个InnoDB 死锁实例
  7. ajax 防止用户反复提交
  8. TF1与TF2的求和程序对比
  9. NET框架下使用双缓冲技术绘图
  10. [Linux] 编译 与 链接
  11. CountDownLatch和CyclicBarrier 举例详解
  12. Mac新手用户需要了解的14个Spotlight搜索技巧
  13. 全网首发:怎样制作CDKEY(7)-新思路
  14. macbook使用共享屏幕实现VNC远程控制
  15. java调用nlpir_ZH奶酪:Java调用NLPIR汉语分词系统
  16. 2019年12月7日pmp考试成都在哪考
  17. Linux 系统字体安装
  18. 火绒卸载之后的残留文件夹问题
  19. Windows文件共享防火墙规则设置
  20. P3041 [USACO12JAN]视频游戏的连击Video Game Combos

热门文章

  1. 如何应对华为阿里公司的性格心理测评
  2. c语言sno是什么缩写,对于教学数据库的三个基本表:S(Sno,Sname,Ssex),SC(Sno,Cno,Grade),C(Cno,Cname, Teacher), - 赏学吧...
  3. 【数据结构】(二叉树)递归求解双分支结点个数
  4. idea打jar包(包括依赖包)
  5. uncaught exception: Error: couldn’t add user: No role named root@myblog : 报错的解决方法
  6. android9启动器,CircleLauncher-环形启动器 安卓版v9.0.9-PC6安卓网
  7. 微信小程序蓝牙连接步骤
  8. echarts X轴Y轴鼠标滑动放大缩小
  9. 简易电子负载仪及电池容量测试仪方案
  10. matlab三相系统电阻折算,三相不控整流器输入LC滤波器的研究