"30年---我与赛灵思FPGA的故事”: ZYNQ-7000使用总结(1)——概述
来源:互联网 发布:素描自学入门教程软件 编辑:程序博客网 时间:2024/05/12 03:48
因为马上要离职的原因,需要将一些东西整理一下做交接。就将Xilinx ZYNQ-7000的使用经验做一下总结,希望对刚接触的人有一点帮助。需要说明的是,在接触到ZYNQ-7000之前,我并没有做过FPGA的设计,这一部分的基础可以说是零。而这一年的工作重心也并不是FPGA设计,所以这一系列文章的重点是工具的使用,以及ZYNQ-7000的设计流程,而不是具体如何设计。该系列文章的硬件平台是:ZC702(XC7Z020-1CLG484CES )。所用软件包括:PlanAhead、Xilinx Platform Studio、Xilinx Software Development Kit,版本均为14.4。串口工具为Tera Term。
ZYNQ-7000是Xilinx推出的一款全可编程片上系统(All Programmable SoC),该芯片集成了ARM Cortex A9双核与FPGA,所以ZYNQ是一款SoPC芯片。其架构如下图:
图中的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官网。
当然,ZYNQ系列的芯片本身的设计与结构就很复杂,其涉及到的技术更是非常之多,因为本系列文章的定位,不会对这些进行总结。而且其实也没有必要,这些东西都可以在Xilinx官方提供的文档中找到。我只会总结一些文档中没有提到的,或者没有系统概括总结的东西。
PS:该系列文章不涉及任何与我具体工作内容有关的东西,也请勿问。
- "30年---我与赛灵思FPGA的故事”: ZYNQ-7000使用总结(1)——概述
- "30年---我与赛灵思FPGA的故事”:ZYNQ-7000使用总结(7) ——ZYNQ的启动和配置
- "30年---我与赛灵思FPGA的故事”:ZYNQ-7000使用总结(2)——PS部分的使用
- "30年---我与赛灵思FPGA的故事”:ZYNQ-7000使用总结(5) ——使用ChipScope进行硬件调试
- "30年---我与赛灵思FPGA的故事”:ZYNQ-7000使用总结(6) ——AXI接口简述
- "30年---我与赛灵思FPGA的故事”:ZYNQ-7000使用总结(3) ——PS和PL部分配合使用
- "30年---我与赛灵思FPGA的故事”—— ZYNQ-7000使用总结(9) ——PS和PL的通信
- "30年---我与赛灵思FPGA的故事":ZYNQ-7000使用总结(4) ——如何生成从Flash和SD卡启动的镜像文件
- "30年---我与赛灵思FPGA的故事”:ZYNQ-7000使用总结(8) ——用户IP设计和应用程序设计流程
- ZYNQ HLS图像处理加速总结(一)——FPGA硬件部分
- Xilinx-7Series-FPGA高速收发器使用学习—概述与参考时钟篇
- 基于Zynq的数据采集系统设计与调试(三) —— FIFO的使用
- 基于Zynq的数据采集系统设计与调试(三) —— FIFO的使用
- 【java】——我与spring的故事
- 《我与葡萄城的故事》— 征文大赛
- 我与电脑的故事
- 我与“徒弟”的故事
- 我与淘宝的故事
- Cstring类常用函数
- 数据可视化工作,安卓图表库的应用
- C/C++堆、栈及静态数据区详解
- 黑马程序员-递归-斐波那契数列-1到100的和
- 函数的参数调用 取地址
- "30年---我与赛灵思FPGA的故事”: ZYNQ-7000使用总结(1)——概述
- 状态者模式
- Spring MVC和Struts2的比较的优点
- StackOverflow程序员推荐:每个程序员都应读的30本书
- 引用计数
- MTP in Android详解
- 微信支付趟过的坑
- 单例模式
- II2C驱动分析