Verilog实现RAM(7-异步双口SRAM:原理、实现、仿真、分析)

在之前的工作中,我们对常见存储器件进行了名词扫盲,通过调用IP核实现了简单的单端口同步读写SRAM、通过Verilog实现了单端口同步读写SRAM、单端口同步写,异步读SRAM、单端口异步读写SRAM,双端口同步读写SRAM,以及双端口异步读写SRAM,这些工作见:

Verilog实现RAM

但是随着深入学习发现,之前实现的异步RAM更像是一个时钟无关的RAM;异步双口SRAM应该是读写时钟不同,才能叫异步,像之前写的“异步”SRAM实际为时钟无关的RAM,都没有时钟,如何称为异步?因此,重新对异步双口SRAM进行设计和验证:

目录

一、原理

二、代码实现与仿真:

三、参考文献:


一、原理

异步双口SRAM与双端口同步读写SRAM类似,唯一区别就在于两组端口时钟不同,分别在其控制信号的作用下(如:片选、使能、地址等)进行读/写操作;

输入端口有:(异步应该有两组时钟)

    reg clk1;//端口1对应时钟

    reg [3:0]a1;//输入地址(RAM深度为16,对应地址位宽为4)

    reg we1;// write enable,写使能时进行RAM写操作

    reg oe1;// output enable,输出使能时RAM读取的结果才能输出

    reg cs1;// 片选信号,选择读取哪一个RAM

//  第二套

    reg clk2;//端口2对应时钟

    reg [3:0]a2;//输入地址(RAM深度为16,对应地址位宽为4)

    reg we2;// write enable,写使能时进行RAM写操作

    reg oe2;// output enable,输出使能时RAM读取的结果才能输出

    reg cs2;// 片选信号,选择读取哪一个RAM

输入输出端口有:
    wire [7:0]d1;//读取RAM时数据输出/写入RAM时数据输入   

    wire [7:0]d2;//读取RAM时数据输出/写入RAM时数据输入

 

工作过程:

两组端口在各自时钟驱动下,独立的根据各自的控制信号cs/we/oe执行对应的操作;工作过程类似:

cs有效(为1)、we为1时,写使能,将d输入数据写入a对应地址处;

cs有效(为1)、we为0时,读使能,oe有效(为1)时将a地址处的数据读出到d上;

注意:

双端口RAM同时读写时会出现冲突,如:同时对同一地址读操作,此时两个端口能直接同时读出数据吗?存在仲裁吗?再如:同时对同一地址进行写操作,此时写地址的结果应该是啥?是报错?是仲裁?写的内容是哪

  • 7
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值