ZYNQ系列的实用奇葩操作(4)--PS-PL互联之从外设角度理解AXI总线

 先回忆下上两章讲的C语言底层在CPU里的实现,仔细理解地址+数据在CPU里的实现方式。

    回忆虽然美好,但回忆的目的是让未来的路越走越宽。继续拥抱未来吧。

    我们把一颗处理器分成负责算逻辑处理和算术运算的CPU(同之前章节,这里的CPU指的是ARM内核)和负责实现具体功能的外设部分。内核只是一颗处理器的一部分,同一个内核不同的厂家加上不同的外设可以做成不同的处理器,就像LPC4357和STM32F407都是基于coretx-M4内核,但是是两个完全不同的处理器。

     如下图是ZYNQ里串口外设的功能框图。PS AXI Interconnect就是上一章节讲过的Central Interconnect,CPU通过它来访问和控制串口这个外设。

图片

    ZYNQ里有很多这种类似的外设。那么多外设,CPU怎么分的清谁谁谁?聪明的你肯定想到了靠地址来区分。

    就像LINUX将所有东西当成文件处理,CPU将所有挂载的外设、内存等都按照地址+数据的方式处理。每一个挂载的外设或内存都有独立的地址及占用空间,它们之间不能重叠。

   当然了CPU地址不是无限的,32位CPU理论上可访问空间是2^32 = 4GB。分配地址的时候不要搞得像东拼西凑的PDD货,看下ZYNQ里面给CPU做的memory map。

图片

  从上图可以看出来,CPU预分配的DDR内存地址是1GB,也就是说PS端的DDR控制器支持的最大内存是1GB,你原理图上给个4GB的DDR除了拉动GDP外没其它作用。

图片

  啥?我堂堂A9还是double只配使用1GB内存?这就涉及到深入理解文章了,CPU反正都是地址+数据的AXI总线,走哪不是走,我走M_AXI_GP接口扩展一个内存不可以吗?小伙子,你这BUG卡的很到位,学到了ZYNQ异构SOC的精髓。ZYNQ可以通过FPGA实现DDR控制器来扩展内存,就像下面这样,mig_7series_0是PL端实现的DDR控制器,PS通过AXI_GP接口扩展了1GB的内存。

    

图片

  VIVADO里可以直观的看出给M_AXI_GP接口分配的AXI总线地址:

图片

  本章讲了CPU和外设的关系,外设在CPU里的地址映射,核心还是CPU处理外设都是通过地址+数据总线的方式。下一章开始实战C映射到FPGA。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值