《PCI Express体系结构导读15》-- DMA读写TLP 以下均以书中的Capric卡为例,而非常见的PCIE EP:1. Alignment向前X字节对齐:HeadX(Y) = Y-(Y mod X);eg. Head4(0x1007) = 0x1004;该操作非常适合硬件实现,在硬件实现中HeadX(Y) = YnY(n-1)Y…Ym0(m-1)0(m-2)…0(1)0(0),m=log2(X),因此在硬件中只要将Y的第0~(m-1)位清0即可;向后X字节对齐:TailX(Y) = HeadX(Y)+X-1;eg. Tail4(0x1000) = 0x1003;同上,在硬件逻辑中只要将Y的第0~(m-1)位置1即可;2. DMA写操作TLPDMA写逻辑首先获得写操作的起始地址A,和长度L,然后计算出结束地址B=A+L-1(系统需要保证B的计算结果不会出现进位);eg. DMA写操作向0xFFFF_00030xFFFF_0200写数据时,长度位0x1FE,但实际上需要向0xFFFF_00000xFFFF_0203写数据,然后使用First_DW_BE和Last_DW_BE屏蔽多余字节;TLP中使用的实际长度为Head4(A)~Tail4(B)这段数据区域的长度,即M=(Tail4(B) - Head4(A) +1) 2(单位为Word),但是这两个标粗的公式使用了多个32位加法器,非常耗费FPGA内部资源,因此使用另一种算法计算M值:M’=(Head4(A1A0+L1L0+3) - Head4(A1A0)) —— 8;M=L2 + M’

相关新闻

最新新闻

面向2026:构建可持续演进、AI驱动的开发者工作流选型指南

面向2026:构建可持续演进、AI驱动的开发者工作流选型指南

1. 项目概述:为什么需要一份面向未来的AI工具选型指南?如果你是一名开发者,最近两年一定被各种AI工具轮番轰炸过。从GitHub Copilot在IDE里自动补全代码,到ChatGPT帮你写SQL查询,再到各种开源大模型可以一键部署在本地…

2026/8/26 7:15:48
从OpenClaw实践看智能体互联网:网关、部署与生态重构

从OpenClaw实践看智能体互联网:网关、部署与生态重构

1. 从“小龙虾”到“智能体”:一个看似荒诞的隐喻最近在技术社区里,一个叫“OpenClaw”的项目火了,连带一个听起来有点无厘头的词——“小龙虾”。第一次看到“小龙Claw”和“智能体互联网”放在一起时,我脑子里也冒出了问号&…

2026/8/26 7:15:48
火灾烟雾人员检测数据集与YOLOv8训练实战

火灾烟雾人员检测数据集与YOLOv8训练实战

简介:目标检测是计算机视觉领域的基础任务,其核心在于从图像中定位并识别特定对象。在火灾安防场景中,同时检测烟雾和人员具有极高的技术价值与现实需求,因为烟雾的出现往往伴随人员活动,多类别检测能显著提升系统效率…

2026/8/26 7:15:48
YOLO玉米病害识别实战:从解压数据集到部署全流程

YOLO玉米病害识别实战:从解压数据集到部署全流程

简介:目标检测是计算机视觉中的核心任务之一,YOLO凭借单次前向推理和高实时性,成为工业落地最广泛的算法之一;在智慧农业场景中,作物病害识别往往需要同时定位病斑位置与类别,因此YOLO比传统分类网络更具工…

2026/8/26 7:15:48
基于YOLO的玉米病害识别实战:数据、训练与部署全记录

基于YOLO的玉米病害识别实战:数据、训练与部署全记录

简介:目标检测技术作为计算机视觉的核心任务,在农业智能化中发挥着关键作用。通过深度学习模型对农作物图像进行实时分析,能够有效识别病害区域并精准定位。YOLO凭借速度与精度的平衡,成为此类实际项目的首选框架。围绕玉米病害识…

2026/8/26 7:15:48
CMake从入门到实战:构建系统核心原理与跨平台开发

CMake从入门到实战:构建系统核心原理与跨平台开发

搞 C/C 开发这么多年,最绕不开的工具就是 CMake。这名字起得也好——"CMake the Most of Software Development",一语双关,既是"充分利用 CMake 做开发",也是"让软件开发这件事物尽其用"。我最早接…

2026/8/26 7:10:47