微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > sdram带宽问题

sdram带宽问题

时间:10-02 整理:3721RD 点击:
假设我现在有一片sdram,规格是8M * 32bit,另外一块是fpga芯片,写sdram的时钟是24M,数据是32bit进,读sdram的时钟是90M,数据也是32bit出,我怎么样判断这片sdram的带宽够不够?请大侠指点,不甚感激!

为什么不能读写都用90M

看datasheet里面 时序测试各种时间参数min和max值,比如单字节读写周期时间是有要求的,你自己设定的24M和90M换算成时间不超过这个手册给的范围就行



   是吗,好的,谢谢你了,我先看看,不懂的地方还请你多多赐教!这个貌似很麻烦嘛,有没有什么通用的计算方法呢?



    没有什么通用的公式,芯片不同参数肯定也不一样。还是对照手册时序测试值来设置指令长短,是麻烦,我记得之前我也是一个一个计算的,不过可能不出错。大概刷新、充电、激活、行有效、写回等指令,物理时间上每个都有min max时间。

如果是计算SDRAM的带宽是否能够满足你的系统需求的话,给的条件还不够充分。
举个简单的例子:
小区入口带宽4M,小区只有2户人上网,一个是喜欢网游的,至少需要2M的带宽;一个是日常上网的
只需要500K的带宽。 这种情况下, 带宽明显是够用的。 如果再来一户需要打游戏的,带宽够不够呢?
也不一定就不够, 要分情况,如果三户同时上网,带宽就不够了!
因此,判断一个系统的数据流带宽是否能够满足需要, 这需要下面2个条件:
1. 传输通道的有效带宽
2. 系统需求的峰值带宽
你给的条件中,只有两个需求带宽,一个是24M的写,一个是90M的读,这只是
相当于说明了小区有两户,一个需要24M的上传带宽, 一个需要90M的下载带宽而已,
带宽分析的两个必要条件都没有明确:
1. SDRAM接口提供的带宽是多少? 比如DDR SDRAM, 它的运行频率可以远远高于90M;
2. 系统需求的峰值带宽是多少? 也就是说读写是不是有一定程度的并行性? 还是只是分时进行?
另外,系统对带宽的需求是不是有实时性要求? 比如音视频这些,这对整个系统的设计都是需要考虑的。
在实现上, 你说的24M写和90M的读,这是两个通道,这另个通道是与SDRAM控制器的两个通道对应。
SDRAM控制器是以多快的频率访问SDRAM,这才是带宽匹配需要计算的地方。
就像电信公司承诺的4M带宽一样,有效带宽并没有那么大,即使线上真的传输4M的信号,有效带宽
也没有那么大,因为4Mbps里面,还要协议数据, IP地址等等。
SDRAM也是一样的, SDRAM的有效带宽也不是接口宽度X运行频率那么简单。他每次burst访问之前
会有刷新,充电等待时间的,还有数据本身缓冲的latency。这个你能datasheet上能够大概算出来。
大概的评估就可以, 不需要精算。 因为一般设计都尽量把SDRAM这边带宽的余量留大一点。

SDRAM读写可以用不同的时钟吗?还是你的意思是说在FPGA这边控制读写带宽?

只能用相同时钟,sdram设计的时候要特别考虑到延迟问题

还有,ddr的时钟不能太小,一般是要100M以上



   我这用的是PC100的sdram,如果同时都跑90M应该是不行的,我没说太清楚,我指的是外部fpga控制sdram的读写时钟,不是指内部sdram的工作时钟



   不好意思,我没太说清楚,我说的是fpga这边的控制sdram的读写时钟



  呵呵,我说的没太清楚,我指的是外部fpga控制sdram的读写时钟,不是sdram里面的时钟



   非常感谢您,给了我这么多的信息,我这边用的sdram是pc100,而且我有点没说清楚,我指的是外部fpga控制sdram时的读写时钟,数据是一直往sdram中写的,读就是按照一定的时序读出来的,我就有些搞不懂了,sdram的容量有限,这样一直写的话,也就是写的快,如果读的慢,是不是还没来得急读,写的数据就把读的数据给替换了呢,但是平时也没有看见数据有什么不对的地方,是不是sdram中有什么机制能管理这些信息呢?



   感谢您的指点,我现在用的是pc100的sdram,至于您所说的系统需求的峰值带宽是多少?这个我真不是很清楚,也只是我现在迷惑的地方,主要在于fpga对sdram进行读写操作时,会不会有这种情况,当我的写速度操过了我读的速度,会不会写的数据覆盖还未读出来的数据呢?我看程序中也么有什么特别的机制进行控制,一端是sensor数据一直往sdram里面写,另一端是fpga按固定的时序进行读操作,莫非sdram中有固定的控制机制?

sdram端口不可能同时出现读操作和写操作,他们是分时,PC100的SDRAM时钟是100M的,100M*32大于24M*32,100M*32大于90M*32;所以读操作时和写操作时SDRAM的带宽都是够用的。

数据覆盖?这个只能是软件操作来控制。写完以后才能读,应该有握手机制在里面。



   大侠确定是这样的吗?因为我在想,sensor的数据是一直往sdram中写数据的,如果出现分时复用的话,会不会出现sensor的数据丢失的情况

两个master控制访问SDRAM的时候,肯定有握手或者仲裁吧,不然SDRAM接口上时序不乱套了。



   两个master同时访问SDRAM的时候,肯定有握手或者仲裁吧,不然SDRAM接口上时序不乱套了。



   哦。理解,谢谢您了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top