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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

[求助] 异步fifo中读写数据位宽不等

[复制链接]
发表于 2024-7-24 16:38:46 | 显示全部楼层 |阅读模式

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

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

x
最近被面试官问到如果异步fifo的读写数据位宽不等,比如读>写,或者写>读,该怎么处理,我直接糊弄过去了,没有答上来。

事后上网搜了下,也没找到满意的回答,请教各位大佬在实际项目中遇到这种情况会怎么办
发表于 2024-7-25 09:09:34 | 显示全部楼层
可以考虑在读侧或写侧加上位宽转换器,这样异步FIFO读写数据位宽就相同了
通常令这个位宽为原有读写位宽更大的那个值
发表于 2024-7-25 09:21:36 | 显示全部楼层
本帖最后由 hebut_wolf 于 2024-7-25 09:22 编辑

我的粗浅理解:
读>写  那么对齐MSB,让读的位宽LSB为0就好了:
读<写 需要把数据截断,这时候需要加一个截断器,保证数据的线性。
 楼主| 发表于 2024-7-25 14:19:31 | 显示全部楼层
感谢各位回复,学到了
发表于 2024-7-25 16:14:46 | 显示全部楼层


hebut_wolf 发表于 2024-7-25 09:21
我的粗浅理解:
读>写  那么对齐MSB,让读的位宽LSB为0就好了:


他既然问了,肯定是有点需求的啊。最基本的,你不能造成位宽的浪费吧。
如果按照你的这种截位什么的,那这是考你拼位截位吗?

我的理解,可以把FIFO的位宽设为读写位宽的最大公约数。比如写8bit,读12bit,那FIFO位宽就是4bit。写一次就是2个地址,读一次就是3个地址。然后写的时候拆成2个数,写使能打两拍;读就读三拍,然后拿到3个地址的数拼起来
发表于 2024-7-26 09:47:21 | 显示全部楼层
可以利用 memory 的 be 信号(最好是 bit mask 这样的,位宽控制更灵活)
发表于 2024-7-30 17:58:22 | 显示全部楼层
位宽转换器,通过时钟的分频倍频来解决位宽不同,快时钟采高位款,慢时钟采低位宽!
 楼主| 发表于 2024-7-31 16:28:04 | 显示全部楼层


liuguangxi 发表于 2024-7-25 09:09
可以考虑在读侧或写侧加上位宽转换器,这样异步FIFO读写数据位宽就相同了
通常令这个位宽为原有读写位宽更 ...


如果读时钟50M,读数据位宽[14:0],写时钟100M,写数据位宽[9:0],也就是写的更快,但是写的数据位宽更小,那只需要在写时钟下把写数据位宽转换成10bit,读数据不动就行了是吗?


这种方法和寻找读写数据位宽最大公约数的方法相比,哪种更好呀

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

本版积分规则

关闭

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


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

GMT+8, 2024-12-27 03:53 , Processed in 0.020284 second(s), 7 queries , Gzip On, Redis On.

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