ZYNQ

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

Zynq-7000电子相册的实现

作者:OpenSLee

1 背景知识

电子相册的实现就是通过按键来改变显示器的图片轮换。本节将通过ps端的按键来控制ARM选择不同的图片通过HDMI输出到显示屏。

1.1 AXI_VDMA的介绍

Xilinx的AXI VDMA(Video Direct Memory Access)核是个软核。它提供了高带宽的直接内存存取在内存和支持AXI4-Stream video的目标互联。如下图所示既是一个axi_vdma IP。

如下图所示,它是AXI VDMA结构框图。

Zynq-7000 PL端HDMI的显示控制

作者:OpenSLee

1 背景知识

HDMI(High Definition Multimedia Interface)是高清晰多媒体接口线的缩写,能高品质地传输未经压缩的高清视频和多声道音频数据,最高数据传输速度为5Gbps。同时无需在信号传送前进行数/模或者模/数转换,可以保证最高质量的影音信号传送。

HDMI线支持5Gbps的数据传输率,最远可传输30米,足以应付一个1080p的视频和一个8声道的音频信号。而因为一个1080p的视频和一个8声道的音频信号需求少于4GB/s,因此HDMI线还有很大余量。这允许它可以用一个电缆分别连接DVD播放器,接收器和PRR。此外HDMI支持EDID,DDC2B,因此具有HDMI的设备具有“即插即用”的特点,信号源和显示设备之间会自动进行“协商”,自动选择最合适的视频/音频格式。如下图是一根HDMI线。

DMI接口的原理图

CNN在ZYNQ上的实现

ZYNQ简介

ZYNQ系列是Xilinx推出的高端嵌入式SoC,其在片上集成了ARM处理器和FPGA。ZYNQ与传统的嵌入式CPU相比,具有强大的并行处理能力。开发人员利用FPGA强大的并行处理能力,不仅可以解决多种不同信号处理应用中的大量数据处理问题,而且还能通过加入更多外设来扩展处理系统的功能。ZYNQ通过引入最新的高速AXI-4总线,可轻松实现外设的扩展与高速互访。

ZYNQ SoC十分适用于硬件加速,最典型的架构就是将需要加速的大运算量逻辑部署到FPGA上,而将流程控制的逻辑部署到arm上。典型的ZYNQ SoC结构如图1。

CNN简介
CNN全称卷积神经网络,包括卷积层(convolutional layer)和池化层(pooling layer)。此处不对CNN算法原理进行赘述,仅对网络结构进行简单描述。

作者:Steve Leibson

很多嵌入式设计使用基于微处理器和微控制器的单板计算机 (SBC) 和系统级模块 (SoM)(例如,请参阅“使用 Raspberry Pi 3 构建低成本工业控制器”)。但是,更多嵌入式应用无法忍受与软件相关的响应时间所带来的延迟。

这些应用需要只有定制硬件方可实现的额外性能,而开发定制硬件的最快捷方法就是使用 FPGA。

本文将讨论使用 SoM 来开发嵌入式系统的优势,这些系统需要借由 FPGA 提供更高的处理能力。本文还将介绍各种不同的 FPGA SoM,并讨论它们在嵌入式设计开发中的使用。

FPGA 系统级模块的角色
系统级模块 (SoM) 可以帮助设计人员开发带有定制接口的特定外形尺寸的嵌入式系统,而无需从头开始开发内核处理系统。设计人员可将预先设计且经过测试的 SoM 插入到预先设计或定制的载卡中,以创建嵌入式设计,其功能与完全定制的设计相同,但硬件开发所需的时间要少得多。

与从头开始开发硬件相比,使用 SoM 具有几大优势,其中包括:

  • 节省成本(在开发和调试基于 SoC 的电路板的过程中,会产生很高的非经常性工程成本)
  • 降低设计风险
  • Zynq-7000 PS到PL端emio的使用

    作者:OpensLee,FPGA开源工作室

    1 背景知识
    上一节《Zynq-7000 ARM端MIO的使用》讲解了PS端MIO的使用,本节讲解ARM处理器通过emio(Extendable Multiuse I/O)控制PL端接口。如下图所示,ZYNQ-7000的GPIO分为两种(MIO,EMIO)。EMIO分布在Bank2和BANK3,共有64个引脚可以使用。

    如下图所示,当我们的MIO不够使用时我们可以使用EMIO,因为EMIO连接到FPGA端,所以管脚需要约束。

    Zynq-7000 ARM端MIO的使用

    作者:OpenSLee

    1. 背景知识

    Xilinx Zynq-7000 芯片的PS端MIO(multiuse I/O)所在位置如下图红色框所示。MIO(0:15)在bank0上,MIO(16:53)在bank1上。他们不需要管脚约束,既可以当做PS 端普通的IO也可以用做PS端SPI、I2C、CAN等总线。

    本节将使用MIO的GPIO功能实现LED流水灯。

    2. MIO流水灯实验
    对于工程的创建在此不再赘述。可参考《Zynq-7000 ARM端helloworld实验

    1) ZYNQ7 Processing System GPIO的设置

    点击MIO Configuration>>选中GPIO MIO如下图所示。其他配置根据自己的开发板设置。

    Zynq-7000 ARM端helloworld实验

    作者:OpenSLee

    1. 背景知识

    Helloworld 实验总是各种编程语言的开始第一课,这里我们将使用xilinx zynq-7000芯片ARM端完成串口打印”Helloworld”实验,旨在体验一下zynq-7000 的开发流程,为以后的zynq-7000的开发打下基础。

    2. Zynq-7000 HelloWord

    本人使用的zynq-7000芯片为xc7z010clg400。

    Vivado的工程创建我们在这里就不在详述。

    1) Create Block Design

    点击Create Block design >>填写Design name >> OK 如下图所示。

    2) 添加ZYNQ7 Processing System

    Zynq串口调试中遇到的问题

    作者:圆宵,来源:FPGA那点事儿

    串口是很常用的通信端口,其速率比较慢,控制也比较简单,一般来说,使用时不会出现太大的问题。但笔者前一阵调试一块zynq的板子,用CPU通过串口和板卡上的一款芯片进行通信时,却也碰到了不大不小的麻烦。现在把解决问题的过程分享出来,虽然犯的都是很low的错误,但是也希望能对读者有一些借鉴。

    整个系统中,涉及串口通信的部分大概是这样的:

    PL中使用的是Xilinx提供的标准串口IP,串口的波特率可调,应用中用的是115200 bps。整个系统裸跑,使用标准的驱动。调试时,基本的串口通信没有遇到什么障碍,很快就通了。但是把所有的功能整合到一起,在整个系统联调时,却在串口通信碰到了稀奇古怪的问题。

    Zynq AXI总线

    zynq AXI是很重要的内容,本篇仅是简单的介绍。大量参考了其他书籍。

    AXI (Advanced eXtensible Interface) 本是由ARM公司提出的一种总线协议, Xilinx从 6 系列的 FPGA 开始对 AXI 总线提供支持,目前使用 AXI4 版本。

    1.AXI总线

    ZYNQ有三种AXI总线:

    (1)AXI4:(For high-performance memory-mapped requirements.)主要面向高性能地址映射通信的需求,是面向地址映射的接口,允许最大256轮的数据突发传输;

    (2)AXI4-Lite:(For simple, low-throughput memory-mapped communication )是一个轻量级的地址映射单次传输接口,占用很少的逻辑单元。

    (3)AXI4-Stream:(For high-speed streaming data.)面向高速流数据传输;去掉了地址项,允许无限制的数据突发传输规模。

    AXI4总线和AXI4-Lite总线具有相同的组成部分:

    (1)读地址通道,包含ARVALID, ARADDR, ARREADY信号;

    (2)读数据通道,包含RVALID, RDATA, RREADY, RRESP信号;

    关于zynq debug进入main函数或汇编函数的小技巧

    相信很多朋友在调试ZYNQ的时候也遇到过这个问题,在SDK模式先DEBUG电路板的时候,执行完debug后,分布运行有时候进入C语言的main函数,有时候进入编译后的汇编main函数。

    对于我这种汇编小白,C函数显得更容易理解,也方便调试。下面解释一下为什么会出现这两种现象,完全是因为我们操作的原因,因而完全可以避免。

    在调试界面选择调试文件的时候,如果现在Debug文件夹下的应用程序,则分布运行跳转到C语言的main函数;如果选择Release文件夹下的应用程序,则分布运行跳转到编译后的汇编main函数。大家在debug的时候根据自己的喜好选择即可。


    同步内容