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

(1)平台简介

(2)软件架构

(3)硬件架构

(4)开发环境:vivado

(1)平台简介

  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

  1.  

做了三年多的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. iOS 10.3.3 更新背后的故事

    iOS 10.3.3 更新背后的故事 TLDR:赶紧升级! 苹果最近提示大家将系统升级到 iOS 10.3.3,并且描述这个更新的内容是:修复和改进安全性. iOS 10.3.3 includes b ...

  2. 【ARM】ARM体系结构-GPIO

    GPIO    Gerneral-Purpose IO ports,即通用IO口. 在嵌入式系统中常常有数量众多,但是却比较简单的外部设备/电路. 对这些设备/电路,有的需要CPU为之提供控制手段,有 ...

  3. LeetCode: Path Sum 解题报告

    Path Sum Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that addi ...

  4. 【密码学】RSA公钥密码体制

    RSA公钥密码体制是美国麻省理工学院(MIT)的三位科学家Rivest.Shamir.Adleman于1978年提出的,简称RSA公钥秘密系统.实际上,RSA稍后于MH背包公钥密码实用系统,但它的影响 ...

  5. Python3求英文文档中每个单词出现的次数并排序

    [本文出自天外归云的博客园] 题目要求: 1.统计英文文档中每个单词出现的次数. 2.统计结果先按次数降序排序,再按单词首字母降序排序. 3.需要考虑大文件的读取. 我的解法如下: import ch ...

  6. S3C2440时钟体系结构

    任意一款单板,我们了解其时钟都是通过时钟树来的. 这里没有全部截完,只是讲解时钟来源,OSC代表晶振,这说明我们的时钟可以来至晶振OSC也可以来至外部输入EXTCLK,这是通过OM选择器来完成的. 2 ...

  7. tomcat7.0 windows部署使用80端口问题

    如果安装有.net的IDE,那么80端口容易被IIS内的站点占用,如果不是则手动查找. 1:在命令行中输入netstat -ano,得到端口号对应的PID pid这么来显示

  8. [转]你所不知的 CSS ::before 和 ::after 伪元素用法

    SS 有两个说不上常用的伪类 :before 和 :after,偶尔会被人用来添加些自定义格式什么的,但是它们的功用不仅于此.前几天发现了 Creative Link Effects 这个非常有意思的 ...

  9. mybatis拦截器实现分页功能的示例讲解

    import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import jav ...

  10. 多平台的网站实现单点登录系统(SSO)的开发思路 让你的会员中心更加统一(参考资料)

    单点登录并不是一个新鲜的玩意儿,比较官方的解释是企业业务整合的解决方案之一,通俗来讲SSO就是一个通用的用户中心,国内比较流行的UCenter就是一套单点登录解决方案.而近期以CSDN明文存储用户密码 ...