技术

(SelectIO)新IP核学习的正确打开方式

<font color="#FF8000">作者: 做但不能忘思考,FPGA2嵌入式</font>

当我们使用一种新的IP核的时候,遇到的最大问题是:以前根本没有接触过的新东西,我们会感到恐惧,不知道如何下手。比如,SelectIO该怎么来实现LVDS的功能:

PYNQ系列学习(二)——pynq与zynq对比(一)

Zynq可扩展处理平台是赛灵思新一代 FPGA的可编程技术的产品系列。与采用嵌入式处理器的FPGA不同,Zynq产品系列的处理系统不仅能在开机时启动,而且还可根据需要配置可编程逻辑。采用这种方法,软件编程模式与全功能的标准ARM处理SoC毫无二致。

与之相关和不同的是,PYNQ = Python + ZYNQ,即将ZYNQ部分功能的Python化,直接调用Python库和FPGA硬件库进行功能的开发。

<strong>1. 实例图片</strong>
下面是ZYNQ系列与PYNQ系列中两款具有代表性的开发板:

利用FPGA进行基本运算及特殊函数定点运算

<font color="#FF8000">作者:没落骑士</font>

<strong>一、前言</strong>

  FPGA以擅长高速并行数据处理而闻名,从有线/无线通信到图像处理中各种DSP算法,再到现今火爆的AI应用,都离不开卷积、滤波、变换等基本的数学运算。但由于FPGA的硬件结构和开发特性使得其对很多算法不友好,之前本人零散地总结和转载了些基本的数学运算在FPGA中的实现方式,今天做一个系统的总结归纳。

<strong>二、FPGA中的加减乘除</strong>

1.硬件资源

Xilinx ZYNQ 7000+Vivado2015.2系列(六)创建一个基于AXI总线的GPIO IP并使用

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。

基于模型的设计 | 现代无线通信系统的研发趋势

<font color="#FF8000">作者:单博,MATLAB</font>

十分钟开发自己的IoT

在本教程的带领下,你将在十分钟内学会在PYNQ-Z2板卡上使用传感器和LED开发自己的IoT应用!

<strong>初始化板卡</strong>
from pynq.overlays.base import BaseOverlay
base = BaseOverlay("base.bit")

十分钟开发自己的AI

在本教程的带领下,你将在十分钟内学会在PYNQ-Z2板卡上使用二值化神经网络开发自己的AI应用!

1. AI初学者入门第一步:分类
AI入门第一步就是对输入的图片进行分类。首先我们需要初始化一个分类器,根据最终实现分类目标的不同需要选择不同的数据集。我们可以在‘road-signs','streeview'和‘cifar10’三个数据集中选择其一,这里选择的是'road-signs'交通标志数据集。

import bnn
print(bnn.available_params(bnn.NETWORK_CNVW1A1))

Zynq UltraScale+系列之“外围接口概述”

<font color="#FF8000">作者:XCZ,来源:硬件助手</font>

本篇主要介绍ZU+系列MPSoC的外围接口,针对每个接口进行概述性介绍,后续会针对个别接口进行详细介绍原理图设计和PCB设计。

Xilinx ZYNQ 7000+Vivado2015.2系列(五)之ZYNQ的三种启动方式-JTAG、SD card、Flash

<strong>前言:</strong>

前面我们都是使用JTAG方式下载比特流文件,然后下载elf文件,最后点击Run as或者Debug as来运行程序。JTAG方式是通过tcl脚本来初始化PS,然后用JTAG收发信息,优点是可以在线调试,缺点是断电后程序就丢失了。为了解决程序丢失的问题,可以制作镜像文件烧写到sd卡或者flash中,上电即可加载程序。

ZYNQ有两大类启动模式:从BootROM主动启动,从JTAG被动启动。

在没有外部JTAG的情况下,处理系统(PS)与可编程逻辑(PL)都必须依靠PS来完成芯片的初始化配置。即借助CPU来完成配置,这也是ZYNQ系列的不同之处。

板子依然使用的是zc702.

xilinx zynq RapidIO系统配置

参考

书籍《RapidIO The Embedded System Interconnect》
xilinx手册pg007《Serial RapidIO Gen2 Endpoint v4.1 LogiCORE IP Product Guide》
Zynq-Linux移植学习笔记之14-RapidIO驱动开发

<font size="3"><strong>host初始化</strong></font>

直接看RapidIO的初始化,一些底层的比如物理层链路层之类的不需要关心,用到了再去看,毕竟都是基于芯片或者IP来开发。先从高层了解这个过程。

<strong>系统启动过程概述</strong>

嵌入式工程师如何用好GitHub

这年头GitHub可谓是程序员必备交友技能。毫无疑问GitHub现在已经是全球最大的开源社区了,也常常被人戏称为“全球最大同性交友平台”。

你可以在这里follow各种开源社区的技术大牛,学习到各种各样的开源技术和开源项目。

那么作为一个嵌入式工程师,我们应该如何用好GitHub呢?GitHub可以用来做些什么好玩有意思的事情呢?

<font size="3"><strong>追随开源项目</strong></font>

要说在嵌入式方面应用最广的是什么,大家一定不会忽略Linux。

Python这么火,编码风格不可不知!

<strong>分号</strong>
Tip
不要在行尾加分号, 也不要用分号将两条命令放在同一行。

<strong>行长度</strong>
Tip
每行不超过80个字符

例外:
1. 长的导入模块语句
2. 注释里的URL

不要使用反斜杠连接行。

Python会将 圆括号, 中括号和花括号中的行隐式的连接起来 , 你可以利用这个特点. 如果需要, 你可以在表达式外围增加一对额外的圆括号。

借助vivado来学习FPGA配置模式

DA(Vivado)软件可以很好的帮助我们更好的去学习FPGA相关知识,例如:

利用以太网为工业市场供电

<font color="#FF8000">作者:Matt Chevrier,德州仪器 </font>

为工业以太网器件供电需要解决工业以太网和工业应用的几个特定问题。

Xilinx ZYNQ平台下构建Linux + Xenomai实时操作系统

<font color="#FF8000">作者:Huster-ty </font>

Xenomai是一种采用双内核机制的Linux 内核的强实时扩展。由于Linux 内核本身的实现方式和复杂度,使得Linux 本身不能使用于强实时应用。在双内核技术下,存在一个支持强实时的微内核,它与Linux 内核共同运行于硬件平台上,实时内核的优先级高于Linux 内核,它负责处理系统的实时任务,而Linux 则负责处理非实时任务,只有当实时内核不再有实时任务需要处理的时候,Linux内核才能得到运行的机会。所以Xenomai与传统Linux组成双内核以弥补Linux实时性差的缺陷。

Xilinx ZYNQ 7000+Vivado2015.2系列(四)之GPIO的三种方式:MIO、EMIO、AXI_GPIO

<strong>前言:</strong>

ZYNQ 7000有三种GPIO:MIO,EMIO,AXI_GPIO

MIO是固定管脚的,属于PS,使用时不消耗PL资源;EMIO通过PL扩展,使用时需要分配管脚,使用时消耗PL管脚资源;AXI_GPIO是封装好的IP核,PS通过M_AXI_GPIO接口控制PL部分实现IO,使用时消耗管脚资源和逻辑资源。

使用的板子是zc702。

<strong>1.MIO方式</strong>

ZYNQ EMIO使用及可重用封装

为了快速实现算法板级验证,PC端需要通过JTAG或以太网与FPGA形成通路。最简单便捷的方案是利用协议栈芯片,用户可以无视底层,利用简单的SPI协议读写寄存器实现复杂的TCP UDP等网络协议。当然带宽会受限于SPI接口有效速率,本文采用芯片为W5500,支持10M/100M自适应,其理论值高达80Mbps,基本达到算法验证的要求。

  ZYNQ可以通过灵活的EMIO模拟SPI接口,从而在最少改动官方demo的前提下移植C语言驱动程序。本文着重讲述EMIO的C语言软件驱动方式及可重用封装,封装后可以接口方式被其他应用程序直接调用,非常方便。直接上代码,再加以说明。
/*
* EMIO_ope.c
*
*/

Vivado HLS 图像的获取

<font color="#FF8000">作者: OpenSLee,来源:FPGA开源工作室</font>

1. 背景知识

使用XDMA实现PCIE映射AXI-Lite对VDMA进行配置

在Xilinx提供的很多ip如VDMA ,OSD,Mixer,TPG等等,在使用前都需要进行配置,配置接口往往是AXI-Lite接口,正常情况下我们一般自己编写配置逻辑或者通过MB/ZYNQ等对IP进行配置,如果在我们使用到XDMA的同时也使用到需要AXI-Lite配置的ip的话,那么有一种新的方法可以对这类型IP进行配置。首先说说XDMA,XDMA是Xilinx封装好的PCIE DMA传输IP,可以很方便的把PCIE总线上的数据传输事务映射到AXI总线上面,实现上位机直接对AXI总线进行读写而对PCIE本身TLP的组包和解包无感。

Vivado工程经验与时序收敛技巧

FPGA毕竟不是ASIC,对时序收敛的要求更加严格,本文主要介绍本人在工程中学习到的各种时序约束技巧。

首先强烈推荐阅读官方文档UG903和UG949,这是最重要的参考资料,没有之一。它提倡要在设计的早期阶段就要排除问题,越到后期时序的改善就越困难。其中HLS层次对性能的影响是最大的。

本文将从代码风格,时序修正,工程设置等几个方面介绍本人的实践经验,希望让各位初学者快速提高,也希望FPGAer能给出宝贵建议。

<strong>1. 代码风格</strong>
推荐使用Xilinx language templates的代码块,这里的代码能够综合出正确且结构简洁的电路,包括移位寄存器,乘法,复数乘法,FIR滤波器等,凡是涉及到的模块尽量使用官方写法。