当前位置: 首页 > news >正文

NVMe高速传输之摆脱XDMA设计21:PCIe请求模块设计(下)


在接收到请求总线接口的请求事务后,当请求类型的值为0时,表示通过PCIE硬核的配置管理接口发送请求,由于请求接口的接口和时序与配置管理接口基本一致,因此此时直接将请求接口信号驱动到配置管理接口完成请求的发送,请求读数据和响应也通过选通器连接到配置管理接口。当请求类型值不为0时,则需要将请求转换为TLP以axis接口形式发送,这一过程通过请求状态机实现,请求状态机的状态转移图如图1所示。各状态说明如下:

PCIe请求状态转移图

IDLE:空闲状态,复位后的初始状态。当请求写有效或请求读有效,且请求类型值不为0时,如果请求写有效跳转到WR_HEAD状态,如果请求读有效或读写同时有效跳转到RD_HEAD状态,否则保持IDLE状态。实际的上层设计中读写请求不会同时发生,这里的状态跳转条件增加了读优先设计,从而避免异常情况的出现。

WR_HEAD:请求写TLP头发送状态。该状态下根据请求类型、请求地址组装写请求的TLP报头,并将报头通过axis_rq接口发送。当axis_rq接口握手时跳转到WR_DATA状态。

WR_DATA:请求写TLP数据发送状态。该状态下将请求写的数据通过axis_rq接口发送,当axis_rq接口握手时跳转到DONE状态。

RD_HEAD:请求读TLP头发送状态。该状态下组装读请求TLP报头通过axis_rq接口发送,当接口握手时跳转到RD_DATA状态。

RD_DATA:请求读CPLD接收状态。该状态下监测axis_rc接口信号,当出现数据传输有效时,启动握手并接受数据,然后跳转到DONE状态。

DONE:请求完成状态。该状态下使能req_ack请求响应信号,如果是读请求同时将RD_DATA状态下接收的数据发送到req_rdata请求读数据接口。一个时钟周期后回到IDLE状态。

B站已给出相关性能的视频,如想进一步了解,请搜索B站用户:专注与守望
链接:https://space.bilibili.com/585132944/dynamic?spm_id_from=333.1365.list.card_title.click

http://www.dtcms.com/a/303460.html

相关文章:

  • 机器学习基础-matplotlib
  • clock_nanosleep系统调用及示例
  • node后端-JWT认证
  • Excel VBA宏的使用
  • 大模型应用班-第3课 从Excel到大屏:AI编程实战全解析 HW3 从零到一:香港疫情数据看板开发实战指南
  • 【GoLang #4】:Go 语言 函数详述(定义调用 | 匿名函数 闭包 | defer)
  • windows clion远程连接ubuntu运行调试nginx-1.22.1版本
  • 【优先级高,先补充】基于文本增强跨模态特征交互注意网络的多模态情感分析
  • SVN与GIT的区别,分别使用与哪些管理场景?
  • 《汇编语言:基于X86处理器》第10章 结构和宏(2)
  • Linux——线程池的模拟实现
  • 解决c++静态成员编译报错:‘xxx‘ is not a member of ‘xxx‘ 问题
  • 第五届先进算法与神经网络国际学术会议(AANN 2025)
  • vue项目进首页不加载全部资源
  • 【数据结构初阶】--二叉树(三)
  • ICDC自动化部署方案概述
  • 如何规范化项目执行
  • 2024年7月19日全国青少年信息素养大赛图形化(Scratch)编程小学低年级组复赛真题+答案解析
  • KubeSphere离线部署Kubernetes集群
  • “量子通信”
  • 系统远程配置
  • 概率有限自动机定义与示例
  • 智慧社区项目开发(二)——基于 JWT 的登录验证功能实现详解
  • 吃透 lambda 表达式(匿名函数)
  • mysql详细知识点
  • python中类变量 __slots__ 解析
  • Matplotlib(三)- 图表辅助元素
  • Vue3判断对象是否为空方法
  • 飞鹤困局:增长神话的裂痕
  • 嵌软面试——通信协议