关于DWC OTG2.0中PFC的理解

在DWC OTG2.0 Controller手册中,有一章节专门介绍了PFC,Packet FIFO Controller。其内部分为共享FIFO(shared FIFO)以及专用FIFO(Dedicated FIFO),并针对dev和host两种模式,并且还要对周期传输数据的FIFO和非周期数据传输的FIFO进行了不同的解读,还是挺复杂的。以下为总结。

复杂的原因无外乎要功耗低、要面积开销小。

首先,PFC模块针对的是收发数据的FIFO。当otg设置为host模式,仅有发送out数据的时候才能使用它,这里的host out数据包括四种传输形式的传输:bulk out、control out、intr out以及isoc out传输。当otg设置为dev模式时,dev模式永远是个被动的模式,只有主机发起IN操作时,例如bulk in,dev才会将数据搬到FIFO中发送出去(当主机发起out操作时,dev只是接收)。

这些FIFO都是store-and-forward,即发送数据前必须保证所有数据已经在FIFO里了,MAC层才会去取数据。不能边存边取。有一种情况比较特殊,对于专用FIFO手册里说对于高带宽的周期IN端点,在保证FIFO中至少有一个包的数据时,可以发送数据,此时可以边发送第一个数据包,边存储第二个数据包,可以不完全等待数据全部存完再发送。这里说的”高带宽的周期IN端点“,没有具体说明是什么,但根据下图中TxFNum的定义可知,可以将intr in端点作为大容量


 其次,对周期传输数据的FIFO,也就是intr和isoc传输,其dev和host下为:

dev:

对于shared FIFO,每个周期端点都会有一个FIFO,并且其在生成RTL的时候已经确定好了(也就是在新思的coreConsult中进行配置,具体参数为OTG_NUM_PERIO_EPS。注意,这个参数只在shared FIFO中使用,当使用专用FIFO时,即OTG_EN_DED_TX_FIFO=1时,这个参数无效,为0)。当使用shared FIFO发送数据时,具体使用多少个,取决于每个端点的TxFNum参数。例如,当端点1有很多数据要发送,则可以在编程的时候,对DIEPCTL1.TxFNum进行设置。本来一个周期IN端点对应一个FIFO,但是端点1把其它周期IN端点的FIFO也给用了,这应该就是shared FIFO的含义。

 另外需注意,dev模式下第一个周期FIFO复用了host模式下的周期FIFO。下图为shared FIFO的示意图。

对于Dedicated FIFO,在dev模式下,FIFO的数量取决于参数OTG_NUM_IN_EPS,该参数说明最大的专用FIFO数量是多少个。在专用FIFO模式下,没有周期FIFO和非周期FIFO之分,使能的in端点对应一个指定的FIFO,且需要在编程的时候设置FIFO深度(当时看例程的时候没看懂,现在知道为什么要设置了,但是不知道设置多少深度合适)。

下图为专用FIFO示意图。

 另外需注意,dev模式下与host的FIFO也有复用的情况。

host:

对于host来说,shared FIFO情况较为简单,只需要一个周期FIFO,便可以存储所有收发给周期端点的数据。且该FIFO只需配置一个周期request队列。

手册中没写host的dedicated FIFO。


再次,对非周期传输数据的FIFO,也就是control和bulk传输,其dev和host下为:

对于shared FIFO来说,dev和host用一个非周期FIFO来存取数据,FIFO旁挂在一个request队列。

对于dedicated FIFO来说,host模式下与shared FIFO一致;在dev模式下,无周期和非周期之分,FIFO的数量取决于参数OTG_NUM_IN_EPS,使能的in端点对应一个指定的FIFO。


最后,对于接收FIFO,一个接收FIFO存储所有的dev out端点的数据,或者存储所有的host in传输的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国内AI翘楚,看看有没有你心动的offer?

科技创新争占高地,AI领域各显神通。从一战成名的阿尔法狗到引起轩然大波的ChatGPT,我们早已卷入了一场没有硝烟的革命。前方世人看到的科技日新日异、岁月静好,后方是各大企业的绞尽脑汁、争先恐后。人工智能时代,AI是挡不住的时代…

学习mysql记录

环境: macbookpro m1 1. 安装mysql 使用苹果自带的包管理工具brew进行安装 1. brew install mysql (安装) 2. brew services start mysql (启动mysql服务) 1.1 如果提示zsh: mysql command not found, 终端执行以下命令 1. cd ~ (切到根目录) 2. vi .bash_profile (进入编辑…

QxOrm 如何自定义主键?

默认情况下QxOrm的主键是long类型自增的,但是有时候我们不想使用这个主键,想使用比如string类型的主键。 可以使用QX_REGISTER_PRIMARY_KEY宏定义另一种类型(例如,QString 类型)的唯一 id(主键&#xff09…

1.5 常用DCC软件

一、DCC软件的定义 所谓DCC,就是Digital Content Creation的缩写,即数字内容创作。DCC的范围包括二维/三维、音频/视频编辑合成、动态/互动内容创作、图像编辑等。 二、常用建模软件 3DS MAX 擅长:硬表面建模、静态物体建模。(国…

视频相似度对比 python opencv sift flann

提取SIFT特征的代码,返回关键点kp及特征描述符des def SIFT(frame):# 创建SIFT特征提取器sift cv2.xfeatures2d.SIFT_create()# 提取SIFT特征kp, des sift.detectAndCompute(frame, None)return kp, des 这行代码是使用SIFT(Scale-Invariant Feature…

扔掉sql语句,用 QxOrm 让你的数据库操作从来没有这么简单过!

ORM简介: ORM 全称是 Object Relational Mapping(对象关系映射),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟…

基于ssm人事管理信息系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本人事管理信息系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…

JPA与MySQL锁实战

前言:最近使用jpa和mysql时,遇到了死锁问题。在解决后将一些排查过程中新学到和复习到的知识点再总结整理一下。首先对InnoDB中锁相关的概念进行介绍,然后展示如何利用JPA提供的排他锁来实现想要的功能,最后对死锁问题进行讨论。 …

rocketMQ介绍

作用 流量削峰系统解耦 功能 普通消息 同步消息异步消息事务消息顺序消息延迟消息订阅与发布消息过滤消息消费重试死信队列...... 架构设计 1个broker是1台实例每个broker都有从节点,便于做故障转移每个broker对应一个文件,存储数据?还是…

PPOCRv3检测模型和识别模型的训练和推理

PPOCRv3检测模型和识别模型的训练和推理 文章目录 PPOCRv3检测模型和识别模型的训练和推理前言一、环境安装1,官方推荐环境:2,本机GPU环境 二、Conda虚拟环境1.Win10安装Anaconda32.使用conda创建虚拟环境 三、安装PPOCR环境1,安装…

数据可视化免费化的双面影响探析

近年来数据可视化的免费化也越来越明显,今天就以我作为可视化设计师的经验来和大家分析一下,数据可视化工具免费化所带来的利与弊。 先从好处入手,最明显的就是免费化可以让数据可视化工具得到更广泛的使用。 免费数据可视化工具使得更多人可…

生命在于折腾——使用PD打开OVA格式虚拟机

一、前言 下载了一个封装的工具箱虚拟机,格式是OVA的,PD无法直接打开,之前成功转换后打开过,但那时候没有记录,今天记录一下。 二、过程 有两种方法 1、去vmware官网下载工具VMware OVF Tool 地址:htt…

代码随想录算法训练营第四十二天 _ 动态规划_01背包问题、416.分割等和子集。

学习目标: 动态规划五部曲: ① 确定dp[i]的含义 ② 求递推公式 ③ dp数组如何初始化 ④ 确定遍历顺序 ⑤ 打印递归数组 ---- 调试 引用自代码随想录! 60天训练营打卡计划! 学习内容: 二维数组处理01背包问题 听起来…

大屏图表汇总echarts圆环

圆环效果示例 代码如下 storageStaChart() {let color [#009976,#15E6B5]let charts echarts.init(document.getElementById(storageStaChart));let option this.getPieOption(color);charts.setOption(option, true);}, getPieOption(color) {let data [];data.push({val…

Java高级技术-单元测试

单元测试 Junit单元测试框架 Junit单元测试-快速入门 方法类 测试类 Junit框架的基本注解

[Geek Challenge 2023] web题解

文章目录 EzHttpunsignn00b_Uploadeasy_phpEzRceezpythonezrfi EzHttp 按照提示POST传参 发现密码错误 F12找到hint,提示./robots.txt 访问一下,得到密码 然后就是http请求的基础知识 抓包修改 最后就是 我们直接添加请求头O2TAKUXX: GiveMeFlag 得到…

FPGA高端项目:UltraScale GTH + SDI 视频编解码,SDI无缓存回环输出,提供2套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的 GT 高速接口解决方案我目前已有的SDI编解码方案 3、详细设计方案设计框图3G-SDI摄像头LMH0384均衡EQUltraScale GTH 的SDI模式应用UltraScale GTH 基本结构参考时钟的选择和分配UltraScale GTH 发送和接收处理流程UltraScale…

kali linux使用Proxmark3

其实kali linux下已经集成了Proxmark3命令,但是由于Proxmark3是开源设备,有时候系统默认安装的版本并不能很好的使用,因此需要手动编译最新的版本。 step 1 准备Proxmark3编译环境,因为kali linux比较激进,很多老旧的…

这书看着贼得劲儿

作者呕心沥血2年,再出力作~~~ 给大家推荐一本好玩的书 神经网络与TensorFlow 本来以为出版了第一本书,应该对于漫长的审核有免疫力了,结果又被这本书折磨了2年。于是作者痛定思痛,决定第三本书写一本纯科普的书籍。 墙裂推荐 这…

电力智慧运维系统

电力智慧运维系统是以提高用户侧电力运行安全,降低运维成本为目标;采用智能化运维管理工具—“电易云”,帮助企业建立电力运维体系全方位的信息化、数字化平台,实现设备运行的数字化在线监控与线下维护处理的有机融合,…