技术
上一期,我们重点学习了ZYNQ的PL开发,本期我们侧重于进行PS开发的学习。我们将在 VIVADO 开发环境下搭建 ARM+FPGA 的系统架构,并在 SDK 中编译软件实现软硬件联合开发。
本部分的学习,我们依旧借助得力的助手与伙伴——PYNQ_z2来完成。
一. 实验目的
1. 点亮开发板右下角三个灯
2. 输出“Hello,World!”
二. 实验要求
1. 在 VIVADO 中编译 bit 文件;
2. 在 SDK 中编译 elf 文件并将 FPGA 的 bit 文件和 ARM 处理器 的 elf 文件下载到开发板中
三. 实验步骤
<font color="#FF8000">作者:XCZ ,来源:硬件助手微信公众号</font>
本篇主要介绍常用的单端逻辑电平,包括TTL、CMOS、SSTL、HSTL、POD12等。
<strong>1、TTL电平</strong>
作者:Evening
Xilinx每一个FPGA都有一个独特的ID,也就是Device DNA,这个ID相当于我们的身份证,在FPGA芯片生产的时候就已经写死在芯片的eFuse寄存器中,具有不可修改的属性,因为使用的是熔断技术。值得说明的是,在7系列及以前,这个ID都是57bit的,但是在Xilinx的Ultraslace架构下是96bit。
<font color="#FF8000">作者:小鱼,Xilinx学术合作</font>
<strong>一.概述</strong>
在文章《Verilog HDL入门思路梳理》我们说过应该如何去学习Verilog HDL描述。然而第一步,我们需要知道Verilog有哪些语法,它是否可以综合,可以用这个语法来描述什么逻辑功能电路呢?
其实Xilinx已经贴心地准备好了答案,还给你准备了一堆参考实例。
<font color="#FF8000">作者:XCZ ,来源:硬件助手微信公众号</font>
本篇为逻辑电平系列文章中的第一篇,主要介绍逻辑电平相关的一些基本概念。后续将会介绍常见的单端逻辑电平(针对CMOS的闩锁效应进行详细介绍)、差分逻辑电平、单端逻辑电平的互连、差分逻辑电平的互连、一些特殊功能的互连、逻辑互连中的电流倒灌问题、以及逻辑电平的转换等。
<strong>1、常见逻辑电平</strong>
常见的逻辑电平如下:
由于Vivado下载程序步骤和ISE有较大差异,特此写此文章,希望对大家有所帮助。
1,下载文件生成
在.bit文件生成后,在TCL中输入
write_cfgmem -format mcs -interface spix4 -size 16 -loadbit "up 0x0 F:/Git/XGA/Display_HDMI/Display.runs/impl_2/Display.bit" -file FPGA_TOP.mcs
spix4为模式设置。
-size 16为Flash大小,单位Byte。
即可得到FPGA_TOP.mcs和FPGA_TOP.prm两个文件,后边需要用到这两个文件。
<font color="#FF8000">作者:NingHeChuan</font>
<strong>Get Smart About Reset: Think Local, Not Global。</strong>
对于复位信号的处理,为了方便我们习惯上采用全局复位,博主在很长一段时间内都是将复位信号作为一个I/O口,通过拨码开关硬件复位。后来也看了一些书籍,采用异步复位同步释放,对自己设计的改进。
不过自从我研读了Xilinx的White Paper后,让我对复位有了更新的认识。
<font color="#FF8000">作者:材哥,玩儿转FPGA</font>
<strong>前言</strong>
vivado和ISE的使用差别很大,Vivado是专门针对7系列和以后系列的FPGA/AP SOC进行高效设计的工具,特别是最近提出的UltraFast设计方法,能够极大地提高开发效率。ISE在支持老版本器件的基础上,目前也支持7系列/ZYNQ的设计,但是效率不能和Vivado相比。关于vivado的基本使用这里不多说,主要把一些问题点整理成“错题集”,把一些小技巧进行归纳。
<font color="#FF8000">作者: 小鱼,Xilinx学术合作</font>
一. 概述
时序逻辑示意图,如下图所示。数据从一个寄存器出来,经过组合逻辑到达下一个寄存器。
<center><img src="http://xilinx.eetrend.com/files-eetrend-xilinx/article/201811/13907-407…; width="670"></center>
上一期的学习中,我们系统性地介绍了PYNQ与ZYNQ地区别与联系。PYNQ = Python + ZYNQ,即将ZYNQ部分功能的Python化,直接调用Python库和FPGA硬件库进行功能的开发。
Pynq降低了开发人员的门槛,但知其然也知其所以然,开发效率将会更高。因此,在进入PYNQ的python开发之前,我们先来学习ZYNQ的PL与PS开发,为接下来的学习提供良好的基础。
本部分的学习,我们依旧借助PYNQ_z2来完成。
<strong>1. ZYNQ功能块</strong>
ZYNQ中包含两大功能块:PS部分和PL部分。
<font color="#FF8000">作者:Alex He,Xilinx 嵌入式技术专家 </font>
Xilinx 嵌入式技术专家 Alex He 与大家分享在Docker里玩转PetaLinux的上手教程~
<strong>PetaLinux</strong>
PetaLinux是Xilinx推出的针对Zynq Soc, Zynq MPSOC嵌入式开发板的基于Yocto二次封装的Linux BSP构建工具,支持Ubuntu/CentOS/RedHat等多个版本。通常,我们都是将其直接安装在所支持的Linux OS中。
<font color="#FF8000">作者: 做但不能忘思考,FPGA2嵌入式</font>
当我们使用一种新的IP核的时候,遇到的最大问题是:以前根本没有接触过的新东西,我们会感到恐惧,不知道如何下手。比如,SelectIO该怎么来实现LVDS的功能:
Zynq可扩展处理平台是赛灵思新一代 FPGA的可编程技术的产品系列。与采用嵌入式处理器的FPGA不同,Zynq产品系列的处理系统不仅能在开机时启动,而且还可根据需要配置可编程逻辑。采用这种方法,软件编程模式与全功能的标准ARM处理SoC毫无二致。
与之相关和不同的是,PYNQ = Python + ZYNQ,即将ZYNQ部分功能的Python化,直接调用Python库和FPGA硬件库进行功能的开发。
<strong>1. 实例图片</strong>
下面是ZYNQ系列与PYNQ系列中两款具有代表性的开发板:
<font color="#FF8000">作者:没落骑士</font>
<strong>一、前言</strong>
FPGA以擅长高速并行数据处理而闻名,从有线/无线通信到图像处理中各种DSP算法,再到现今火爆的AI应用,都离不开卷积、滤波、变换等基本的数学运算。但由于FPGA的硬件结构和开发特性使得其对很多算法不友好,之前本人零散地总结和转载了些基本的数学运算在FPGA中的实现方式,今天做一个系统的总结归纳。
<strong>二、FPGA中的加减乘除</strong>
1.硬件资源
FPGA+ARM是ZYNQ的特点,那么PL部分怎么和ARM通信呢,依靠的就是AXI总线。这个实验是创建一个基于AXI总线的GPIO IP,利用PL的资源来扩充GPIO资源。通过这个实验迅速入门开发基于总线的系统。
使用的板子是zc702。
AXI总线初识:
AXI (Advanced eXtensible Interface),由ARM公司提出的一种总线协议。总线是一组传输通道, 是各种逻辑器件构成的传输数据的通道, 一般由数据线、地址线、 控制线构成。 Xilinx从6系列的 FPGA 开始对 AXI 总线提供支持, 此时 AXI 已经发展到了 AXI4 这个版本, Vivado里都是基于AIX4的 IP。
在本教程的带领下,你将在十分钟内学会在PYNQ-Z2板卡上使用传感器和LED开发自己的IoT应用!
<strong>初始化板卡</strong>
from pynq.overlays.base import BaseOverlay
base = BaseOverlay("base.bit")
在本教程的带领下,你将在十分钟内学会在PYNQ-Z2板卡上使用二值化神经网络开发自己的AI应用!
1. AI初学者入门第一步:分类
AI入门第一步就是对输入的图片进行分类。首先我们需要初始化一个分类器,根据最终实现分类目标的不同需要选择不同的数据集。我们可以在‘road-signs','streeview'和‘cifar10’三个数据集中选择其一,这里选择的是'road-signs'交通标志数据集。
import bnn
print(bnn.available_params(bnn.NETWORK_CNVW1A1))
<font color="#FF8000">作者:XCZ,来源:硬件助手</font>
本篇主要介绍ZU+系列MPSoC的外围接口,针对每个接口进行概述性介绍,后续会针对个别接口进行详细介绍原理图设计和PCB设计。