tlm通信中传递的数据有误的问题

本文探讨了一位开发者在使用TLM通信时遇到的问题,起初以为fifo深度限制导致数据重复,实则是由于每次循环中新实例化item导致。作者揭示了正确的使用方法——每次循环new一个handle并写入,确保fifo存储不同数据。
摘要由CSDN通过智能技术生成

TLM通信时遇到的一个问题:
之前没有重视过,ap.write(item)传递数据给中间fifo的analysis_export,fifo另一边blocking_get_export所连接的blocking_get_port会调用(该类型fifo已定义write操作)get来从fifo拿到数据。我的发数据那个组件,对于item的例化大致是,item=new(1);然后在循环中每次操作item一次然后直接ap.write(item)写出去,开始认为很完美,然而结果却是接受方得到的item数据全部为最后一次操作所留下的值。
\n
这个时候,我第一反应是什么呢?是不是fifo的深度为1,导致取出来的数据都是最后一个呢?于是我仔细看了下源码,发现他在new的时候,定义的size=0,表示该类型fifo的深度是无限的。抱着不可不信又不能全信的态度,又思考了另一个问题,为什么能取出同一个数,取想要的次数呢?难道get用错了?为什么get跟peek的效果一致呢?这不是跟以往了解的完全对不上吗?
\n
终于,我发现的我的item=new(1)跟赋值一起,也就是每次循环都new一个item,这样的话,数据就能对上了,后面发现是ap.write传递的是handle,并不是一直理解的将一个item送进fifo,只有每次都new(1),这样让fifo存储的handle指向不同的存储空间,这样行为才能正常。
\n
如此便是简单的Blueprint。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值