没办法,回家入职新公司,做通信的,用到这款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

嵌入式开发之zynq——赛灵思的一款两a9加一fpga芯片的开发板的更多相关文章

  1. 嵌入式开发之zynq——zynq开发环境搭建

    http://blog.csdn.net/shushm/article/details/51728690 http://www.cnblogs.com/fpga/p/4593602.html http ...

  2. 嵌入式开发之zynq驱动—— zynq ps pl ddr 内存地址空间映射

    http://www.wiki.xilinx.com/Zynq-7000+AP+SoC+-+32+Bit+DDR+Access+with+ECC+Tech+Tip http://patchwork.o ...

  3. 嵌入式开发之zynqMp ---Zynq UltraScale+ MPSoC 图像编码板zcu102

    1.1 xilinx zynqMp 架构 1.1.1 16nm 级别工艺 Zynq UltraScale+  MPSoC架构 Xilinx新一代Zynq针对控制.图像和网络应用推出了差异化的产品系,这 ...

  4. 嵌入式开发之hi3519---GPIO 驱动

    在一个嵌入式系统中使用最多的莫过于 通用输入输出 GPIO口.看到论坛中经常有朋友问海思为什么没有提供GPIO驱动.其实不然. 在海思SDK  xxx/osdrv/tools/board_tools/ ...

  5. 嵌入式开发之NorFlash 和NandFlash

    http://blog.csdn.net/tigerjibo/article/details/9322035 [摘要]:作为一个嵌入式工程师,要对NorFlash 和NandFlash要有最起码的认知 ...

  6. Jetty 开发指南: 嵌入式开发之HelloWorld

    Jetty 嵌入式之 HelloWorld 本节提供一个教程,演示如何快速开发针对Jetty API的嵌入式代码. 1. 下载 Jar 包 Jetty被分解为许多jar和依赖项,通过选择最小的jar集 ...

  7. 嵌入式开发之uart---rs232 和rs485 和rj45和usb简介

    (1) profilebus和can(control控制器局域网)和hub(集线器) (uart)通用异步传输 rs232: ibm 提出的,两根线,按位bit传输,是端到端的单信号电平模式,理论上有 ...

  8. 嵌入式开发之makefile---交叉编译静态库和动态库的生成和调用

    c和cpp 混合的动态库生成: $(LIBSO): $(COBJS) $(CPPOBJS) $(CPP) -shared -o $@ $^ $(LIBS) ////////////////////// ...

  9. 嵌入式开发之davinci--- 8148/8168/8127 中的High-DefinitionVideo Processing Subsystem (HDVPSS)

    High-DefinitionVideo Processing Subsystem (HDVPSS) 这一章介绍了高清视频处理子系统(HDVPSS). 2.1导论 2.1.1 简介 HDVPSS 使用 ...

随机推荐

  1. Android 编程下背景图片适配工具类

    package cn.sunzn.util; import android.content.Context; import android.graphics.Bitmap; import androi ...

  2. 玩转Bootstrap(JS插件篇)-第1章 模态弹出框 :1-1导入JavaScript插件

    导入JavaScript插件 Bootstrap除了包含丰富的Web组件之外,如前面介绍的下拉菜单.按钮组.导航.分页等.他还包括一些JavaScript的插件. Bootstrap的JavaScri ...

  3. 关于Python中深拷贝与浅拷贝的理解(一)---概念

    import copy a = [1, 2, 3, 4, ['a', 'b']] #原始对象 b = a #赋值,传对象的引用 c = copy.copy(a) #对象拷贝,浅拷贝 d = copy. ...

  4. 【TensorFlow】CNN

    tf.nn.conv2d 这个函数的功能是:给定4维的input和filter,计算出一个2维的卷积结果.函数的定义为: def conv2d(input, filter, strides, padd ...

  5. hdu3938(最小生成树,推荐)

    题意描述:简单的讲就是,给你一张无向图,求有多少条路径使得路径上的花费小于L,这里路径上的花费是这样规定的,a.b两点之间的多条路径中的最长的边最小值! 思路:这题目有多个询问,肯定要用离线输出.思路 ...

  6. vs2015利用python加载dll调试配置

    python调用dll相对而言比较方便,写个脚本调试轻松工作,快乐生活. python脚本 from ctypes import * import time # 脚本挂起 input() # load ...

  7. postgresql 修改字段名称

    ALTER TABLE auth_user RENAME email TO aemail;

  8. JavaScript高级 面向对象(11)--对象的动态特性-关联数组用法

    说明(2017.4.2): 1. 对象的动态特性: (1)在js中,一个对象需要属性,就可以利用“对象名.属性 = 值”的方式为其添加,只要赋值成功,对象就新增这个属性. (2)对象属性的访问形式: ...

  9. 2017 年 机器学习之数据挖据、数据分析,可视化,ML,DL,NLP等知识记录和总结

    今天是2017年12月30日,2017年的年尾,2018年马上就要到了,回顾2017过的确实很快,不知不觉就到年末了,再次开篇对2016.2017年的学习数据挖掘,机器学习方面的知识做一个总结,对自己 ...

  10. 迭代器模式和组合模式(head first设计模式——8)

    把迭代器模式和组合模式放在同一篇的原因是其联系比较紧密. 一.迭代器模式 1.1迭代器模式定义 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示. 这个模式提供了一种方法 ...