RAM IP core(2)

例化5种RAM IP core

(1)单端口RAM   Single-port RAM

RAM参数设置如上图所示,输入输出位宽都为8位,深度为16,采用一级输出寄存器,读写模式为no-change,用COE文件对RAM进行初始化,关于COE文件的制作,前面的帖子有专门提及,这里不再赘述;

可以看出输出延时为2个周期,在wea有效时读操作挂起,写操作运行,即在同一时刻只能对一个地址进行写操作或者读操作!

改为write-first模式:

此时读和写操作可以同时进行,且是对同一地址进行操作,读出的数总是该地址最新写入的数据而不是原来就存在的!

改为read-first模式:

此时可以看出读取的是该地址原来存在的数,并将当前的输入数据存入该地址 !

增加核输出寄存器的情况:

可以看出,输出增加了一级延时;

 

验证复位的优先级,设置复位时的默认数据为FF,首先设置SR复位优先,行为级仿真如下所示:

 

设置CE复位优先的情况:

好像并没有看出有什么区别,这个地方还没弄明白!! 

设置不同的输入输出位宽比,写入位宽为8,读取位宽为4,操作模式为write-first,这里其实存在一个问题,写地址和读地址共用一根地址线,但是读写地址所用到的地址线位宽不同,这好像会存在问题?行为级仿真如下:

当wea=0时,读取COE文件中的初始数据,低位在低地址,高位在高地址;

当wea使能时,由于是write-first模式,读出刚写入的数据,可以注意到写入b5用了两个周期同时占用了两个地址20和21,因为每个地址只有4位,先写入5再写入b,这导致b6并没有写入,而是直接写入了b7、b9 ;这样理解好像存在问题?继续看下面

改成read-first模式,行为级仿真如下所示:

 改成no-change模式,行为级仿真如下所示:

 

比较上面两图可知,在写操作时,只用到了地址线的两位,而且是高两位,最低位为任意,所以对于上图1所示的地址7和6,这两个地址对于写地址来说都是3,所以进行了覆盖写入即写入的都是1235;但是对于读地址来说这两个地址分别对应1个4位数据的地址,故读出的分别是35和12; 

(2)单端口ROM   Single-port ROM 

对于ROM,读写模式只能是write-first ,ROM参数设置如上图所示,输入输出位宽都为8位,深度为16,采用一级输出寄存器;

可以看出,输出延时为2;

加上使能信号ena,行为级仿真如上图所示; 

(3)双端口ROM   Dual-port ROM 

COE文件初始化ROM,位宽为8位,深度为16,portA的读位宽为8,portB的读位宽为4,行为级仿真如下:

 (4)简单双端口RAM   Simple Dual-port RAM

portA的参数设置如上图所示,操作模式为no-change,由于是写入端口,无法选择输出寄存器也无法复位,写入深度为16,宽度为8;

portB的参数设置如上图所示,操作模式只能是write-first,可以设置输出寄存器核复位,读位宽为8,深度为16; 

读写采用不同的时钟,在wea使能时portA开始写入,行为级仿真如上图所示;

 将portA改为write-first模式,效果似乎没变如上图所示;

  将portA改为read-first模式,效果似乎也没变如上图所示;

读写时钟换成同一个,造成读写地址冲突,由于portB的操作是write-first,所以写入的数据总是最先读出;

 (5)真双端口RAM   Dual-port RAM

 

portA读写位宽都为8,深度为16,操作模式为no-change;

portB的写入位宽为8,读取位宽为4,深度分别为16和32,操作模式为write-first; 

行为级仿真如上图,由于portA为no-change模式,所以在wea使能时,就只能进行写入,故输出为00;同时,由于portB写入位宽为8,读取位宽为4,地址码位宽为5,这里涉及到一个问题,读地址和写地址的位宽应该是不同的,这不会存在问题吗??真双端口RAM其实就是两个单端口RAM,只不过这两个单端口共用一块存储RAM!!

将portA改成write-first模式,行为级仿真如下:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值