ZYNQ详细设计之VIVADO相关操作

2 篇文章 0 订阅
1 篇文章 0 订阅
本文介绍了ZYNQ的双核ARM和FPGA架构,包括四种开发方式:纯PS、纯PL、PS+PL(不跑OS)和PS+PL(跑OS)。详细讲解了ZYNQ的启动设置,如启动模式和上电时序。接着阐述了如何在Vivado中创建ZYNQ工程,创建BlockDesign,以及PS端的APU、内存接口和I/O外围设备的特性。最后提到了DDR设置和外设MIO配置,并指出ZYNQ在Vivado的基本设置完成后,可在SDK中进行更深入的设计与下载流程。
摘要由CSDN通过智能技术生成

目录

一、对ZYNQ的认识

1.1 ZYNQ的开发方式

1.2 ZYNQ的启动设置

二、创建ZYNQ工程

2.1 创建工程

2.2 创建Boclk Design 图形化设计

三、ZYNQ ps端相关描述

3.1、应用程序处理单元(APU)

3.2、内存接口

3.3、输入输出外围设备

四、ZYNQ processing system详细介绍        

4.1 输入时钟设置

4.2 PS端DDR设置

4.3 外设MIO设置


一、对ZYNQ的认识

1.1 ZYNQ的开发方式

        ZYNQ中包含了两个部分,双核的arm和FPGA。根据XILINX提供的手册,arm模块被称为PS,而FPGA模块被称为PL。PL 和 PS 两部分的供电电路是独立的,这样 PS 或 PL 部分不被使用的话就可以被断电。

        ZYNQ内部包含PS和PL两部分,ZYNQ开发有一下四种方式:

A:纯PS开发

        PS中包含2个ARM Cortex-9的内核,一些基本的外设扩展口以及Memory接口。PS中包含以下4个主要功能模块:

Application processor unit (APU)

Memory interfaces

I/O peripherals (IOP)

Interconnect

        PS开发有两种方式:即传统的arm的方式和xilinx方法(这个是生成一个elf文件,这个elf文件包括了硬件配置信息(xmp)和裸跑程序(c文件))。

B:纯PL开发

        PL即FPGA,这个和一般的xilinx的FPGA没有很大的区别。

C:PS+PL(不跑操作系统)开发

        生成elf文件包括了硬件配置信息(xmp)和裸跑程序(c文件),还有一个.bit文件。

D:PS+PL(跑操作系统)开发

        这个就需要BOOT.BIN,设备树,linux内核镜像,文件系统了。

        其中BOOT.BIN是由3部分组成的(boot.elf, .bit, fsbl.elf),boot.elf这个是由交叉编译环境产生的,相当于ssbl,.bit文件是PL使用文件,fsbl.elf这个是fsbl。

1.2 ZYNQ的启动设置

        ZYNQ 支持 JTAG 启动模式、NOR BOOT 模式、NAND FLASH 启动模式、QSPI 启动模式、SD 卡启动模式。 可以根据我们的硬件来选择对应的启动模式。(部分硬件不支持)

        上电需要满足PS_POR_B应该一直保持低电平,并在PS_SRST_B引脚拉高2us后拉高,如上电时序图1.2-1所示。很多上电异常的情况应该排查电源的启动顺序是否满足要求。

1.2-1 上电时序图

二、创建ZYNQ工程

2.1 创建工程

        打开vivado,选择create project创建工程。

        在该窗口中输入工程名和需要保存的路径(英文路径),然后一直next。

        在该窗口中选择使用的FPGA型号,根据开发板类型选择的是xc7z015clg485-2。

2.2 创建Block Design 图形化设计

        选择Create Block Design,输入设计名。

        选择中间或者工具栏+,搜索ZYNQ,选择ZYNQ 7 Processing system添加IP,根据自己设计需求可以双击ZYNQ对其进行参数设计和更改;

三、ZYNQ ps端相关描述

3.1、应用程序处理单元(APU)

         应用程序处理器单元(APU)提供了广泛的高性能特性和符合标准的功能。

两个 ARM Cortex™-A9 处理器和ARM v7:

  1. 运行时选项允许单处理器、非对称(AMP)或对称多处理(SMP)配置
  2. ARM 7 ISA版本:标准的ARM指令集和Thumb®-2, Jazelle® RCT and Jazelle DBX Java™加速
  3. NEON™128b SIMD协处理器和VFPv3/MPCore
  4. 32 KB指令和32 KB数据L1缓存,每个MPCore具有奇偶校验
  5. 512 KB的可共享L2缓存
  6. 个人计时器和监督计时器

系统功能

  1. 系统级控制寄存器(SLCRs):
  2. Snoop控制单元(SCU),以保持L1和L2的一致性
  3. 从PL(主)到PS(从)的加速器一致性端口(ACP)
  4. 64b AXI从机端口
  5. 可以访问L2和OCM
  6. 事务处理是与L1和L2缓存相一致的数据
  7. 256 KB的片上SRAM(OCM)与奇偶校验
  8. 双端口
  9. 可通过cpu、PL和中央互联系统接入
  10. 在L2级别,但不可缓存
  11. DMA控制器
  12. PS的四个通道内存复制到系统中的任何内存
  13. PL的四个通道(内存到PL,PL到内存)
  14. 通用中断控制器(GIC)
  15. 单个中断掩码和中断优先级
  16. 个CPU私有外围设备中断(PPI)
  17. 16个CPu专用软件生成的中断(SGI)
  18. 从系统的其他部分、PS和PL分发共享的外围中断(SPI) - 20从PL
  19. 等待中断(WFI)和等待从CPU发送到PL的事件(WFE)信号
  20. 增强的安全功能,以支持TrustZone™技术
  21. 看门狗计时器,三重计数器/计时器

3.2、内存接口

        多种功能的内存接口。

DDR控制器

  1. 支持DDR3、DDR3L、DDR2、LPDDR-2
  2. 速率由设备的速度和温度等级决定
  3. 16位或者32位位宽
  4. ECC只支持16位
  5. 使用73个专用的PS引脚
  6. 模块(无DIMMs)
  7. 32位位宽:4*8b,2*16b,1*32b
  8. 16位位宽:2*8b,1*16b
  9. 基于可编程空闲时段的自主DDR断电进出
  10. 数据读频自动校准
  11. 对每个数据节拍都支持写入数据字节
  12. 使用低延迟的HPR队列的读取机制
  13. 每个端口发送特殊的紧急信号
  14. 信任区域可编程在64 MB边界
  15. 对每个端口的两个不同ID的独占访问(不支持锁定的事务)

DDR控制器核心和事务调度程序

  1. 进行事务调度是为了优化数据带宽和延迟
  2. 先进的重新排序引擎,最大化内存访问效率,目标是90%的效率与连续读写和80%的效率与随机读写
  3. 刷新写缓冲区的写读地址冲突检查
  4. 服从AXI订购规则

QSPI控制器

        线性QSPI控制器(它可以作为一个主要的引导设备)的主要特点是:

  1. 单个或两个
  2. 支持*1或*2读
  3. 32位APB 3.0接口的I/O模式,允许完整的设备操作,包括程序,读取和配置
  4. 32位AXI线性地址映射接口的读取操作
  5. 支持单个设备选择线路
  6. 4位双向输入输出信号
  7. 读速度x1、x2和x4
  8. 写速度x1和x4
  9. 主模式下的最大QSPI时钟为100 MHz
  10. 252字节的输入FIFO深度,以提高QSPI的读取效率
  11. 支持在I/O和线性模式下支持高达128 Mb密度的QSPI设备。仅支持>128Mb设备。
  12. 支持双QSPI的两个QSPI设备并行

        此外,线性地址映射模式的特点包括:

  1. 支持通过AXI接口进行常规的只读内存访问
  2. 最多有两个SPI闪存
  3. 在线性模式下,一个内存高达16 MB寻址空间,两个内存高达32 MB寻址空间
  4. AXI读取验收能力为4
  5. AXI递增和包装地址突发读取
  6. 自动将正常的内存读取操作转换为SPI协议,反之亦然
  7. 串行、双行和QSPI模式

静态存储器控制器(SMC)

        以下任一个都可以是主引导设备:

  1. NAND控制器
  2. 8/16位I/O宽度/一个芯片选择信号
  3. ONFI规范1.0
  4. 16读数据和16写数据fifo
  5. 8位命令FIFO
  6. 可编程输入输出循环定时
  7. ECC辅助
  8. 异步内存工作模式
  9. 并行SRAM/NOR控制器
  10. 8位数据总线
  11. 一个芯片选择最多有25个地址信号(32 MB)
  12. (32 MB + 32 MB) 两个芯片选择最多25个地址信号(32 MB + 32 MB)
  13. 16读数据和16写数据fifo
  14. 8位命令fifo
  15. 每个芯片选择的可编程I/O周期定时
  16. 异步内存工作模式

3.3、输入输出外围设备

        I/O外围设备(IOP)是用于外部数据通信的行业标准接口的集合。

        注意:控制器寄存器需要单个32位的读/写访问,不使用字节、半字或双字引用。

GPIO

  1. 通过MIO的设备引脚最多54 GPIO信号
  2. 输出具有3-状态能力
  3. 在PS和PL之间通过EMIO发出192个GPIO信号
  4. 64个输入,128个输出(64个真输出和64个输出启用)
  5. 每个GPIO的功能可以在个人或组的基础上动态编程
  6. 启用、位或bank数据写入、输出启用和方向控制
  7. 基于个别GPIO的可编程中断
  8. 原始中断和屏蔽中断的状态读取
  9. 上升沿下降沿,任何边沿,高电平,低电平敏感度

千兆以太网控制器(两个)

  1. RGMII接口使用MIO引脚和外部PHY
  2. 使用PL选择iO和外部PHY与附加软IP的附加接口
  3. SGMII接口使用PL GTP或GTX收发器
  4. 内置有散射聚集的DMA
  5. IEEE 802.3-2008
  6. 唤醒能力

USB控制器:每个作为主机、设备或OTG(两个)

  1. USB 2.0高速运行(OTG)双角色USB主机控制器或USB设备控制器操作使用相同的硬件
  2. 仅限MIO引脚(7x010设备中有一个USB控制器)
  3. 内置DMA
  4. USB 2.0高速设备
  5. USB 2.0高速主机控制器
  6. USB主机控制器寄存器和数据结构与EHCI兼容
  7. 直接支持USB收发器低针接口(ULPI)。ULPI模块支持8位
  8. 需要外部PHY
  9. 最多支持12个端点

SD/SDIO控制器(两个)

  1. 可引导的SD卡模式(可选项)
  2. 内置DMA
  3. 仅支持主机模式
  4. 支持SD规范的2.0版本
  5. 支持全速和低速
  6. 支持1位和4位数据接口
  7. 低速时钟0-400 kHz
  8. 支持高速接口
  9. 全速时钟0-50 MHz,最大吞吐量为25 MB/s
  10. 支持内存、I/O和组合板卡
  11. 支持电源控制模式
  12. 支持中断
  13. 1KB数据FIFO接口

SPI控制器(两个):主或从

  1. 四线:MOSI、MISO、SCLK、SS
  2. 全双工操作提供同步接收和传输
  3. 主模式
  4. 手动或自动启动数据传输
  5. 手动或自动从属选择(SS)模式
  6. 最多支持三个从属选择线(3个从设备?)
  7. 允许使用外部外围设备选择3到8解码
  8. 可编程延迟的数据传输
  9. 从模式
  10. 可编程启动检测模式
  11. 多主(多个主机)环境
  12. 如果未启用,驱动器将进入3个状态
  13. 如果检测到多个主节点,则标识错误条件
  14. 通过MIO支持最大50 MHz最大外部SPI时钟速率
  15. 最大25 MHz通过EMIO到PL选择IO引脚
  16. 可选择的主时钟参考
  17. 可编程主波特率除数
  18. 支持128字节读和128字节写fifo
  19. 每个FIFO都是8位宽的
  20. 可编程FIFO阈值
  21. 支持可编程时钟相位和极性
  22. 支持手动或自动启动的数据传输
  23. 软件可以轮询状态或功能作为中断驱动
  24. 生成可编程中断

CAN控制器(两个)

  1. 符合ISO 11898 -1、CAN 2.0A和CAN 2.0B标准
  2. 同时支持标准(11位标识符)和扩展(29位标识符)帧
  3. 支持高达1个Mb/s的比特率
  4. 传输具有64条消息深度的消息FIFO
  5. 通过一个高优先级的传输缓冲区进行传输优先级划分
  6. 支持TxFIFO和RxFIFO的水印中断
  7. 正常模式下错误或仲裁损失自动重新传输
  8. 接收深度为64条消息的消息FIFO
  9. 四个验收过滤器的验收过滤器
  10. 睡眠模式与自动唤醒
  11. Snoop 模式
  12. 诊断应用程序的环回模式
  13. 可隐藏的错误和状态中断
  14. 针对接收消息的16位时间戳
  15. 可读错误计数器

UART控制器(两个)

  1. 可编程波特率发生器
  2. 64字节的接收和传输fifo
  3. 6、7、8数据位
  4. 1、1.5或2个停止位
  5. 奇数,偶数,空,标记,或者校验
  6. 奇偶性、帧化和溢出错误检测
  7. 断线线的产生和检测
  8. 自动回波模式、本地环回模式和远程环回通道模式
  9. 中断生成
  10. Rx和Tx信号在MIO和EMIO接口上
  11. 调制解调器控制信号: CTS、RTS、DSR、DTR、RI和DCD可在EMIO接口上使用

I2C 控制器(两个)

  1. 支持16字节FIFO
  2. I2C总线规范版本2
  3. 可编程的正常和快速总线数据速率
  4. 主模式
  5. 写传输
  6. 读传输
  7. 扩展地址支持
  8. 支持慢处理器服务
  9. 支持到中断标志,以避免停止状态
  10. 从站监视器模式
  11. 从模式
  12. 从传输
  13. 从接受
  14. 支持扩展地址
  15. 完全可编程的从属响应地址
  16. 支持保持,以防止溢出的情况
  17. 支持到中断标志,以避免停止状态
  18. 软件可以轮询的状态或功能作为中断驱动的设备
  19. 可编程中断生成

PS MIO I/Os

        PS MIO I/O缓冲器被分成两个电压域。在每个域内,每个MIO都是独立可编程的。

  1. 两个输入输出电压bank
  2. Bank 0的电压由引脚0到15组成
  3. Bank 1的电压由引脚16到53组成
  4. MIO电压可以为每个bank编程
  5. 1.8、2.5/3.3 V
  6. CMOS单端或HSTL差分接收机模式

四、ZYNQ processing system详细介绍        

        FPGA使用的是 Xilinx 公司的 Zynq70015 系列的芯片,型号xc7z015clg485-2。 芯片的 PS 系统集成了两个 ARM Cortex™-A9 处理器,AMBA®互连,内部存储器,外部存 储器接口和外设。这些外设主要包括 USB 总线接口,以太网接口(ENET),SDI/SDO 接口,I2C 总线接口,CAN 总线接口,UART 接口,GPIO 等。PS 可以独立运行并在上电或复位下启动。 ZYNQ 芯片的总体框图如图所示。

        PS块的接口与相关外设

1、PS部分的MIO是固定的,但可以选择连接到其上的不同外设,这就类似于典型MCU的“GPIO复用”;

2、PS模块具有2个连接到引脚的MIO bank和2个连接到PL端的EMIO bank;

3、PS端可以通过PS-PL端时钟生成器、AXI主从端口、DMA等端口连接PL端 。

4.1 输入时钟设置

        Input frequency 的时钟,根据输入设置,本次设置是33.333333M(默认设置)。

        DDR时钟设置默认即可。

        CPU运行时钟设置默认,不同速度等级的CPU所支持的ARM最高频率也不一样,根据需求决定。

        QSPI的时钟设置125M,MIO中选择了QSPI后即可更改时钟,设置其他时钟频率可能无法加载FLASH。

4.2 PS端DDR设置

        对DDR进行设置,根据硬件DDR3所使用的类型、时钟、位宽、突发长度等进行相关设置。

        DDR  Controller  Configuration(DDR相关控制配置):

Memory type(DDR类型):可选用DDR2或者DDR3,根据硬件设计选择DDR3;

Memory Part(DDR型号):根据硬件设计选择型号MT41K256M16RE-125

Effective DRAM Bus Width(数据总线位宽):可选位宽16 bit 和32bit,根据硬件设计(使用两片DDR)选择总线位宽32 bit;

ECC:错误纠正码,只支持16位的有效数据宽度;

Burst Length:突发长度,可选4个或者8个,默认选择8个;

DDR:内存时钟频率。允许的频率范围是(200.000000:534.000000)MHz

Internal Vref:内部电压参考源。禁止使用外部Vref引脚作为电压参考。

Juntion Temperature(C):预期工作温度范围。控制DDR刷新间隔。

Memory Part Configuration(内存部分配置):这部分不可选择,默认即可。

Training/Board Details

        DRAM Training:

                Write leveling启用写电平校准,调整相对于DDR时钟的写DQS。

                Read gate:使能读取门校准,调整有效的RD DQS窗口。

                Read data eye:启用读取数据眼校准,将读取DQ调整到读取DQ的中心。

        DQS to Clock Delay(ns)DQS时钟延迟[0](ns)。时钟路径延迟减去DQS路径延迟。

        Board Delay(ns):字节通道0的中间数据(DDR_DQ, DDR_DM)跟踪延迟与时钟(DDR_CK, DR_CK_N)跟踪延迟的平均值。

4.3 外设MIO设置

        可以通过Peripheral I/O Pins或MIO Configuration(如下图)中可以查看和配置I/O管脚。Zynq-7000器件的PS部分有超过20种可选的外设,设计者可以将这些外设直接与专用的复用I/O相连,通常称为MIO;也可以使用扩展的复用I/O,通常称为EMIO。

        通过设置 Quad  SPI  Flash和SD0/1来选择启动模式。

        加入一个串口设置。

        加入一个以太网设置。

        在配置完成后可以返回设计看看选用的配置是否都满足需求了,满足需求后点击右下角OK即完成配置。

        由于没用到其他PL端的IP可直接自动连线,也可以手动连线(熟练后建议手动)。

        连接完成后可以将一些需要用到的外设接口引出去,完成后进行验证(圈红处),验证完成后就可以将图形化设计进行打包输出。

接口说明:

    M_AXI_GP0_ACLK:M_AXI_GP0的时钟信号,可以将PS端的时钟提供给PL端使用

    DDR:内存控制器输入/输出总线端口

    FIXED_IO:PS连接外部IO的端口

    M_AXI_GP0:PS与PL进行片上通信的AXI总线端口

    FCLK_CLK0:PS部分的FCLK时钟端口

    FCLK_RESET0_N:PS提供给PL的FPGA硬件复位端口

        先将设计打包输出,然后在生成产生顶层的HDL文件,通过查看源码的层次结构和顶层文件可以看到调用了CPU。

        可以添加代码来实现led灯的控制;

begin
        if(!RSTn_i)
        begin
                C0  <= 32'd0;
                LED_o   <= 4'b1;
        end
        else 
        begin
                if(C0 == 32'd50_000_000)
                begin
                        C0  <= 32'd0;
                        if(LED_o == 4'b1000)
                                LED_o   <= 4'b1;
                        else
                                LED_o   <= LED_o << 1;
                end
                else
                begin
                        C0  <= C0 + 32'd1;
                        LED_o   <= LED_o;
                end
        end
end

       

        关于ZYNQ在VIVADO中的基本设置已完成,关于SDK详细的设计与下载流程可在下篇文章中进行阅读和了解,欢迎大家交流与指教。

  • 5
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值