ZYNQ学习笔记(PS相关)

  • 创建嵌入式工程时,没有用到FPGA,那么就不需要生成bit流。FPGA是作为一个ARM CPU外设存在的。

  • ZYNQ的架构如下图所示,白色底的部分为PS部分,灰色底部分为PL。PS可以通过EMIO(部分外设可以)与PL通信及ZYNQ的引脚,也可以通过MIO连接到ZYNQ的引脚。
    在这里插入图片描述

  • APU是PS部分的核心,包括双核处理器等

  • central interconnect:内部互联资源

  • Flash memory interface:存储器接口

  • DDR2/3 LPDDR2 Controller:符合和ZYNQ片外的DDR存储芯片进行通信,ARM就是运行在外部存储芯片的。除此之外,存储芯片也可以用来存储数据。我们用的是MT41J256M16 RE-125,位宽是16位。

  • I/O peripherals:包含了一些常用的IP,如uart连接串口设备、gpio连接通用IO

  • MIO:共计54bit,[15:0]属于bank0,[53:16]属于bank1.以uart为例,我们用到的是48,49这两个MIO,具体在设置时选哪个MIO需要和PCB原理图对应。ARM不同bank的电平标准不同,可能是3.3V/1.8V要注意在MIO Configuration中修改。

  • 配置好PS之后进行如下操作

  • 1.在这里插入图片描述

  • 2.一般默认让vivado自动更新顶层
    在这里插入图片描述

  • 3.若不含FPGA则不包含bit流
    在这里插入图片描述

  • 生成的SDK文件夹内容如下,对hdf进行解压
    在这里插入图片描述

  • 启动SDK

  • 在这里插入图片描述

  • 编译完成后右键点击工程文件,若只有软件则run as 1

  • 若有PL则需要先配置PL,点击xilinx-》program FPGA,之后重复上面步骤。
    在这里插入图片描述

在这里插入图片描述

  • 在ZYNQ7000中,bank500和501(501/502共计54个)包含PS部分的MIO,502包括PS的DDR控制器

  • MIO(multiuse IO)对应共计54个引脚,但是PS部分的示意图中,IO外设和存储器接口都需要通过MIO和外部发生联系所需引脚数量多于54,因此需要用到功能复用。用户可以通过软件编程控制MIO来确定为哪一个外设提供引脚使用。即MIO(multiuse IO)将来自PS外设和静态存储器访问的多路复用到PS的引脚上,起到了多路复用的作用。

  • GPIO是PS的外设,用于对器件的引脚进行观测(输入)或控制(输出)、中断。软件通过一组**存储映射(memory map)**的寄存器来控制GPIO。一个GPIO也是通过多个一组寄存器控制的。

  • GPIO被分成4bank。如下所示,0123分别有32/22/32/32个寄存器。图中可见MIO有54个引脚。bank01通过MIO连接到PS引脚,bank23通过EMIO(extendable multiuse IO)连接到PL部分(既可以使用PL的引脚又可以和模块通信)。EMIOGPIOI是输入,EMIOGPIOO是输出,EMIOGPIOTN输出使能
    在这里插入图片描述
    在这里插入图片描述

  • 对于MIO

    • GPIO通过DATA_RO寄存器实现input功能(特殊地,DATA_RO可以在输出时反应当前GPIO引脚的状态,向其写入会被忽略)
    • 在GPIO被配置为输出时,通过DATA寄存器(32bit)控制输出数值。读该寄存器会返回上次输出的数据。每次操作该寄存器时会同时对32位进行操作。先读32bit,再修改其中的部分位,最后将32bit写回。
    • MASK_DATA_M/LSW:改变DATA寄存器中的高/低字部分(一个字16bit),MASK对应bit为高则对应的DATA寄存器bit被屏蔽,无法对其进行修改。
    • 通过DIRM(direction mode控制IO作为输入还是输出,由于读IO总能反映引脚状态因此实际上控制的是输出的使能与否,1为输出)和OEN(output enable,1为使能,若为0则该引脚是3state由外围电路控制其状态)实现输出使能。类似32单片机,我们通过库函数完成对寄存器的读写,完成外设的功能。
    • MIO[8:7]在系统复位过程中作为Vmode引脚(作为固定的输入),用于配置MIO bank的电压;复位结束后,只能作为输出信号。
    • 向GPIO写数据的方法:在这里插入图片描述
      在这里插入图片描述
  • EMIO是PL和PS的接口,但是也并不是所有PS的外设都可以连接到EMIO,见下表。在这里插入图片描述

  • EMIO和MIO的区别:

    • MIO 的输入不受OEN影响,可通过读取DATA_RO的值获取(当DIRM为0表示其为输入)
    • EMIO连接到PL,输出不支持3state,不受OEN影响。EMIO输出只取决于DATA、MASK_DATA_LSW,MASK_DATA_MSW。MIRM设置为1,标志着为输出。
    • 输出使能OEN也连接到了PL部分,OEN和O可以在PL部分组合起来使用。这一点有助于I2C接口使用,即一个GPIO可以被配置为三态的。
  • 对ZYNQ的process system重新配置后需要点击source中的图Generate output products;若先前设置了自动更新例化wrapper,那就不用要手动更新;PS端引脚不需要分配,PL端的需要手动分配;最后重新生成hardware。

  • 什么是软核?在ZYNQ中,AXI4-GPIO是一个32位的soft IP(软核,ZYNQ本身不存在这样的电路,是用PL部分逻辑资源搭建的GPIO),提供GPIO到AXI总线。在ZYNQ中PS的外设中也有GPIO,他是硬核的GPIO,有一个实实在在的硬件电路。

  • PL和PS之间存在多种交互方式,并且速度较快,若无法解决高速通信就和ARM+FPGA的设计没有区别了。

    • 功能接口:EMIO、中断、DMA、debug等
    • 配置接口:AXI_ACP、AXI_HP、AXI_GP
      在这里插入图片描述
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arist9612

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值