SRIO入门之官方例程仿真验证

仿真SRIO事务时序

仿真之前先完成下面两步操作:

1.Vivado软件版本2020.1,创建好工程及SRIO的IP核

2.右键综合化的IP核,然后选择打开IP示例工程

直接运行仿真

分别将request和response两个模块添加到仿真窗口进行查看

运行1000us左右就可以看到信号动作

可以看到不同的事务类型

接收MAINTENANCE READ REQUEST请求

首先会由一个维护读请求事务,指定一个维护读请求,不需要响应,因此val_tresp_tvalid=0。

发送SWRITE请求

仿真后面可以看到val_ireq_tvalid拉高时发送的数据包有效,结合ftype(6)和ttype(0)值,包头对应instruction.vh头文件的流写事务,在数据发送完后tlast拉高。

接收SWRITE请求

在request模块发送完数据后,response模块接收到SWRITE请求,结合ftype(6)和ttype(0)值可以验证是SWRITE事务。

发送NWRITE_R请求

接着request模块继续发送下一个数据包事务,是NWRITE_R事务。

接收NWRITE_R请求,发送响应

在发送请求一段时间后,在response模块中接收NWRITE_R事务,和发送的请求包一致,该事务会产生响应,在一段时间后可以看到val_tresp_tvalid拉高一个周期,发送响应包val_tresp_tdata = 64'h25d0_4000_0000_0000。

发送NREAD请求

接着request模块继续发送下一个数据包事务,是NREAD事务。先发送读数据请求包,该事务请求只含包头,不包含数据。

接收NREAD请求

在发送一段时间请求包后response模块收到请求包,接收到读数据事务后根据数据类型接收模块会返回一个响应包和一串数据。

发送NREAD响应

在response模块接收到读事务一段时间后产生相应包val_tresp_tdata=64'h4bd8400000000000,并和数据一起打包,因为接收到的size=8'h3f,所以需要发送的数据个数是64字节,数据位宽是64位发送,则需要发送8个周期的数据。

接收NREAD响应

在响应包发送一段时间后在request模块中收到了响应包包头和数据,响应包包头为val_iresp_tdata=64'h4bd8400000000000,跟在包头后面的是数据0。

上述只对流写事务、带响应的写事务和读事务进行仿真时序分析,其它几个事务可以根据头文件和仿真继续分析。

本期分享结束,感谢大家看完,私信我可获取相关源码工程

相关推荐
冒泡的肥皂7 分钟前
MVCC初学demo(二
数据库·后端·mysql
代码程序猿RIP9 分钟前
【Redis 】Redis 详解以及安装教程
数据库·etcd
小生凡一17 分钟前
redis 大key、热key优化技巧|空间存储优化|调优技巧(一)
数据库·redis·缓存
oe101917 分钟前
好文与笔记分享 A Survey of Context Engineering for Large Language Models(上)
数据库·笔记·语言模型·agent·上下文工程
郭源潮118 分钟前
《Muduo网络库:实现TcpServer类终章》
服务器·网络·c++·网络库
小马哥编程20 分钟前
【软考架构】案例分析-对比MySQL查询缓存与Memcached
java·数据库·mysql·缓存·架构·memcached
一 乐21 分钟前
高校后勤报修系统|物业管理|基于SprinBoot+vue的高校后勤报修系统(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·毕设
折翼的恶魔1 小时前
SQL190 0级用户高难度试卷的平均用时和平均得分
java·数据库
煎蛋学姐1 小时前
SSM基于框架在线电影评论投票系统3gr0f(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·系统开发·ssm 框架·在线电影评论投票系统
꒰ঌ 安卓开发໒꒱1 小时前
Go高并发在企业级项目中的实战应用:数据库访问与GIN+GORM深度实践
数据库·golang·gin