在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4228|回复: 9

[求助] 请教RAM的问题

[复制链接]
发表于 2011-6-13 16:15:52 | 显示全部楼层 |阅读模式

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

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

x
有两个问题啊,我用的是Xilinx  ISE。

第一个问题:比如,如果使用容量为128*8bits的RAM,4个读端口,4个写端口,
                     和使用4个RAM,每个分别是32*8bits,1个读端口,一个写端口。


这个两种情况下RAM总的存储容量啊接口总数好像差不多,但是不知道用起来有什么区别啊?面积,功耗或者复杂度,或者其他方面?


第二个问题: 如果我需要的RAM的总的存储容量是 128*168bits,就是有128个存储位置,每个位置上存储168bits的数。8个读端口,16个写端口。

请问这种情况下,是不是不能只用一个大的RAM,而且必须使用多个小的RAM啊?


真心求助啊,先谢谢了
发表于 2011-6-13 19:38:49 | 显示全部楼层
1. FPGA内部的RAM可以用两种方式实现,BLOCK RAM或者distributed RAM,前者是真正的RAM存储体,后者是用FPGA内部的SLICEM搭出来的。
2. 如果是使用block ram的话,一般的,都有固定的大小,比如18Kb。可以配置成16K*1bit, 8K*2bit等等(大概是这样,你可能发现了,我写的size前后不一致,那是因为有两个bit用来做校验位的)。所以,你的例子中用168的宽度,那么应该是多个18Kb的RAM搭建而成的。深度是128,没问题。但是BlockRam没有168宽度的,所以是用好几个BlockRam并行拼接出来的。
3. 这种拼接的行为,ISE会自动帮你做的。所以你不用管到底用一个大的还是几个小的。你就生成一个大的128*168的RAM就好。
4. “8个读端口,16个写端口”,貌似没有直接这么多端口的RAM。所以,自己写个控制器是不可避免的拉。
发表于 2011-6-13 21:48:14 | 显示全部楼层
楼上解释的很清楚
 楼主| 发表于 2011-6-14 15:43:46 | 显示全部楼层
回复 2# acgoal


    非常感谢版主详细的回答!感激不尽~~
 楼主| 发表于 2011-6-14 15:49:24 | 显示全部楼层
回复 2# acgoal


  “  4. “8个读端口,16个写端口”,貌似没有直接这么多端口的RAM。所以,自己写个控制器是不可避免的拉。”

我可不可以问下,一般读端口和写端口的个数有什么限制吗?还有关于这个控制器,能不能给个例子?

不好意思,我是新手,问的问题可能比较弱啊
发表于 2011-6-14 19:42:06 | 显示全部楼层
回复 5# mingpangzi


    Xilinx 的FPGA里面的block ram有一个端口的,两个端口的,并行端口。这里我讲的几个意义如下:
1. 一个端口:所有的读写操作只通过这一个端口。一组读写总线,写的时候不能读,读的时候不能写。
2. 两个端口:写和读分别两个端口,可以同时读和写(一个读,一个写),但是不要读写同一个地址。
3. 并行端口:两个端口分别可以同时读和写,但是也不要读写同一个地址。

我是没有现成的例子给你。但是最简单,有超过两个端口的读写,那么响应的仲裁器是要写的吧。否则不是大家抢了吗?
 楼主| 发表于 2011-6-15 02:57:10 | 显示全部楼层
回复 6# acgoal


    您好,我设计的RAM是读和写不能同时的,用一个w_r信号控制,为1时写入数据;为0时读出数据。然后还有一个控制信号控制RAM是工作还是处于idle状态的

然后读或者写的话,所输入的八个地址都是不一样的。

我怎么觉得好像没冲突啊,请问还需要响应仲裁器吗?或许是我没考虑全面。如果方便我可以把代码给您看看,看有什么我没考虑到的。

非常感谢!
发表于 2011-6-15 08:51:32 | 显示全部楼层
回复 7# mingpangzi


    你的代码我看了,觉得你有一个误区。verilog的写法和综合后的东西你不明确。
   不是左右的 mem[addr] <= write_data。这句话都被综合成RAM的,实际上,如果你让ISE综合或者DC直接综合这一段,那么它是一堆的flop,也就是寄存器。所以你写的这段代码不是RAM,而是寄存器组,或者叫寄存器阵列。
 楼主| 发表于 2011-6-15 17:01:14 | 显示全部楼层
回复 8# acgoal


    您第一句话真是一针见血。我确实是不明确verilog的写法和综合后的东西,呵呵

如果您有时间,希望能收到您关于这个RAM到底怎么写的建议。我自己会在网上再找找看。

非常感谢您的指正!
发表于 2011-6-15 23:03:57 | 显示全部楼层
ISE里边有verilog写的各种模块的模板,就有block RAM写法的模块,LZ可以找找
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-6-17 00:43 , Processed in 0.038517 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表