从本篇文章开始,就来记录一下ZYNQ的学习,本篇博客主要介绍ZYNQ是什么以及在vivado中创建一个ZYNQ工程的过程,其中的知识大部分来自于正点原子的ZYNQ教程,感兴趣的可以去看一下他们家的参考资料

ZYNQ简介

ZYNQ全称ZYNQ-7000 All Programmable SoC,即全可编程片上系统,将处理器的软件可编程性与FPGA的硬件可编程性整合,其本质特征在于它组合了一个双核ARM Cortex-A9处理器作为处理系统(PS)和一个传统的现场可编程门阵列(FPGA)逻辑部件作为可编程逻辑(PL)

因此在ZYNQ中,ARM Cortex-A9是一个应用级处理器,可以运行像Linux一样的操作系统,而可编程逻辑是基于Xilinx 7系列的FPGA架构,同时实现了AXI接口,使两个部分实现了高带宽低延迟的连接

SoC发展史

PL部分

PL:Programmable Logic

PLD:Programmable Logic Device可编程逻辑器件,PLD的逻辑功能可以由使用者通过编程来设定

CPLD:复杂可编程逻辑器件,基于乘积项的与或逻辑阵列

FPGA:Field Programmable Gate Array现场可编程门阵列,基于查找表(LUT)的CLB阵列

PL部分提供了高精度DSP处理器,XADC模数转换器等通用的逻辑单元



ZYNQ内部的PL其实就是Xilinx7系列的FPGA

PS部分

PS:Processing System

ZYNQ实际上是一个以处理器为核心的系统,PL只是一个它的外设,ZYNQ包含了完整的ARM处理器系统,且处理器系统中集成了内存控制器和大量外设,使Cortex-A9处理器可以完全独立于可编程逻辑单元

ZYNQ处理器系统里并非只有ARM处理器,还有一组相关的处理资源,形成了一个应用处理器单元(APU),以ARM处理器为核心的应用处理单元(APU)可以集成丰富的外设,以外还有扩展外设接口,cache存储器,存储器接口,互联接口和时钟发生电路等



框图中的一些专用术语:

MIO(Multiplexing IO):PS 域可复用的 IO,因为此 IO 管脚的配置在一定范围内有灵活性

EMIO(Extensible MIO):对 MIO 的扩展, 将 PL 域的 IO 口直接连到 PS 域

GIC (General Interrupt Controller):通用的中断控制器

IRQ(Interrupt Request):中断请求

OCM(On Chip Memory):片上存储

DMA(Direct Memory Access):直接存储访问

MMU:内存管理单元

外部接口

PS实现了很多接口,PS与外部接口的通信主要靠复用的输入/输出实现的(MIO),提供了可灵活配置的54个引脚。当需要超过54个引脚时可以通过扩展MIO实现(EMIO),EMIO 并不是 PS 和外部连接之间的直接通路,而是通过共用了 PL 的 I/O 资源来实现的

PS当中可用的I/O除了标准通信接口外还有通用输入/输出(GPIO)

PL与PS互联

PS和PL互联基于ARM的 AMBA3.0协议的AXI总线

AXI:Advanced Extensible Interface(高级可扩展接口),属于AMBA接口

AMBA:Advanced Microcontroller Bus Architecture

  • AXI-4 Memory Map:存储映射,支持突发传输,主要用于处理器访问存储器等需要指定地址的高速数据传输场景
  • AXI-4 Stream:类似FIFO,数据传输时不需要地址这种,在主从设备之间直接连续读写数据,主要用于视频,高速AD,DMA接口等需要高速数据传输的场合
  • AXI-4 Lite:为外设提供单个数据传输,主要用于访问一些低速外设中的寄存器

在PS和PL之间主要通过一组9个AXI接口,每个接口有多个通道组成

vivado使用

Vivado是赛灵思公司为其产品定制的集成开发环境,支持Block Design,Verilog,VHDL等多种设计输入方式,内嵌综合器和仿真器,可以完成从设计输入,综合适配,仿真到下载的完整FPGA设计流程

Vivado还集成了HLS(High Level Synthesis)工具,可实现直接使用C,C++,System C语言对Xilinx的FPGA器件进行编程,用户无需手动创建RTL,通过高层次综合生成HDL级的IP核,从而加速IP创建

Vivado开发流程:

Vivado创建工程

选择Create Project



设置工程名字和存储位置



选择RTL Project

如果要添加源文件则不勾选,如果创建完工程后再添加源文件则勾选



选择开发的芯片型号



可以直接搜索ZYNQ芯片型号如下:



也可以像下面一样选择:



Vivado工程界面

在上面用vivado创建了一个新的工程,这里主要介绍一下vivado的工程界面



(1)左边的是设计流程导航窗口,从上到下是FPGA的各个设计环节

PROJECT MANAGER是工程管理部分,可以添加文件,FPGA的原语模板工具,IP核等

IP INTEGRATOR 包含模块化图表形式的创建和打开,生成等管理

SIMULATION 包含 FPGA 设计的仿真功能相关

RTL ANALYSIS 包含工程的分析,以及设计的检查,以及设计的原理图逻辑关系的生成等SYNTHESIS 是 FPGA 的综合,是 FPGA的最关键部分

IMPLEMENTATION 是实现部分,完成 FPGA 的布局布线设计

PROGRAM AND DEBUG,是 FPGA 生成配置文件,以及在线实时调试文件生成,下载,调试功能部分

(2)中间的PROJECT MANAGER-pl_LED是工程文件窗口,查看工程的层次结构,编辑工程文件属性

(3)右边的Project Summary是主工作窗口,根据不同的layout有不同的显示内容

(4)下面的蓝色窗口是结果显示窗口,显示各个环节的执行结果,其中,TCL Console 可以采用 TCL 脚本指令进行软件交互

创建源文件



从上到下依次是:

工程设置

添加源文件

提供了一些文件模板

给工程添加IP核

点击Add Sources即可创建各种源文件

也可以直接点击+号创建源文件:

在编写完Verilog代码后,选择RTL ANALYSIS



对代码进行分析并将Verilog代码翻译成RTL原理图

同时在这一步中可以直接绑定引脚,设置完引脚后需要保存管脚约束文件,也可以综合后在新建约束文件设置引脚

接下来可以对代码进行综合(也可以再编写完Verilog代码后直接进行综合),点击Run Synthesis:



在综合后弹出的综合完成的对话框中先不要选择Run Implementation,在绑定管脚后再进行 Implementation 实现:

接下来约束输入,分配管脚:

首先创建一个约束文件,点击sources窗口的+号,选择Add or create constraints



点击Create File创建一个新的约束文件



输入约束文件的名称,并完成约束文件的创建



应当注意,vivado的约束文件是以.xdc为后缀的文本文件,存储的是一条条的xdc约束命令



或者在最右边



约束输入完毕后即可开始实现设计,点击Run Implementation



在下载程序之前,首先要生成用于下载到器件中的比特流文件,文件后缀为.bit,点击Generate Bitstream(也可以先点直接生成bit文件包含了实现操作)



在完成后弹出的界面中选择打开硬件管理器 Open Hardware Mnager

点击Open target或Hardware子窗口中的Auto Connect按钮



点击Program Device并Program即可下载程序:





这样就完成了ZYNQ的FPGA的开发流程,可以总结为如下步骤:





以上两种流程,虽然过程有点区别,但都是可以的

【ZYNQ学习】ZYNQ简介与Vivado使用的更多相关文章

  1. Zynq学习笔记(1)——Hellow World

    Zynq是一款SOC芯片,之前只是用了PL(Programmable Logic)部分,而Zynq最突出的功能,就是内部的双核Cortex-A9,所以从现在开始我将学习ZYNQ的SOC学习(PS部分) ...

  2. 现代3D图形编程学习-基础简介(2) (译)

    本书系列 现代3D图形编程学习 基础简介(2) 图形和渲染 接下去的内容对渲染的过程进行粗略介绍.遇到的部分内容不是很明白也没有关系,在接下去的章节中,会被具体阐述. 你在电脑屏幕上看到的任何东西,包 ...

  3. 现代3D图形编程学习-基础简介(1) (译)

    本书系列 现代3D图形编程学习 基础简介 并不像本书的其他章节,这章内容没有相关的源代码或是项目.本章,我们将讨论向量,图形渲染理论,以及OpenGL. 向量 在阅读这本书的时候,你需要熟悉代数和几何 ...

  4. AspectJ基础学习之一简介(转载)

    AspectJ基础学习之一简介(转载) 一.为什么写这个系列的博客   Aspectj一个易用的.功能强大的aop编程语言.其官网地址是:http://www.eclipse.org/aspectj/ ...

  5. springmvc学习笔记(简介及使用)

    springmvc学习笔记(简介及使用) 工作之余, 回顾了一下springmvc的相关内容, 这次也为后面复习什么的做个标记, 也希望能与大家交流学习, 通过回帖留言等方式表达自己的观点或学习心得. ...

  6. 【转载】【时序约束学习笔记1】Vivado入门与提高--第12讲 时序分析中的基本概念和术语

    时序分析中的基本概念和术语 Basic concept and Terminology of Timing Analysis 原文标题及网址: [时序约束学习笔记1]Vivado入门与提高--第12讲 ...

  7. MXNet深度学习库简介

    MXNet深度学习库简介 摘要: MXNet是一个深度学习库, 支持C++, Python, R, Scala, Julia, Matlab以及JavaScript等语言; 支持命令和符号编程; 可以 ...

  8. zynq学习01 新建一个Helloworld工程

    1,好早买了块FPGA板,zynq 7010 .终极目标是完成相机图像采集及处理.一个Window C++程序猿才开始学FPGA,一个小菜鸟,准备转行. 2,关于这块板,卖家的官方资料学起来没劲.推荐 ...

  9. ZYNQ学习之二-EMIO

    ---恢复内容开始--- 本次试验学习和掌握zynq的emio的使用,是通过PS控制PL端的GPIO. 1.创建硬件工程,主要就是添加EMIO就可以.当然了创建工程的时候还要注意DDR的设置,根据自己 ...

  10. 【原创】ZYNQ学习笔记(一) HelloWorld实现

    拿过ZYNQ开发板,里面给了很多部件,果断从网上下载了手册,N多手册和原理图. 要比Spartan-6复杂多了,耐心地看了看,知道ZYNQ系列分为PS(系统)以及PL(逻辑)部分. 之前,自己一直在做 ...

随机推荐

  1. Win10 修改系统自带字体

    文章来源: Win10怎样更改系统字体?Win10默认字体修改教程 - 系统之家 (xitongzhijia.net) 苹方字体下载,window系统专用[2021最新版]免费下载 - 知乎 (zhi ...

  2. SpringBoot中常见问题

    Invalid bound statement(not found): 异常原因:编译之后的mapper文件中的.xml文件未编译, 解决方法:在pom.xml文件中添加如下配置,添加位置为build ...

  3. React 安装 Sass 错误问题; node-sass 安装运行成功 yarn add sass node-sass@npm:sass

    正常安装是: yarn add node-sass 直接安装出现报错 例如: Node Sass does not yet support your current environment: Wind ...

  4. nightwatch入门教程

    Nightwatch.js 是一个用来测试web应用和网站的自动化测试框架,它是由NodeJs编写的,使用了W3C WebDriver API(之前是Selenium WebDriver) 所以我们首 ...

  5. mac使用expect登录跳板机后的机器

    两个文档 #!/usr/bin/expect -f #连接文件名字记录 set ip [lindex $argv 0] catch {spawn ssh 1.1.1.1}## ip地址换成自己的 ex ...

  6. Rabbit MQ的几种模式

    RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件). 官网文档:https://www.rabbitmq.com/getstarted.html Rabbi ...

  7. idea启动项目,报java.lang.OutOfMemoryError: PermGen space 和启动项目很慢的问题解决

    启动一个老的项目,报错,查是内存溢出 进入 VM options 加上   -Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m   在 ...

  8. Charles抓包工具详解

    学习Charles能做什么: 能够用charles分析前后端问题 能够使用charles模拟弱网测试环境 能够使用charles断点构建异常的测试环境 Charles 简介 1.Charles是什么? ...

  9. Delphi针对双字节字段处理

    针对有些特殊的中文字如"错畸形安氏I类"中""字,属于特殊字符,在Oracle数据库中必须以双字节方式存储,字段定义为nVarchar2(100). 在Delp ...

  10. java使用MVC编程模型实现1+到100图形界面

    MVC概念 MVC编程模型是可以说从提出到现在经久不败,是一种先进的设计结构.能很好的体现个人分工,从而实现前后端分离. M(Model):模型:存储数据的对象.后端操作数据库的. V(View):视 ...