xf2016的个人空间 https://blog.eetop.cn/1536195 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

uMCTL2的XPI模块实现的功能说明

已有 92 次阅读| 2025-7-4 09:09 |个人分类:sdram controller|系统分类:芯片设计| umctl2, xpi

根据uMCTL2(通用存储控制器)文档中关于 XPI模块 (AXI Port Interface) 的描述,以下是其核心功能的详细解析:


一、XPI 模块的核心作用

核心定位:XPI 是连接 AXI 总线masteruMCTL2的DDRC控制器 的关键接口模块。
核心任务:实现 协议转换(aix与hif互转)数据管理时序协调,确保 AXI 协议命令高效、正确地映射到 DDR 物理层操作。

  1. 队列管理:使用多级队列(RAQ, WAQ, RDQ, WDQ)处理地址、数据和响应,解决时钟域交叉和速率匹配问题。

  2. 数据宽度转换:支持AXI数据宽度与DDR控制器内部数据宽度之间的转换(上转换和下转换)。

  3. 读数据重排序:通过读重排序缓冲区(RRB)解决DDR控制器内部命令重排引起的读数据乱序问题。

 

二、核心功能详解

1. 协议转换与命令分解

  • AXI 转 DDRC 命令

    • 将 AXI 的       突发读写请求 转换为 uMCTL2 的 读/写命令包(HIF 格式)。

    • 关键处理逻辑

      • 地址对齐:根据 DDR Burst Length (BL2/4/8/16),拆分未对齐的 AXI 突发(例如:首包处理未对齐地址)。

      • 突发拆分:将长 AXI 突发分解为多个 DDR Burst 包(例如:AXI 长度 256 拆分为多个 BL8 包)。

      • 类型转换:支持 INCR(增量)和 WRAP(回环)两种 AXI 突发类型。

2. 地址通道管理

  • 读地址通道 (RAQ - Read Address Queue)

    • 队列机制:支持单队列或双队列(Blue/Red),深度可配置 (UMCTL2_AXI_RAQD_n)。接收AXI读地址通道信号(ARID, ARADDR, ARLEN, ARSIZE, ARBURST等),AXI突发请求拆分为多个DDR burst长度的请求(根据DDR burst长度BL2/BL4/BL8/BL16)。

    • 时钟域隔离:同步或异步 AXI 时钟到 DDRC 时钟 (core_ddrc_core_clk)。

    • 令牌生成:为每个读请求生成唯一令牌,供 DDRC 追踪数据返回路径。

if RAQ未满:

    接收AXI读请求(araddr, arlen, arsize, arburst)

    计算DDR Burst边界对齐:

    if 未对齐:

        首包拆分为"未对齐包" + 后续"对齐包"

    生成HIF命令包(token, 地址, 长度)

    推入RAQ

else:

    拉低arready # 反压AXI主设备

 

  • 写地址通道 (WAQ - Write Address Queue)

    • 类似读地址通道,独立队列管理写地址,深度可配 (UMCTL2_AXI_WAQD_n)。

    • 与读通道独立:读写请求顺序可能乱序,需软件层保证一致性(如等待响应)。

注意:读地址和写地址通道相互独立,因此读写请求的顺序可能被打乱。若需要顺序一致性,需软件层面保证(如等待响应后再发下一个请求)。

队列类型

硬件参数

功能

深度约束

RAQ(读)

UMCTL2_AXI_RAQD_n

存储读请求+时钟域转换

最小最大读outstanding  

WAQ(写)

UMCTL2_AXI_WAQD_n

存储写地址+ECC状态

写命令管道深度

双队列模式

UMCTL2_XPI_USE2RAQ_n=1

Blue/Red队列并行仲裁

减少同端口竞争

 

 

3. 数据通道处理

  • 写数据通道 (WDQ - Write Data Queue)

    • 时钟域转换:AXI 时钟 → DDRC 时钟。

    • ECC 支持

      • 若启用读改写        (RMW) 和 ECC,对子尺寸写入(如部分字节掩码)触发 RMW 操作。

      • Store-and-Forward接收AXI写数据通道信号(WID,        WDATA, WSTRB, WLAST,收集完整写数据并分析掩码后,才转发命令到 DDRC。

 

  • 读数据通道 (RDQ - Read Data Queue)

    • 存储 DDRC 返回的读数据,按 AXI 时钟返回给主机。

    • 乱序重整:通过 RRB (Read Reorder       Buffer) 解决 DDRC 内部命令重排问题。

4. 读数据乱序重整 (RRB)

  • 核心问题:DDRC 可能重排读命令以优化带宽,导致数据返回顺序与      AXI 提交顺序不一致。

  • 解决方案

    • 虚拟通道 (Virtual Channels)

      • 动态映射(默认):根据硬件参数UMCTL2_NUM_VIR_CH_n设置虚拟通道数量(最多32个)。RRB动态分配AXI        ID到虚拟通道,尽量将不同ID分配到不同通道以减少阻塞。

      • 分配策略:当新ID到来时,优先分配空闲通道;若无空闲,则使用轮询选择一个已有通道(可能导致该通道内ID的数据被阻塞直到先前数据返回)。

      • 优化建议:虚拟通道数应等于AXI ID数(若ID数不超过32)或等于CAM深度(若CAM深度不超过32)。

 

静态映射:通过寄存器 (PCFGIDMASKCHm_n, PCFGIDVALUECHm_n) 手动绑定 ID 到通道。

  • ID匹配多个通道,则选择编号最小的通道。

  • 未映射的ID处理:可配置为分配到通道0或进入旁路通道

  •      RRB_VCH.png

                    

  • §  RRB虚拟通道分配规则

 

 

    • Bypass 模式

      • 对未映射 ID 可选择直通(不排序),不经过重排序,直接返回数据,但需满足严格条件(如单 DDR 命令(不能burst拆分)、不跨 Burst 边界)。

    • 关键约束:数据宽度转换时 (UMCTL2_PORT_DW_n ≠       DDR 位宽),必须禁用 Bypass。

5. 响应生成

  • 写响应通道

    • 在 DDRC 接收完最后一拍写数据后生成 OKAY 响应, 生成写响应(BID, BRESP)并返回给AXI主机

    • 支持独占访问 (EXOKAY       表示成功)。

  • 读响应通道

    • 与读数据共用 RDQ,生成 rlast 信号标识突发结束。

    • ECC 不可纠正错误时返回 SLVERR。

XPI.png

 

6. 高级功能支持

  • 独占访问 (Exclusive Access)

    • 通过硬件监视器跟踪指定地址(数量由 UMCTL2_EXCL_ACCESS 配置)。

    • 成功独占写返回       EXOKAY,失败返回 OKAY 并屏蔽写入。

    • 跨端口监控:写操作会触发所有端口的独占地址检查。

  • 交易毒化 (Transaction Poisoning)

    • 通过       arpoison/awpoison 信号标记非法交易。

    • 读中毒:返回全零数据       + SLVERR;写中毒:屏蔽写入(等效透明操作)。

       

中毒类型

数据路径

响应信号

内存影响

读中毒

数据置零

SLVERR

执行读操作

写中毒

掩码置零

OKAY

跳过写入

 

 

  • 软件一致性保障

    • 启用       UMCTL2_RDWR_ORDERED_n 后,XPI 强制读写交替仲裁,避免同地址命令乱序。

    • UMCTL2_RDWR_ORDERED_n=1

7. 数据宽度转换

  • 自动适配机制

    • 上行转换 (AXI 位宽 < HIF 位宽):合并多拍 AXI 数据为单拍 HIF 数据。

    • 下行转换 (AXI 位宽 > HIF 位宽):拆分单拍 AXI 数据为多拍 HIF 数据。

  • 队列位宽:WDQ/RDQ 宽度始终按 AXI 与 HIF 中较大位宽 实现。

8. 配置灵活性

  • 关键硬件参数

参数

功能

UMCTL2_A_SYNC_n

AXI 时钟与 DDRC 时钟同步/异步

UMCTL2_AXI_ADDR_BOUNDARY

放宽 AXI 4K 边界限制(最高 4G)

UMCTL2_XPI_USE2RAQ_n

启用双读地址队列 (Blue/Red)

UMCTL2_NUM_VIR_CH_n

设置 RRB 虚拟通道数量(最多 32)

 

 

三、XPI 模块核心价值总结

功能维度

实现价值

协议桥接

无缝转换 AXI4 复杂突发协议 → DDRC 高效物理层命令

数据管理

通过多级队列 (RAQ/WAQ/RDQ/WDQ) 解决时钟域、位宽、乱序问题

性能优化

虚拟通道 (RRB) 最大化读并行性;双队列减少仲裁冲突

可靠性增强

ECC/RMW 保障数据完整性;独占访问/中毒机制支持安全关键操作

设计灵活性

参数化配置队列深度、通道数、时钟模式,适配不同应用场景

关键设计约束

·       AXI 突发不可跨 4K 边界(除非配置 UMCTL2_AXI_ADDR_BOUNDARY)。

·       ECC 启用但禁用 RMW 时,禁止子尺寸写入(必须全字节使能,不能mask)。

·       静态映射 RRB 模式下需严格配置 ID 路由规则。

此模块是 DDR 控制器高效对接 SoC 总线系统的核心枢纽,其设计直接影响系统吞吐率、延迟及数据一致性。

 



点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 5

    周排名
  • 1

    月排名
  • 10

    总排名
  • 0

    关注
  • 2

    粉丝
  • 1

    好友
  • 4

    获赞
  • 1

    评论
  • 21

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-7-5 14:49 , Processed in 0.021544 second(s), 8 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部