ZYNQ地址分配问题

转自:https://blog.csdn.net/weixin_30481087/article/details/97656924

首先给出一篇很好的文章:

Zynq构建SoC系统深度学习笔记-05-PL读写DDR3

http://www.eefocus.com/antaur/blog/17-08/423773_0818c.html

这个博主的一系列文章写的很好,本文是在阅读了他的博客后,才下定决心查阅相关文档进一步去研究这个问题


下面给出自己的理解:

一、SoC地址空间分配(查看UG585)

在UG585的第4章第1节给出了ZYNQ的地址分配,如下图所示:

image

从上图可以看到:总的地址空间为4G(32bits地址总线)

1、从0地址开始的1G为DDR与256KB的OCM空间,注意OCM的分配较为复杂,

后续会介绍

2、从0x4000_0000开始的1G为M_GP0的空间

3、从0x8000_0000开始的1G为M_GP1的空间

4、从E000_0000开始的为USB、SPI、IIC、ETH这些外设的空间

5、然后从FFFC_0000开始的256KB中分配给OCM(OCM分配方式有两种,后面会说到)。

6、剩余的较少用,以此类推


二、ZYNQ中主机、从机、连接

在vivado中打开processing system IP可以看到:

image

1、外设有两组:IO Peripheral为一组,flash memory为一组。同一组的共用一个地址空间。

2、接口有四种:M_GP,S_GP,S_HP,S_ACP

3、内部互联有:Central Interconnect、Programmable Logic to Memory Interconnect、

OCM Interconnect

4、HP接口有四个,但是从Programmable Logic to Memory Interconnect出来到DDR Controller的接口只有两个。查阅文档可以知道HP0和HP2共用1个,HP1和HP3共用1个

5、只有PS/PL接口通过内部的互联有通路到的外设或者存储,都可以通过这个接口访问

比如OCM接口可以有四种访问方式:

image

a:M_GP->Central Interconnect-> OCM Interconnect->OCM

b: HP->Programmable Logic to Memory Interconnect->OCM Interconnect->OCM

c: ACP->SCU->OCM Interconnect->OCM

d: CPU->SCU->OCM Interconnect->OCM


三、Vivado中的address editor地址分配
1、建立实例工程:确定主机、从机与连接

image

添加dma和自定义master IP核:红色圈出的为主机、黑色圈出的为PL中的从设备

image

使能IO外设、QSPI:黑色圈出的为PS中的从设备
image

使能OCM

总共有3个主设备,分别为:dma、my_master、ps

总共有5个从设备,分别为:DDR、IOP、QSPI、OCM、AXI_GPIO

AXI_BRAM_CONTROLLER


确定接口:

image

两个主机都连接到S_GP口


2、进行地址分配地址分配

如下图所示:进行地址分配时会以主机分组,因此有3组,根据主机是否有对应的连接到从机,从而决定从机是否在这个组里

image

地址分配时需要注意的事项

1、当prossing system作为主机时,也就是CPU使用M_GP作为主机时,地址分配界面是不会出现DDR、IOP、OCM的。这是因为在zynq中M_GP没有相应的内部连接到这些设备。M_GP是连接到PL的设备的。工程使用M_GP0,因此这些设备的地址是从0x4000_0000开始。

2、使能S_GP口,可以看到DDR、IOP、QSPI、OCM可以相应的主机访问被定义地址

3、多个主机可以连接到同一个从设备,访问同一地址空间,使用interconnect进行交换

4、一个主机可以访问多个从设备,从设备的地址不能一样

5、同一主机对同一从设备的访问不能通过不同的接口,比如dma同时使用GP和HP访问DDR,会产生冲突

6、系统中作为从设备的任意两个它们的地址都不能一样,不管其主机是否相同。一个从设备只有 一个地址,是根据zynq地址空间直接统一编址的。比如,不管使用DDR被什么主机使用什么接口访问,其地址都是0x0000_0000-0x3FFF_FFFF。

7、如果主机不需要访问某个从设备,可以使用Exclude Segment功能,如下图所示,详细请看UG994的chapter 3.

image

8、常见的地址分配错误

image


四、可以直接运行程序的存储设备

image


五、关于OCM的地址分配

详细请看UG585的OCM这一章

image

通过不同的设置来修改OCM的地址分配



六、参考资料

1、UG585-Zynq-7000 All Programmable SoC
Technical Reference Manual

2、UG994-Vivado Design Suite User Guide
Designing IP Subsystems Using IP Integrator

3、http://www.eefocus.com/antaur/blog/17-08/423773_0818c.html

转载于:https://www.cnblogs.com/Ariza123/p/9086026.html

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书是使用Zynq MPSoC的开发人员的实用指南,同样也是希望熟悉器件及其相关设计方法的技术人员的有效参考。 Zynq MPSoC(多处理器片上系统)是Xilinx公司推出的第二代SoC系列产品,集成了复杂的处理系统,包括ARM Cortex-A53应用程序处理器和ARM Cortex-R5实时处理器,以及FPGA可编程逻辑。 来自苏格兰斯特拉斯克莱德大学(University of Strathclyde)的Louise Crockett团队基于这一平台的软件和硬件结构,撰写了Exploring Zynq MPSoC: With PYNQ and Machine Learning Applications,综合且全面地介绍了软件堆栈、多处理器处理系统以及可编程硬件阵列等问题。 程序员可以学会如何使用简单的软件界面和框架来快速实现他们的机器学习算法,系统设计师可以利用它来获取系统的最高性能。 内容导读 器件的架构 与Zynq7000相比,Zynq MPSoC 进一步整合了处理器系统中可选择的处理器数量和性能,最多可配备四个ARM Cortex-A53处理器内核和两个ARM Cortex-R5实时处理器内核。此外,该架构进一步拓展了可编程逻辑门阵列中的DSP切片和分布式存储器的规模。在开发当今新兴的AI应用程序时,全新的MPSoC架构将实现繁琐的算术计算和数据移动的过程变得十分轻松有趣。 设计工具和方法 SoC系统将包括硬件设计和软件设计两个方面。硬件设计会映射到SoC设备上的FPGA逻辑资源,而软件则运行在一个或多个系统内部署的处理器上。在此设计流程中,硬件和软件开发可以在很大程度上独立进行,然后整合。工程师使用他们选择的工具生成硬件系统的元素,并使用Xilinx Vivado开发环境实现系统集成和实现目标设备。软件开发人员可以使用Xilinx软件开发工具包(SDK)进行开发。这是传统的软硬件协同设计方法。 Xilinx的SDx开发环境则是一种更高级的开发方式。在Xilinx SDx工具中可以完全使用软件代码对整个系统进行描述,然后对各种计算进行资源分配(在用户指导下)。这使得面向软件的软硬件协同设计已经发生了相当大的转变。本书的第4章中更详细地讨论了关于SDx设计方法。 更先进的应用实现 本书还讨论了Zynq上许多应用程序的实现,包括FINN-R开源框架的有效性神经网络的实现、基于Python的Zynq设备框架和机器学习应用程序。我们可以预见到一些基于Zynq的更为优秀的产品,包括高级驾驶员辅助系统(ADAS),计算机视觉,“大数据”分析等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值