原创 Altera双口RAM读时序问题

2012-12-3 12:24 18428 13 16 分类: FPGA/CPLD 文集: ALTERA FPGA

项目中需要设计一个直方图,分析直接采用Altera的双口RAM就可以实现,为了控制简单,就采用了单时钟(即读写同时钟)接口。例化Altera的双口RAM后,分析其给出的读写时序图,应该是读操作的下一个时钟输出端口就会出现该读操作的数据,而实际情况是读操作后的第二个时钟才有数据。


 


下图为Altera给出的时序图


点击看大图


 


下图是我在CII器件上实现的时候通过SignalTapII抓取的结果:


点击看大图


 


看Altera给出的时序图应该是当前读时刻的下一个时钟出结果,而看实际SignalTapII探测是当前读时刻的下下一个时钟出结果。这在一般数据存储的时候也许可以忽略该问题,但是在直方图设计的时候这是致命的,因为直方图就是统计双口RAM“地址”出现的频率。这涉及到读出数据后还要将该读出的数据进行更新统计后重新写回到原来的位置。所以时序不同对于直方图的控制也会不一样,一个简单的直方图调试确实花费不少功夫。


 


虽然花费些功夫找到并解决了问题,但是不清楚为何官方的时序图跟实际使用的时候会不一致?!!


 


 


######################################################################


 


 


这个问题是我自己被SignalTapII迷惑了,时序是正确的,仔细分析Altera给出的时序图,能发现在读操作采样时钟对应时刻地址是有效的(不像SignalTapII当中时钟上升沿对齐地址变化时刻),但是我给出的第二幅图中SignalTapII截图中第一个蓝圈处正好是地址从C1到CC的转变,也就是说此刻有效地址是C1而不是CC。回过头来看看自己的程序确实是这个过程:


双口RAM读端口的数据输出时序:第一个时钟地址变化,第二个时钟地址有效,第三个时钟数据有效并被读出。


上述时序的后两个时钟对应于Altera给出的时序关系。

文章评论3条评论)

登录后参与讨论

用户377235 2016-1-7 17:48

根据altera给的memory资料进行读写,资料上确实显示当双口使用同一个时钟时,读数据时,地址在第一个时钟上升沿有效,在第四个时钟上升沿才可以稳定的出现在数据端口

用户1303485 2010-7-30 23:21

地址变化, 下个周期,时钟采集地址选出RAM的值, 再下一个周期把RAM的值触发器打出(可选)。 ---这一个类似于模块内部输入寄存,输出也寄存 至于为什么不直接把地址接到RAM上, 下一个周期时钟吧RAM输出送出 再下一个周期再打一拍(可选) 这个我就不知道了

用户1395232 2010-1-26 10:59

不解 Altera给出的时序图 输出数据不就是延时读地址2个cycle输出的么 愿闻其详:)
相关推荐阅读
coyoo 2024-12-10 13:28
Cyclone V GX FPGA设计TDC的优化问题
概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些...
coyoo 2024-12-03 12:20
比较器检测模拟脉冲说明(四)
概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解...
coyoo 2024-11-16 13:54
不同ADC采样同一前端模拟信号时转换用时差异分析
概述 同一组前端模拟信号接入由不同型号ADC组成的模数转换电路时,采样后在FPGA中发现采样用时差异较大。本文主要分析这个时间差异形成的原因,并记录该差异产生对系统造成的影响。系统数字化简介 项目前端...
coyoo 2024-11-10 13:04
ALTERA Cyclone 10器件的使用-7:FPGA片内RAM资源利用率思考
概述 项目使用的FPGA目标器件为Cyclone 10 GX系列规模最大一颗料,由于功能升级增加了功能模块更多,发现器件片内RAM不够使用了。为了探索片内RAM使用的利用率问题,从代码RTL级与编译软...
coyoo 2024-11-10 12:30
转知乎:幽灵般的人体成像技术-PET
幽灵般的人体成像技术——PET - 知乎...
coyoo 2024-11-09 10:26
AD9633默认情况下调试记录(二)
概述 所谓默认情况,即如器件手册中图2所标示那样。对应AD9633的调试,除了涉及到ADC自身,还需要兼顾前端驱动器,系统中AD9633驱动器使用了差分运算放大器,这里不在赘述,笔者已有相关文章论述。...
我要评论
3
13
关闭 站长推荐上一条 /2 下一条