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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3906|回复: 7

[求助] 请问写入数据位宽不定,fifo该如何设计?

[复制链接]
发表于 2020-7-2 22:12:45 | 显示全部楼层 |阅读模式

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

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

x
image.png
如图,像这样每次写入的data位宽不定,但是header位宽一定,并且可以通过header得知data的位宽。这样的fifo应该如何设计呢?如果是将data裁剪,拼接的话,因为每次写入的是随机的header,裁剪,拼接不固定,不知道如何解决,请大家指点一二,提供个比较详细的思路~
发表于 2020-7-3 00:58:16 | 显示全部楼层
其实对FIFO来说,只是存数据,具体怎么解析,应该是后面的来决定。
所以设计的时候,主要是需要考虑bandwidth,设计fifo的宽度和深度。


你需要知道进来的数据的速率,bandwidth,以及读取的速率,bandwidth就可以知道了。


如果进来的数据速度很快,又是最大位宽,那么必须按照最大位宽设计fifo的宽度。比如进来的位宽64bit,连续进来4个或者8个,在这种情况下,只能按照64bit宽度来设计了,没有办法剪裁。位宽小的时候,倒是可以拼接。这种情况下就只需要考虑深度了。当然如果大部分情况下,小位宽的数据是连续的,而大位宽的速度很慢,比如进一笔64bit,会等好几个cycle后,才可能有另一笔数据,那么可以考虑将大位宽的进行裁剪,这个时候需要设计宽度很深度。还有一种操作就是,按照最大进来的数据设计fifo的位宽,其他的就不管宽度了,只要来一笔就写进去,反正fifo只是存数据。这个时候主要考虑深度。






发表于 2020-7-3 00:58:32 来自手机 | 显示全部楼层
header和data一起,剪裁成固定宽度送到fifo。输出的东西,根据header再进行解包。
 楼主| 发表于 2020-7-5 19:21:34 | 显示全部楼层


kk2009 发表于 2020-7-3 00:58
其实对FIFO来说,只是存数据,具体怎么解析,应该是后面的来决定。
所以设计的时候,主要是需要考虑bandwid ...


您好,现在data的位宽不一定,也不是8的整数倍,我是不想浪费fifo空间,想和图中那样把每一bit都利用起来~
 楼主| 发表于 2020-7-5 19:24:20 | 显示全部楼层


himingway 发表于 2020-7-3 00:58
header和data一起,剪裁成固定宽度送到fifo。输出的东西,根据header再进行解包。 ...


您好,header的位宽是2,data的位宽是2的整数倍,但不是32或者64的整数倍,请问如何将header和data拼接或者裁剪成32/64的整数倍呢?
发表于 2020-7-5 23:10:21 | 显示全部楼层


不伤人的地雷 发表于 2020-7-5 19:24
您好,header的位宽是2,data的位宽是2的整数倍,但不是32或者64的整数倍,请问如何将header和data拼接或 ...


1. 首先通过header来计算header+data的长度。
2. 每个包(header+data)以byte对齐。比如header+data的长度为118bit,可以在后面补0,补成120bit。
3. 计算这个包需要几层fifo。例如fifo的位宽是64bit,那么80bit的包需要1层+56bit的fifo空间;如果又来个100bit的包,byte对齐补成104比特,那么再加上之前多出来的56bit的空间,总共有160bit。那么加上之前不够一个fifo层的包,需要2层+32bit的fifo空间。以此类推……
4. 按上面的办法,存放剩下的数据。
image.png

发表于 2020-7-5 23:27:33 | 显示全部楼层


himingway 发表于 2020-7-5 23:10
1. 首先通过header来计算header+data的长度。
2. 每个包(header+data)以byte对齐。比如header+data的长 ...


你可以将fifo宽度弄成最大pkg的宽度,比如最大pkg为500bit,可以将fifo宽度弄成512bit的,这样对于任意一笔pkg,保证每次写入fifo不会超过一层,这样一笔pkg一个cycle就能写进fifo。
 楼主| 发表于 2020-7-7 11:12:42 | 显示全部楼层


himingway 发表于 2020-7-5 23:27
你可以将fifo宽度弄成最大pkg的宽度,比如最大pkg为500bit,可以将fifo宽度弄成512bit的,这样对于任意一 ...


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

本版积分规则

关闭

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


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

GMT+8, 2024-11-24 12:52 , Processed in 0.025527 second(s), 7 queries , Gzip On, Redis On.

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