zoukankan      html  css  js  c++  java
  • 嵌入式开发之zynq——赛灵思的一款两a9加一fpga芯片的开发板

      没办法,回家入职新公司,做通信的,用到这款zynq加ad9163射频架构的开发版,要我做驱动,这可是初次接触zynq,带fpga的集成芯片,心里还是有点惊喜和忧愁,忧愁怎么最快啃下这个硬骨头,好吧上网搜资料咯!

    (1)平台简介

    (2)软件架构

    (3)硬件架构

    (4)开发环境:vivado

    (1)平台简介

    ZYNQ系列是赛灵思公司(Xilinx)推出的行业第一个可扩展处理平台,旨在为视频监视、汽车驾驶员辅助以及工厂自动化等高端嵌入式应用提供所需的处理与计算性能水平。该系列四款新型器件得到了工具和IP 提供商生态系统的支持,将完整的 ARM® Cortex™-A9 MPCore 处理器片上系统 (SoC) 与 28nm 低功耗可编程逻辑紧密集成在一起,可以帮助系统架构师和嵌入式软件开发人员扩展、定制、优化系统,并实现系统级的差异化。

    图中的Processing System(一般简称为PS)即为处理器(ARM Cortex A9 MPCore)部分,里面资源非常的丰富,具体可参看Xilinx官方文档。Programmable Logic(一般简称为PL)即可编程部分(FPGA),该部分的资源随SoC芯片级别高低不同而不同,最低的是Artix-7(Zynq-7010和Zynq-7020),最高的是Kintex-7(Zynq-7030和Zynq-7045)。当然,后续可能SoC中的FPGA会使用更高的Virtex系列,这个就不得而知了。

    PS和PL的关系:

    PS的实质就是一个ARM Cortex A9 MPcore,所以如果我们不使用可编程部分,我们完全可以只使用PS部分。也就是说,对于ZYNQ芯片,PS部分可以完全独立使用,不依赖PL部分。

    PL部分的实质是Xilinx FPGA。在ZYNQ中,我们可以把PL看成是PS的另一个具有可重配置特点的“外设”,它可以作为PS部分的一个从设备,受ARM处理器控制。比如ARM(PS)的串口数量不够时,以太网接口不够时,或者需要视频接口时都可以用PL部分扩展。当然我们也可以把PL部分看成一个不受ARM处理器控制,与ARM处理器对等的主设备,主动完成与外部芯片、接口的数据交互。更甚至PL部分也可以作为整个系统的主设备,主动从APU部分的存储器中获取、存储数据,并可控制ARM处理器的运算。所以,理论上PL部分也可以像PS部分那样独立运行。但限制是必须使用JTAG接口对PL部分进行配置。如果没有JTAG接口,就无法独立运行,因为ZYNQ的PS部分和PL部分都必须依靠PS来完成芯片的初始化配置。

    随着嵌入式系统越来越复杂,功能越来越强大,往往在设计中既需要非常灵活的FPGA,又需要处理器去做一些控制,以及配合操作系统使用。传统的方法是使用一个FPGA芯片和一个处理器芯片,比如FPGA+ARM这种模式。不过在这种模式中,FPGA和ARM之间的通信往往会成为系统的瓶颈。但在ZYNQ7000中,将FPGA和ARM集成在一个芯片内部,两者之间的通信使用AXI_HP、AXI_GP、AXI_ACP三种接口通信,带宽可达吉比特,基本上不会存在二者通信带宽不足的问题。当然,传统上也有在FPGA上实现一个软核(比如Altera 的 Nios II,Xilinx的Picoblaze 、Micoblaze等),这样对于一些对处理器要求不高的场合是可以胜任的,但如果对于处理器要求比较高的场景,这种软核的性能往往是捉襟见肘。而且软核会占用一部分PFGA的资源。所以ZYNQ系列实现FPGA和硬核的集成,对于嵌入式开发设计可以说是具有里程碑意义的一件事。

    Xilinx为ZYNQ的开发提供了三个主要软件:PlanAhead、Xilinx Platform Studio(XPS)、Xilinx Software Development Kit(SDK)。当然,关于这三个软件的定位以及作用,Xilinx以及网上都有很详细很官方的说明,我就不赘述了。我个人理解PlanAhead就是做整个硬件环境搭建,系统集成的。XPS可以从PlanAhead直接调用,主要用于处理器部分的开发设计。SDK是Xilinx对Eclipse的改装,主要用于软件部分的设计。当然,目前Xilinx已经推出了新一代的设计软件Vivado,详情可参加Xilinx官网。

    zb可以将逻辑资源和软件分别映射到PS和PL中,这样可以实现独一无二和差异换的系统功能,

    主要分为两大部分,处理系统和可编程逻辑。以及二者之间的互联特性。这篇笔记主要记录zedboard的大体架构

    • 处理系统(PS)

            应用处理单元(APU)

            存储器接口

            I/O外设,包括静态存储器和Flash存储器接口,可以通过共享一个54引脚的多路复用io(MIO)

            互联,也可以扩展访问PL中的IO

    •     可编程逻辑(PL)

            PS和PL使用了大量的借口和信号可以满足几乎所有的连接。

            

    系统的启动

    zynq的启动过程包含多个阶段,启动过程至少包含启动rom和第一级的启动引导代码( first-stage boot loader FSBL ),t同时包含可启动的rom,这个rom用户不可修改,完成了启动rom之后,然后执行FSLB .复位之后,zynq可以自动的从外部的引导设备中启动设备,根据需要,用户可以配置zynq的PS和PL,可以使用jtag借口,用于启动时的调试。

        在使用过程中,可以选择性的关闭PL一侧的电源,以降低功耗,当然也可以降低PS内的时钟。

    处理系统的PS特性

    1. 应用处理单元(APU)

      arm 双核Cortex-A9多核处理器( ARM V7 )

      系统特性:从PL和PS的加速器一致性端口(ACP),带有校验的256K的OCM,
      DMA控制器,通用的中断控制器,

    2. 存储器接口

      DDR控制权,四-SPI控制器,并且应当注意的是,下面的存储器可以作为基本的启动设备:

      NAMD控制器,并行SRAM/NOR控制器

    3. io特性

      提供了标准的io、工业标准接口。

      1. GPIO,

      2. 3模式的以太网控制器,

      3. USB控制器,可以作为主设备或者OTG

      4. SD/SDIO控制器,两个,可以作为基本的启动设备,支持sd 2.0规范,

      5. SPI控制器:四线总线,MOSI,MISO,SCLK,SS,支持全双工操作,

      6. CAN控制器(两个)

      7. UART控制器两个

      8. i2c控制器(两个)

    可编程逻辑PL特性

    1.     可配置逻辑块(CLB)

    2. 36KB的Bram,双端口,最多72位宽度,可编程fifo逻辑,

    3. 数字信号处理-DSP48E1芯片

    4. 时钟管理

    5. 可配置的io

    6. 模数转换特性(XADC)

    互联特性

      1.     基于AXI高性能数据通路开关的PS互联

        1. OCM互联,提供来自中央互联和PL的,用于对256KB存储器的访问,

          CPU和ACP的接口,

        2. 中央互联,

          中央互是64位的,将IOP和DMA控制连接到DDR存储器控制器,片上系统RAM的接口开关。将以太网、usb、和sd/sdio控制器内的本地DMA单元连接到中央互联,将PS内的主设备连接到IOP

      2. PS-PL接口,包含所有PL设计者的可用信号,可以基于PL的功能和PS集结在 一起。

        1. 功能接口,包含AXI互联,用于大多数的IO外设、中断,DMA控制流、时钟和调试接口的扩展MIO接口,

        2. 配置信号,包含处理器配置访问端口(PCAP),配置状态、单个时间翻转。

    (2)软件架构

    (3)硬件架构

    PS部分资源情况如下图

    PL部分资源情况如下图

    ps和pl两部分共用内存,加个免费的dma.vdma,数据交换还不是秒秒钟的事情

    (4)开发环境:从hls到vivado到sdk

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    做了三年多的TI dsp方案,开始新的xilinx的fpga,自然要好好的总结下两者的优劣势,下期聊

    附录:

    http://blog.csdn.net/luoqindong/article/details/42963565 zynq hello world

    http://v3best.com/products/SDSoC/

    http://blog.csdn.net/luoqindong/article/details/42968657

    https://www.zhihu.com/question/21685202

    http://blog.csdn.net/luoqindong/article/details/42968693 ps pl hellworld

    http://xilinx.eetrend.com/category/1522

    http://blog.csdn.net/kkk584520/article/details/9870681

    http://blog.csdn.net/luoqindong/article/details/43234807 can driver

    http://wenku.baidu.com/view/dcdd313a9e3143323868937d.html?re=view z700

  • 相关阅读:
    [总结]FFMPEG视音频编解码零基础学习方法--转
    ffmpeg中swscale 的用法
    FFmpeg解码H264及swscale缩放详解
    C++: std::string 与 Unicode 如何结合?
    SpringBoot-@RequestParam
    SpringBoot --web 应用开发之文件上传
    Java并发编程:线程池的使用
    Executor线程池的最佳线程数量计算
    并发下线程池的最佳数量计算
    根据CPU核心数确定线程池并发线程数
  • 原文地址:https://www.cnblogs.com/pengkunfan/p/6148879.html
Copyright © 2011-2022 走看看