zedboard如何从PL端控制DDR读写(四)

2024-04-09 15:32
文章标签 读写 控制 ddr pl zedboard

本文主要是介绍zedboard如何从PL端控制DDR读写(四),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PS-PL之间的AXI 接口分为三种:
• 通用 AXI(General Purpose AXI) — 一条 32 位数据总线,适合 PL 和 PS 之间的中低速通信。接口是透传的不带缓冲。总共有四个通用接口:两个 PS 做主机,另两个 PL 做主机。
• 加速器一致性端口(Accelerator Coherency Port) — 在 PL 和 APU 内的 SCU之间的单个异步连接,总线宽度为 64 位。这个端口用来实现 APU cache 和 PL的单元之间的一致性。PL 是做主机的。
• 高性能端口(High Performance Ports) — 四个高性能 AXI 接口,带有 FIFO缓冲来提供 “ 批量 ” 读写操作,并支持 PL 和 PS 中的存储器单元的高速率通信。数据宽度是 32 或 64 位,在所有四个接口中 PL 都是做主机的。

即:

从VIVADO的配置中,我们可以看出DDR控制器是通过四个AXI HP连接到PL端的。

再去查阅UG585,里面有一段话是这么说的:

  The four AXI_HP interfaces are multiplexed down, in pairs, and are connected to ports 2 and 3 as
shown in Figure 10-2. These ports are commonly configured for high bandwidth traffic. The path
from these four interfaces to the DDR include two ports on the DDR memory port arbiter. The
interconnect switch arbitrates back-and-forth between each of the two ports. Read and write
channels operate separately. 

大致意思就是说四路HP总线通过M2连接到了片上存储器(貌似是256KB的SRAM,这个与我们现在要做的工作无关,在这里提一嘴是因为后来涉及到对DDR寻址的时候,有一部分地址是连到了这个OCM的,这一部分地址对我们暂时没用,需要避开),另外这四路总线的0和1又通过M0连到了DDR的S3端口,2和3通过M1连到了DDR的S2端口。一般推荐的方法是,同时使用HP0和HP2(或者HP1和HP3),总之就是要使用分离的通道来操作DDR,以获取较高的性能。

 

  从上图我们也可以看到,每个 AXI_HP 接口里都有用做读写通信的 FIFO 缓冲器。在某些 Xilinx 文档中,AXI_HP接口也被叫做 AXI FIFO 接口 (AFI),来表明它们的缓冲能力。AXI_HP 接口的特性包括:
    • 32 或 64 位数据主机接口,每个端口可以独立编程。
    • 对于未对齐的 32 位传输,可以自动扩展传输尺寸从 32 位到 64 位。
    • 写命令的可编程的阈值。
    • 对于所有的 PL-PS 接口的异步时钟频率跨域。
    • 读写 FIFO。
    • 命令和通信数据 FIFO 填充程度计数是 PL 可见的。


本文转自:http://www.cnblogs.com/christsong/p/5686151.html

 

这篇关于zedboard如何从PL端控制DDR读写(四)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/888533

相关文章

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC

Python实现高效地读写大型文件

《Python实现高效地读写大型文件》Python如何读写的是大型文件,有没有什么方法来提高效率呢,这篇文章就来和大家聊聊如何在Python中高效地读写大型文件,需要的可以了解下... 目录一、逐行读取大型文件二、分块读取大型文件三、使用 mmap 模块进行内存映射文件操作(适用于大文件)四、使用 pand

C# 读写ini文件操作实现

《C#读写ini文件操作实现》本文主要介绍了C#读写ini文件操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、INI文件结构二、读取INI文件中的数据在C#应用程序中,常将INI文件作为配置文件,用于存储应用程序的

C#实现文件读写到SQLite数据库

《C#实现文件读写到SQLite数据库》这篇文章主要为大家详细介绍了使用C#将文件读写到SQLite数据库的几种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录1. 使用 BLOB 存储文件2. 存储文件路径3. 分块存储文件《文件读写到SQLite数据库China编程的方法》博客中,介绍了文

Python实现局域网远程控制电脑

《Python实现局域网远程控制电脑》这篇文章主要为大家详细介绍了如何利用Python编写一个工具,可以实现远程控制局域网电脑关机,重启,注销等功能,感兴趣的小伙伴可以参考一下... 目录1.简介2. 运行效果3. 1.0版本相关源码服务端server.py客户端client.py4. 2.0版本相关源码1

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

10. 文件的读写

10.1 文本文件 操作文件三大类: ofstream:写操作ifstream:读操作fstream:读写操作 打开方式解释ios::in为了读文件而打开文件ios::out为了写文件而打开文件,如果当前文件存在则清空当前文件在写入ios::app追加方式写文件ios::trunc如果文件存在先删除,在创建ios::ate打开文件之后令读写位置移至文件尾端ios::binary二进制方式

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

控制反转 的种类

之前对控制反转的定义和解释都不是很清晰。最近翻书发现在《Pro Spring 5》(免费电子版在文章最后)有一段非常不错的解释。记录一下,有道翻译贴出来方便查看。如有请直接跳过中文,看后面的原文。 控制反转的类型 控制反转的类型您可能想知道为什么有两种类型的IoC,以及为什么这些类型被进一步划分为不同的实现。这个问题似乎没有明确的答案;当然,不同的类型提供了一定程度的灵活性,但