UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

取消
显示结果 
搜索替代 
您的意思是: 
Highlighted
Visitor auhty
Visitor
508 次查看
注册日期: ‎01-19-2019

简单双口ram调用问题

在项目中调用简单双口ram的IP核,使用中出现两个棘手的问题,寻求大家帮助

1、简单双口ram是否可以输入输出位宽不同,目前设计位宽不同,但是在使用中直接初始化发现读出数据前一半地址数据正确,后一半错乱,目前输入位宽8bit,读位宽64bit

2、是否在同一个模块中可以同时调用两个ram核,目前一个输入输出都是8bit位宽,另一个输入位宽8bit,输出64bit,编译后发现会有影响

0 项奖励
5 条回复5
Moderator
Moderator
446 次查看
注册日期: ‎05-23-2018

回复: 简单双口ram调用问题

Hi, @auhty

简单双口RAM是支持输入输出位宽不同的。要注意输入输出端口宽度不同的情况下,他们的深度也要有所不同。例如,在你的设计中,输入位宽是8bit,输出位宽是64bit。输入输出位宽比为1:8,则输入输出深度比需为8:1,输出端口的寻址最低三位无效。

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
Visitor auhty
Visitor
437 次查看
注册日期: ‎01-19-2019

回复: 简单双口ram调用问题

1、非常感谢您的回复,目前我的ram核是这样生成的,写深度是65536,对应地址是16bit,数据位宽是8bit;读地址是13bit,深度是8192,数据位宽是64bit,目前地址我都是按顺序来的,写一个地址地址加1'b1,读地址也一样,我没有明白您说的输出端地址低三位无效,输出端我直接是按13位地址寻址的。

2、还有,目前我用的是k7系列FPGA,我还想问一下我在同一个模块里能否同时调用两个简单双口ram,输入端深度、位宽相同,输出端深度、位宽不同,目前我是这样用的,但是发现他们互相有影响,本来单独用一个的话是没问题的,但是在加一个就会有影响

3、我生成一个输入深度65536,地址16bit,数据位宽8bit,对应输出深度8192、地址13bit、位宽64bit的双口ram,我想验证读数据的正确性,我直接给初始化,然后连续读,直到读完整个ram,发现读出大约34000个字节后,读出的数据会错乱,按理说读一个地址一次可以读出8个字节,但是读出的是错的,然后单独读每一个地址都是对的,也证明写没问题

4、如果方便的话请您再帮忙回复一下,如果可以通过微信或邮件和您能沟通更好

0 项奖励
Moderator
Moderator
420 次查看
注册日期: ‎05-23-2018

回复: 简单双口ram调用问题

Hi, @auhty

读出的数据错乱具体是指什么?有相应的波形图吗?

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
Visitor auhty
Visitor
410 次查看
注册日期: ‎01-19-2019

回复: 简单双口ram调用问题

我是把读的数据直接发出去看的,三个图是我读出的数据,我把ram分成了8个区,每个1024个地址,分别初始化不同的数据,目前读到第五个缓冲区,开始出错

捕获1.PNG
捕获2.PNG
捕获3.PNG
0 项奖励
Moderator
Moderator
309 次查看
注册日期: ‎08-01-2007

回复: 简单双口ram调用问题

1. Block Memory Generator IP是支持读写不同位宽的, 具体内容请看IP的user guide.

2. 同一设计里可以例化很多相同的bram IP(每个bram IP的名字不一样), 在bram资源足够的前提下.

3. bram读数据出错, 首先要看是仿真还是硬件出错, 硬件出错有几种可能性, 1) 有没有读写地址冲突, 2)读写控制信号由异步reset控制 3) timing violation 4)读写控制信号和数据里异步信号 5)时钟是否稳定