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

axi 4k边界检测

在AXI4协议中,一个突发传输(burst transfer)不能跨越4KB的边界,为啥呢,因为我们认为每个slave设备通常是4KB对齐的,为了避免一次burst的传输可能越过目的slave这个风险,所以就定了这个规矩
更深的说,确保数据传输和缓存操作遵循4K边界对齐可以提高系统性能,减少缓存一致性问题,并简化内存管理。这是因为许多缓存系统是基于缓存行进行操作的,如果数据跨越了缓存行边界,可能需要额外的处理来确保数据的一致性。
1、AXI4的4K边界指的是地址,还是数据量,比如一组DDR有两片16bit位宽DDR芯片,这时候4K边界应该怎么算?
AXI4的4K边界指的是地址,而不是数据量。4K边界是指地址的低12位全为0的地址点,这是因为系统通常定义一个页面(page)的大小为4KBytes。
对于一组DDR内存,如果有两片16位宽的DDR芯片,计算4K边界还是基于整个DDR内存的物理地址空间来考虑,而不是单个芯片的位宽或容量。一组两片DDR芯片是并行的,所以它们在逻辑上应该被视为一个连续的地址空间。
每个DDR芯片的地址空间中的4K边界地址点是由其物理地址决定的,而不是由芯片的位宽决定的。换句话说,无论数据总线宽度是多少,4K边界始终是由地址的低12位决定的。

2、不跨4K边界如何理解?
假设如果我们有一个起始地址0x00010000,那么4K边界地址将是0x00010000(低12位为000000000000),0x00020000,0x00030000等,这些都是4K对齐的地址点。
在进行突发传输时,我们必须确保起始地址和结束地址都在同一个4K页面内。
判断原则就是:
Start_Address / 4096 == (Start_address + (burst_size * burst_length)) / 4096
代码可以这样写:
wire assert_valid_transaction = start_ar_addr[ MSB : 12 ] == end_ar_addr[ MSB : 12 ];

http://www.rkmt.cn/news/11599.html

相关文章:

  • GOSIM 开源出海工作坊:给开源创业者的忠告
  • 一文搞懂Flex弹性布局空间分配规则
  • “小身材的大心脏”——HT-AD3PS-1+ 在成都恒利泰的射频江湖里到底做了什么?
  • AT_agc012_c [AGC012C] Tautonym Puzzle 题目分析
  • 详细介绍:回调函数与错误处理
  • .NET操作Word/WPS打造专业文档 - 页面设置与打印控制完全指南
  • NORDIC蓝牙6.0新品NRF54L15多协议超低功耗高性能BLE芯片 - 动能世纪
  • 快速入门HarmonyOS应用开发(三) - 教程
  • Docker + IDEA 一键部署! - 实践
  • Manim实现涟漪扩散特效
  • Xcode 26.0.1 (17A400) 发布 - Apple 平台 IDE
  • CNN+MNIST - 实践
  • 微算法科技(NASDAQ: MLGO)利用高级 Blowfish 加密标准实现区块链集成信息共享
  • Docker常用命令速查
  • 深入解析:gpt-4o+deepseek+R生成热力图表
  • PostgreSQL 的索引Ooracle、Mysql索引的类型对比和说明
  • Docker打包CMake项目镜像操作步骤
  • 【智慧】 gym104385
  • __repr__魔术方法
  • 合合信息获首批“个人信息保护合规审计自审计能力评价”最高等级认证
  • 微云二手车运营版系统:多端覆盖的二手车平台解决方案
  • Linux常见命令1
  • Unigine整合Myra UI Library全纪录(1)
  • ABAP 调用HTTP上传附件中文乱码
  • PDF入参以及模板对应签章图踩坑点 JAR版本为 iText5
  • 雷达系统杂波设计与仿真
  • 国标GB28181视频平台EasyCVR一体化加油站安防视频监控方案与实践
  • JavaScript 沙箱
  • 深入 Spring Boot 异常处理底层机制 - 指南
  • MyBatisPlus 会默认设置 mybatis 的 scanPackages 为当前 BeanFactory 的 auto-configuration 的 base packages