EETOP 创芯网论坛

便捷登录,只需一步

找回密码

  登录   注册  

搜帖子
电子实例资料:如何改善测量精度 | 有奖:300信元+15个小米电动牙刷
查看: 13222|回复: 15

[求助] 请教-------双口RAM的疑惑!!!

[复制链接]
发表于 2012-3-2 14:21:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
问题描述:新项目中,dsp要与FPGA进行数据交互,一开始通过寄存器方式来实现,考虑到时钟异步担心出现亚稳态问题(DSP读取时FPGA正好在更新数据),查询资料貌似双口RAM 能解决此问题,于是用了真双口RAM核,在DSP侧和FPGA侧编写了测试程序,检验发现还是会出现数据交互错误。而且错误情况是:读取到的是上一次的值。

请教各位:
1、真双口RAM能解决对于不同端口: A和B端口数据交互的冲突问题吗?(为了避免同时对同一地址单元写操作;本人已故意将地址划分:0~127单元DSP只读FPGA只写;128~255单元DSP只写FPGA只读)

2:通常大家都是怎么解决MCU和FPGA间数据交互的?希望能给点意见!!!
 楼主| 发表于 2012-3-2 14:43:29 | 显示全部楼层
本人初学者,等待大侠的出现!
回复 支持 反对

使用道具 举报

发表于 2012-3-2 15:37:07 | 显示全部楼层
可以利用类似DMA的操作,给RAM增加一个标志位,FPGA每写一次,就将标志位改成1,DSP不停的读取(或者中断的方式)这个RAM,每读到一个标志位是1的就表示FPGA写过,那么将数据读出来,然后再将标志位写0.如此往复。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-3-2 16:29:47 | 显示全部楼层
感谢acgoal 版主!我按照您的思路再考虑一下!顺便再请教acgoal :目前FPGA侧的数据更新我用了一个类似1ms的任务在刷新(读该读的寄存器数据,写改写的寄存器数据);DSP内的任务是1ms的。个人感觉这种办法不是很好,不知道acgoal 怎么看待?
请教:怎么考虑FPGA刷新双口RAM数据?
回复 支持 反对

使用道具 举报

发表于 2012-3-2 17:05:04 | 显示全部楼层
你的ram是read first模式的吧,所以每次读写冲突的时候都读到旧值。把你的ram选成write first模式就可以了,这样每次冲突的时候就都是先写再读,就都是新值。
回复 支持 反对

使用道具 举报

发表于 2012-3-2 22:29:52 | 显示全部楼层
对于同一块RAM的调度的话,
1. 你用地方法是基于时间的,每个设备各占用1ms的时间(如果我没有理解错的话),但是这样不够保险,因为每个设备,特别是DSP,数1ms的时间不是那么准确,不能保证和FPGA是不是有冲突。
2. 还有另外一种方法,就是可以用我之前说的握手,FPGA在某段时间内处理RAM,处理完毕之后,产生中断信号,告知DSP,那么DSP就知道FPGA处理完了,轮到DSP处理了,等DSP处理完毕之后。再写一个寄存器(或者是标志),告诉FPGA,那么FPGA又知道DSP处理完了。就一直这样循环下去。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-3-3 18:58:51 | 显示全部楼层
回复 5# catcat_2


    是的!是设置的read first!可是如果是write first的话,我仔细阅读过xilinx的双口RAM的资料,如果是write first的话对于另外一个port的数据是无效的!
    不知道您的意思是------?
回复 支持 反对

使用道具 举报

发表于 2012-3-5 13:32:55 | 显示全部楼层
学习一下!!!
回复 支持 反对

使用道具 举报

发表于 2012-3-5 16:52:27 | 显示全部楼层
回复 7# linyuanfei

       应该不是无效的吧。你看看xilinx的ug363和383。我手边上没有模型,不然做个功能仿真就知道了。

------------------------------------------------------
    During a write operation, the content of the memory at the location specified by the address on the ADDR inputs is replaced by the value on the DI pins and is immediately reflected on the output latches (in WRITE_FIRST mode); when Write Enable (WE) is High.
回复 支持 反对

使用道具 举报

发表于 2012-3-5 16:55:48 | 显示全部楼层
使用异步FIFO
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭
关闭

小黑屋| 关于我们| 联系我们| 在线咨询 |  EETOP 创芯网 ( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2020-5-27 16:42 , Processed in 0.067557 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表