Zynq7000系列FPGA中的DDRI和DDRC

在AXI接口设计中,主端口(Master Port)和从端口(Slave Port)的交互是通过仲裁器(Arbiter)来管理的,以确保多个主设备能够有序地访问共享资源(如DDR内存)。这个过程中,每个AXI主端口都与仲裁器中的一个从端口相关联,并且采用了多种机制来确保数据的有效传输和顺序性。

命令FIFO和RAM的作用

  • 命令FIFO:位于每个从端口内部,用于存储AXI命令中的地址、长度和ID信息。这是处理命令的起点,确保命令能够按顺序被处理和转发。
  • 写端口RAM:用于存储写数据和字节使能信息。这些数据随后会被发送到DDR控制器进行实际写入操作。
  • 读端口RAM:用于存储从核心(Core)返回的读数据。由于读数据可能会乱序到达,这个RAM还承担了数据重排序的功能,以确保数据能够按照AXI规范的要求,以接收命令的顺序返回给主设备。

命令处理和仲裁

当AXI主设备发送命令时,该命令首先被存储在命令FIFO中。一旦在写端口或读端口检测到有效的命令,就会检查命令中的长度字段,并计算出与此命令相关联的请求数量。逻辑电路向仲裁逻辑发送仲裁请求。仲裁逻辑会查看来自所有端口的请求,并一次只向一个端口授予访问权限(grant)。

数据传输

  • 当写端口获得仲裁器的授权后,它会生成写地址、写数据指针,并断言命令有效。然后,写数据会被发送到DDR控制器进行存储。
  • 当读端口获得授权后,它会生成读地址、读命令长度和读令牌,并断言命令有效。随后,它会等待来自核心的读数据,并使用关联的ID将数据导向正确的读端口。

由于读数据可能会乱序到达,读端口RAM负责将这些数据按照它们被请求的顺序重新排序,以确保它们能够按照AXI规范的要求返回给主设备。

DDRI的方框图

AXI 在与DDR接口(DDRI)交互时,具有一系列特定的支持特性和限制。以下是针对AXI端口到DDRI的支持和不支持的功能列表:

DDRI支持的特性

  • 子宽度命令支持:支持字节(Byte)、半字(Half-word)和字(Word)的子宽度命令。这意味着AXI接口可以处理不同数据宽度的传输,增加了灵活性。

  • Sparse AXI写传输支持:支持稀疏AXI写传输,即可以在任何数据节拍中随机地断言/去断言选通信号(strobes)。这允许在写操作中跳过某些数据位,适用于需要精细控制数据写入场景的应用。

  • 非对齐传输支持:支持非对齐的传输。非对齐传输是指传输的起始地址不是数据宽度(如32位、64位等)的整数倍。这种支持使得AXI接口可以处理各种复杂的内存访问模式。

DDRI不支持的特性

  • 不支持固定突发类型的传输:如果AXI端口接收到固定突发类型的传输,其行为将是未知的。这要求使用AXI接口时,必须遵循非固定突发类型的传输规则。

  • EXCL访问限制:EXCL(Exclusive Access)访问仅支持在单个DDR端口上进行,不支持跨DDR端口的EXCL访问。EXCL访问通常用于需要原子操作的场景,但在此配置下,它仅限于单个DDR端口内部。

  • AWPROT/ARPROT特定位忽略:AWPROT/ARPROT[1]位用于支持TrustZone功能,但AWPROT/ARPROT[0]和AWPROT/ARPROT[2]位被忽略,没有任何效果。这意味着在AXI接口中,关于保护或权限的某些细节可能不会被完全利用或执行。

  • ARCACHE/AWCACHE缓存支持忽略:ARCACHE[3:0]/AWCACHE[3:0](缓存支持)字段被忽略,没有任何效果。这意味着AXI接口在处理缓存相关的事务时,不会根据这些字段来优化其行为或遵循特定的缓存一致性协议。

这些特性和限制是AXI接口与DDRI交互时需要考虑的重要因素。了解并遵守这些规则,可以确保AXI接口的正确运行和高效数据传输。在设计基于AXI的系统时,需要根据实际应用场景和需求,合理选择支持的特性和处理不支持的特性所带来的影响。

TrustZone 配置

TrustZone 是 ARM 架构中的一个安全功能,它允许将硬件和软件资源划分为安全区域和非安全区域,从而增强系统的安全性。在DDR 内存配置中,这种分区机制被应用于 DDR 内存中,允许将 DDR 内存划分为 64 MB 的区块,每个区块都可以被配置为安全区域或非安全区域。

通过系统级控制寄存器来配置 DDR 内存的每个区块是安全还是非安全的。这种配置提供了对内存访问权限的细粒度控制。

  • 配置位为0:表示该内存区块是安全的。这意味着只有被授权为安全访问的组件(如安全世界中的操作系统、应用等)才能访问该区域。
  • 配置位为1:表示该内存区块是非安全的。非安全世界中的组件(如标准操作系统、应用等)可以访问这些区域,但安全世界中的组件通常无法直接访问它们。

访问控制

如果非安全世界的组件尝试访问被标记为安全的内存区域,将触发一个安全违规。作为响应,系统会向发起请求的主设备返回一个 DECERR(解码错误)响应。

在写操作中,如果尝试将数据写入安全区域而违反了 TrustZone 规则,那么写数据将在发送到控制器之前被屏蔽掉,从而确保数据不会被实际写入到 DRAM 中。

在读操作中,如果尝试从安全区域读取数据而违反了 TrustZone 规则,那么返回的读数据将全部为零。这是一种防止敏感信息泄露到非安全世界中的安全措施。

TrustZone 提供了硬件级别的安全隔离,使得敏感数据和操作可以在一个受保护的环境中执行,而不会影响到非安全区域。这种机制在需要高安全性的应用中尤为重要,如移动支付、数字版权管理、生物识别身份验证等。通过合理配置 DDR 内存的 TrustZone 分区,系统设计师可以确保关键数据和操作的安全性,同时保持非安全区域的灵活性和效率。

DDRC

DDRC管理着待处理的读写事务队列,并通过一个调度器来处理这些队列中的事务,最终将下一个事务发送到DDR的PHY(Physical Layer)层进行实际的内存访问。这种设计确保了DDR内存的访问是有序且高效的。

DDRC内部包含了多个队列,用于存放等待处理的读写事务。这些队列是FIFO(先进先出)队列,保证了事务的按序处理。

调度器负责从队列中取出(pop off)下一个待处理的事务,并根据一定的调度策略(如优先级、轮询等)确定哪个事务应该被发送到DDR PHY进行执行。调度器的设计对于确保系统性能和公平性至关重要。

在DDRI(DDR Interface)和DDRC之间,存在仲裁逻辑(Arbitration Logic)。这个仲裁逻辑的主要作用是决定在多个可能同时请求访问DDR内存的事务中,哪个事务应该被优先发送到DDRC进行处理。仲裁逻辑可以基于多种因素来做出决策,如事务的优先级、请求的紧急程度、系统的负载状况等。

DDRC的工作流程

  1. 事务发起:当CPU或其他主设备需要访问DDR内存时,它会向DDRI发起一个读写事务请求。

  2. 事务排队:DDRI接收到事务请求后,会将其放入相应的队列中等待处理。

  3. 仲裁决策:仲裁逻辑会根据当前的系统状态和事务的属性,决定哪个事务应该被优先处理。

  4. 事务调度:被选中的事务会被调度器从队列中取出,并准备发送到DDR PHY进行执行。

  5. DDR访问:DDR PHY层接收到事务后,会控制DDR内存的实际访问操作,包括地址的选择、数据的读写等。

  6. 结果反馈:DDR访问完成后,结果会被返回给发起事务的主设备。

通过这种设计,DDRC能够有效地管理DDR内存的访问请求,确保系统的稳定性和性能。仲裁逻辑和调度器的存在使得DDR内存的访问能够按照预定的策略和优先级进行,从而优化了系统的整体表现。

DDRC的方框图

在DDR控制器(DDRC)中,地址映射是一个关键功能,它负责将处理系统(PS)和可编程逻辑(PL)AXI主设备使用的字节可寻址物理地址转换为DDR的Row、Bank和Column地址。这种地址映射具有一定的可配置性,允许用户根据特定的数据访问模式进行优化,以减少页面和行切换的开销,从而提高DDR的利用率。

地址映射的可配置性受到限制,主要是因为不是所有可能的地址重映射组合都是可用的,特别是完全的Bank-Row-Column映射组合可能不可行。地址映射器通过选择AXI地址位来映射到每个适用的DRAM地址位,从而将线性请求地址与DRAM地址相关联。

DDRC的映射规则

  • AXI地址位到DRAM地址位的映射:地址映射器通过选择AXI地址中的特定位来映射到DRAM地址的相应位。这种映射关系是通过配置DDRC中的特定寄存器来实现的。

  • 寄存器向量:每个DRAM Row、Bank和Column地址位都与一个寄存器向量相关联,用于确定该地址位在DDRC的DRAM_addr_map_bank、DRAM_addr_map_row和DRAM_addr_map_col寄存器中的AXI源。

  • 地址计算:相关的AXI地址位是通过将给定寄存器的内部基址与为该寄存器编程的值相加来确定的。这种计算确保了AXI地址可以正确地映射到DRAM地址上

如下公式所示:

[internal base] + [register value] = [AXI address bit number]

reg_ddrc_addrmap_col_b3寄存器为例,这个寄存器负责确定DRAM列地址的第4位的映射,并且它的内部基址是6。当整个数据总线处于使用状态时,DRAM列地址的第4位将由以下决定:

[internal base] + [register value]
如果reg_ddrc_addmap_col_b3寄存器被编程为2,则AXI地址位为:
6 + 2 = 8

换句话说,发送到DRAM的列地址位4被映射到AXI地址位*_ADDR[8]。在半总线宽度模式(包括ECC)下,所有列位左移一位。在这种情况下,reg_ddrc_addmap_col_b2确定DRAM列地址位4的映射。在全总线宽度的情况下,reg_ddrc_addmap_col_b3确定DRAM列地址4。

  • 在半总线宽度模式下,所有的列地址位都会向左移动一位(即左移一位操作),这包括ECC(错误检查和纠正)位(如果系统支持ECC的话)。这种操作是为了适应某些特定的DRAM接口或优化数据访问模式。reg_ddrc_addrmap_col_b2 寄存器决定了DRAM列地址位4的映射。但是,由于是在半总线宽度模式下,实际上这个寄存器可能对应的是外部地址信号中经过左移一位处理后的某个位。具体来说,如果外部地址信号中的某一位(比如原本是第3位)在经过左移一位后对应于DRAM内部的列地址位4,那么reg_ddrc_addrmap_col_b2 就是这个映射关系的配置点。
  • 在全总线宽度模式下,地址映射更为直接,不需要进行额外的左移操作。这意味着外部提供的地址信号直接映射到DRAM内部的相应地址位上。reg_ddrc_addrmap_col_b3 寄存器在全总线宽度模式下决定了DRAM列地址位4的映射。这里,没有左移操作,所以reg_ddrc_addrmap_col_b3 直接对应于外部地址信号中的第4位(假设地址是从0开始编号的)。

这两种模式的主要区别在于地址映射时是否需要进行左移操作。半总线宽度模式需要左移一位以适应特定的接口或优化,而全总线宽度模式则直接映射,无需额外操作。这种灵活性允许DDR控制器根据具体的硬件设计或性能需求来选择合适的模式。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++20中的constinit说明符

constinit说明符断言(assert)变量具有静态初始化,即零初始化和常量初始化(zero initialization and constant initialization),否则程序格式不正确(program is ill-formed)。 constinit说明符声明具有静态或线程存储持续时间(thread storage duration)的…

捷配笔记-PCB阻焊颜色对产品有什么影响?

阻焊层也称为阻焊层或阻焊剂。它是一种薄的聚合物层,应用于(PCB)。阻焊层的目的是保护PCB表面,并有助于防止焊桥。焊桥是两个导体之间的无意连接,通常是由于存在一小块焊料。需要注意的是,阻焊层被视为其单…

书生大模型实战营--L0关卡-Linux

一、SSH登录并完成nvidia-smi查看显卡以及安装pip install gradio4.29.0 二、完成vscode连接远程服务器 三、运行http://127.0.0.1:7860/

HTML表格表单及框架标签

一.表格标签 1.<table></table> 创建表格 2.<caption></caption> 表格的标题 3.<tr></tr>Table Row&#xff08;表格行&#xff09; 4.<td></td>Table Data&#xff08;表格数据&#xff09;其中有属性rowspan"2&quo…

单点触摸屏和多点触摸屏介绍以及原理简略

单点和多点触摸屏技术是现代触摸设备的基础&#xff0c;下述简单解释这两种技术及其差异。 单点触摸屏 单点触摸屏只能在某一时刻检测一个触摸点的位置。这种触摸屏适用于简单的触摸交互&#xff0c;如点击和拖动。 工作原理 单点触摸屏主要通过以下几种技术实现&#xff1…

SQL server 练习题2

课后作业 作业 1&#xff1a;自己查找方法&#xff0c;将 homework_1.xls 文件数据导入到 SQLServer 的 homework 数据库中。数据导入完成后&#xff0c;把表名统一改为&#xff1a;外卖表 如下所示&#xff1a; 作业 2&#xff1a;找出所有在 2020 年 5 月 1 日至 5 月 31 …

【Redis从0到1进阶】Redis 持久化

笔记内容来自B站博主《遇见狂神说》&#xff1a;Redis视频链接 Redis 是内存数据库&#xff0c;如果不将内存中的数据库状态保存到磁盘&#xff0c;那么一旦服务器进程退出&#xff0c;服务器中的数据库状态也会消失。所有Redis 提供了持久化功能&#xff01; 一、RDB&#xff…

【256 Days】我的创作纪念日

目录 &#x1f33c;01 机缘 &#x1f33c;02 收获 &#x1f33c;03 日常 &#x1f33c;04 成就 &#x1f33c;05 憧憬 最近收到官方来信&#xff0c; 突然发现&#xff0c;不知不觉间&#xff0c;距离发布的第一篇博客已过256天&#xff0c;这期间我经历了春秋招、毕业答辩…

AV1 编码标准熵编码技术概述

AV1熵编码 AV1编码技术是一种开源的视频编解码标准&#xff0c;由开放媒体联盟&#xff08;AOMedia&#xff09;开发&#xff0c;旨在提供高效的视频压缩&#xff0c;同时避免复杂的专利授权问题。在熵编码方面&#xff0c;AV1采用了一种多符号上下文自适应算术编码技术&#x…

在 PostgreSQL 里如何实现数据的实时监控和性能瓶颈的快速定位?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 在 PostgreSQL 里如何实现数据的实时监控和性能瓶颈的快速定位一、数据实时监控的重要性二、PostgreSQ…

数据库:基本操作

SQL struct query language 关系型数据库 非关系 芒果db ddl data defination language 建表 dml 新增 修改 删除一行 data modifty dql 查询 data query language 查询 select 数据库 sun solaris gnu 1、分类&#xff1a; 大型 中型 …

MySQL学习记录 —— 이십 常用工具包

文章目录 1、总览2、mysqlcheck - 表维护程序1、作用2、注意事项3、语法4、命令选项下面每块都大致有这四个部分 3、Mysqldump - 数据库备份程序4、mysqladmin - MySQL 服务器管理程序5、mysqlshow - 显示数据库、表和列信息6、mysqldumpslow - 总结慢查询日志文件7、mysqlbinl…

内存ECC基础纠错算法有哪些?

3.1 基础纠错算法 3.1.1 SECDED纠错算法 SECDED&#xff08;Single Error Correction Double Error Detection&#xff09;是一种经典的ECC方案&#xff0c;能够纠正单比特错误并检测出双比特错误。在图4(a)中&#xff0c;展示了SECDED的编码过程。在这个过程中&#xff0c;使…

STM32之八:IIC通信协议

目录 1. IIC协议简介 1.1 主从模式 1.2 2根通信线 2. IIC协议时序 2.1 起始条件和终止条件 2.2 发送一个字节 2.3 接收一个字节 2.4 应答信号 1. IIC协议简介 IIC协议是一个半双工、同步、一主多从、多主多从的串行通用数据总线。该通信模式需要2根线&#xff1a;SCL、…

mysql(5.5)启动服务和环境配置

正常启动 参考&#xff1a;Javaweb基础之mysql回溯笔记(一) 总的来说就是在mysql的安装目录下&#xff0c;找到bin下面的msyqld.exe&#xff0c;双击即启动了mysql服务&#xff1b; 启动方式二 也可以直接找到windows的服务项进行启动&#xff0c;操作如下&#xff1a; 打开…

opencascade AIS_InteractiveContext源码学习8 trihedron display attributes

AIS_InteractiveContext 前言 交互上下文&#xff08;Interactive Context&#xff09;允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是&#xff0c;对于已经被交互上下文识别的交互对象&#xff0c;必须使用上下文方法进行…

MySQL集群、Redis集群、RabbitMQ集群

一、MySQL集群 1、集群原理 MySQL-MMM 是 Master-Master Replication Manager for MySQL&#xff08;mysql 主主复制管理器&#xff09;的简称。脚本&#xff09;。MMM 基于 MySQL Replication 做的扩展架构&#xff0c;主要用来监控 mysql 主主复制并做失败转移。其原理是将真…

linux高级编程(网络)(www,http,URL)

数据的封包和拆包 封包&#xff1a; 应用层数据&#xff08;例如HTTP请求&#xff09;被传递给传输层。传输层&#xff08;TCP&#xff09;在数据前添加TCP头部&#xff08;包含端口号、序列号等&#xff09;。网络层&#xff08;IP&#xff09;在TCP段前添加IP头部&#xff…

解读InnoDB数据库索引页与数据行的紧密关联

目录 一、快速走进索引页结构 &#xff08;一&#xff09;整体展示说明 &#xff08;二&#xff09;内容说明 File Header&#xff08;文件头部&#xff09; Page Header&#xff08;页面头部&#xff09; Infimum Supremum&#xff08;最小记录和最大记录&#xff09; …

多模态大模型 - MM1

1. 摘要 本文主要通过分析模型结构和数据选择讨论如何构建一个好的多模态大模型&#xff08;MLLM&#xff09;&#xff0c;并同时提出了MM1模型&#xff0c;包括30B dense版本和64B的MoE版本。 具体贡献&#xff1a; 模型层面&#xff1a;影响效果的重要性排序为&#xff1a;…