news 2026/4/29 20:55:36

数据流转换模块设计核心要点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据流转换模块设计核心要点

一、高层次综合中变量或者结构赋初始值
template<int D,int U,int TI,int TD>
struct ap_axiu{
ap_uint<D> data;
ap_uint<(D+7)/8> keep;
ap_uint<(D+7)/8> strb;
ap_uint<U> user;
ap_uint<1> last;
ap_uint<TI> id;
ap_uint<TD> dest;
};

ap_axiu<PIX_W*N_PIX, 1, 1, 1> axis_data={0};
上述设计对结构体合成的axis总线进行赋初始化值

二、为何要对变量或者总线赋值
1.如果不对上述进行赋初始值,会存在综合的rtl代码的初始值为X态
2.rtl协同仿真中叶可以看到X标红的状态,不利于设计查看和分析。


三、状态机跳转条件设计
方式一:判定帧头设计,检测帧头
while(sof==0){
#pragma HLS pipeline II=1
src >> axis_data;
sof = axis_data.user.to_int();
}

方式二:判定帧头设计,检测帧头

while(1){
#pragma HLS pipeline II=1
src >> axis_data;
sof = axis_data.user.to_int();
if(sof==1)
break;
}


四、streaming串流模型
1.串流模型中,函数中有两块逻辑,这两块逻辑是串行执行的,第一块逻辑没有执行完成,就会一直阻塞着,类似rtl中
状态机的触发条件,如果条件没有触发,那么就一直阻塞着,直到条件满足,进入下一个状态流程。

2.可以将串流的两个逻辑部分合并为一个逻辑
这样的好处是是,减少两个逻辑块的进入和退出开销;当然也要视情况而定!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 20:55:35

II为NA问题说明

一、非流水线设计中的II和latency 在非pipiline设计中&#xff0c;C/RTL协同仿真的ap_start和ap_done之间的 时间为Latency&#xff0c;IILatecy 1;因为设计会在所 有操作完成 1 个周期后读取新输入。非流水线设计中&#xff0c;当前一轮 的传输事务完成之后才能启动下一轮的传…

作者头像 李华
网站建设 2026/4/29 20:49:18

Redis三种分片方式深度对比:优势与劣势详解

业务痛点&#xff1a;数据量暴涨&#xff0c;单机扛不住了 电商平台的缓存数据量从10GB暴涨到100GB&#xff0c;单机Redis已经无法承载。 &#x1f4ca; 问题背景 业务场景&#xff1a;电商平台&#xff0c;商品详情、用户信息、购物车等缓存数据规模&#xff1a;从10GB增长…

作者头像 李华