中级知识库

为有一定FPGA开发基础的工程师提供进阶所需的设计知识、方案分析以及深度技术介绍。

部分可重配置设计流程——配置分析报告

作者:David Dye,赛灵思高级产品营销经理

部分可重配置(PR)设计流程一个独特的方面是有多个设计版本必须通过布局布线来实现,这些不同的“配置”具有相同的静态设计结果,但是在每个可重配置区(PR)有不同的模块,设计者必须设置时序约束和平面布局图并且考虑需要交换的不同模块,这是具有一定挑战性的。

这个PR配置分析报告比较了每个可重配置模块(RM),你可以选择任意一个作为PR设计的输入,它检查的资源使用情况、平面布局、时钟和时序等参数,帮助我们管理整个PR设计,这个PR配置分析报告采用Tcl Console或者Tcl脚本来运行,它还没有集成到Vivado IDE中用于项目模式,顶层设计(理想情况下通过opt_design进行最小化处理)必须在发出下面的命令之前打开:
report_pr_configuration_analysis -cells -dcps {
}

选择可以插入该单元的单个单元(RP)和多个DCPs(每个都代表一个可重配置模块)用于对该RP设计进行全面的分析,或者选择多个单元没有后续的DCPs用于静态设计和接口的顶层分析。

默认情况下会分析PR设计的三个方面,你可以选择一个或多个要点来聚焦报告的某个方面:

作者:北楼

阿里妹导读:X-Engine 是集团数据库事业部研发的新一代存储引擎,也是新一代分布式数据库X-DB的根基。在线事务处理的数据库存储引擎中,如何有效率的回收多版本的旧数据一直是一个难题,尤其在write intensive的应用中,事务处理无可避免受到后台任务的干扰(compaction or vacuum),引入异构计算设备来offloading这些任务的想法由来已久,但是真正想要应用起来确有难度。

今天,我们将为大家详细介绍带有FPGA加速的X-Engine存储引擎。这篇文章不仅仅讲述如何设计并实现出更高效的FPGA逻辑,还有如何提升I/O,做好混合负载调度、容错等。"平稳"二字,看似波澜不惊,实则暗藏巨浪。

前言

本文介绍在 Vivado 2016.4 - 2017.2 工具中,在 PetaLinux 和独立操作系统下如何使用 MPSoC 器件运行 USB2.0 标准接口。

使用 Zynq UltraScale+ MPSoC,该 USB 接口就有两个 USB 2.0/3.0 控制器(USB0 和 USB1)。

USB0 和 USB1 都可以在 USB 2.0 中工作,无需使用 USB 3.0 外部 PHY 硬件,也无需在 SoC 处理器配置向导 (PCW) 中更新内部 GTR 设置。

启动 USB 2.0 标准接口,不强制 Vivado 软件启用 USB 3.0 处理器配置向导 (PCW) IP 设置。

这就意味着如果 USB0/1 接口没有使用物理 USB 3.0 接口,就可以禁用 GTR。

在 Vivado 2016.4、2017.1 和 2017.2 版本中,在处理器配置向导 (PCW) IP 设置中禁用或不从 PCW GUI 中选择 USB3.0 GTR 时,USB2.0 就不起作用。

这个问题与 Vivado 软件针对 USB3.0 和 USB2.0 禁用 PIPE3 时钟并将硬件设计 (HDF) 导出至 SDK 软件有关。

这是一个 Vivado 软件设置问题,在 2017.3 版 Vivado 软件中已修复。

Xilinx 7series FPGA SelectIO资源--ODDR

OLOGIC 资源

OLOGIC块在FPGA内的位置紧挨着IOB,其作用是FPGA通过IOB发送数据到器件外部的专用同步块。OLOGIC 资源的类型有OLOGIC2(位于HP I/O banks)和OLOGIC2(位于HR I/O banks)。在本文的下述论述中,除非特殊说明,OLOGIC2和OLOGIC3在功能和端口上都是相同的。

OLOGIC2和OLOGIC3不属于原语,正因为这样,所以它们不能被直接例化。它包含在布局布线后用户可例化的一些元素,例如一个输出触发器(OFD--output flip-flop)或者一个ODDR(output DDR element).

OLOGIC主要由两个block组成,一个用于配置输出路径。另外一个用于配置三态控制路径。这两个block具有共同的时钟,但是具有不同的使能信号OCE和TCE。两者具有由SRVAL属性精致的一部和同步set和reset(S/R信号)。

输出路径和三态枯井可以以下列模式之一独立配置:

  • 边沿触发的D触发器
  • DDR模式(ASAME_EDGE 或 OPPOSITE_EDGE)
  • 电平敏感锁存器
  • 异步电路/组合逻辑
  • 下图说明了OLOGIC block中的各种逻辑资源

    Python环境下的8种简单线性回归算法

    作者:Tirthajyoti Sarkar,文章来源:机器之心

    本文中,作者讨论了 8 种在 Python 环境下进行简单线性回归计算的算法,不过没有讨论其性能的好坏,而是对比了其相对计算复杂度的度量。

    GitHub 地址: https://github.com/tirthajyoti/PythonMachineLearning/blob/master/Linear_...

    对于大多数数据科学家而言,线性回归方法是他们进行统计学建模和预测分析任务的起点。但我们不可夸大线性模型(快速且准确地)拟合大型数据集的重要性。如本文所示,在线性回归模型中,「线性」一词指的是回归系数,而不是特征的 degree。

    特征(或称独立变量)可以是任何的 degree,甚至是超越函数(transcendental function),比如指数函数、对数函数、正弦函数。因此,很多自然现象可以通过这些变换和线性模型来近似模拟,即使当输出与特征的函数关系是高度非线性的也没问题。

    最近,Digilent开源技术社区收到了两个关于如何在Zynq SoC和Zynq UltraScale + MPSoC上实现SPI接口的问题。在回答了这些问题之后,我认为有必要写一篇如何实现SPI的文章,在此分享。

    当我们在设计中使用Zynq SoC或Zynq UltraScale + MPSoC时,可以有两种方法来实现SPI接口:
    1. 使用PS端的SPI控制器(PS端有两个SPI控制器)
    2. 在PL端使用配置成标准SPI通信的AXI Quad SPI (QSPI) IP模块

    我们可以根据应用的要求来选择使用哪种方法实现SPI控制器。两种SPI的实现方式都支持四种SPI模式,并且都可以作为SPI主设备或SPI从设备。下表列出了它们之间的一些差异:

    基于Zynq的HDMI视频解码方式和相关IP核介绍

    在图像处理应用开发中,捕获或显示图像的最简单方法之一是使用HDMI(高清晰度多媒体接口)。HDMI是一种可以传输高清数字视频和音频数据的专有标准,被许多显示器和相机支持并广泛采用。这个特点使得HDMI成为Zynq图像处理应用的理想接口标准。

    在这篇文章中,我们将向大家介绍如何在不同目标开发板上使用基于Zynq的HDMI传输。

    图:Arty Z7 HDMI输入输出案例

    图:Arty Z7 HDMI输入输出案例

    如何以开挂的方式来查看Zynq启动顺序?

    当新入手一款Zynq开发板后,一般新手在串口输出一个hello world,实现功能就可以了。而对于一些对于Zynq有一定了解的老手而言,往往则会去尝试了解板上硬件的特性和时序,探究hello world输出背后整个系统是如何运作的。

    事实上,对于一款新的Zynq板卡来说,在启动序列中QSPI传输的速度不是一个明显的规范,本文教程就将教你如何使用Digital Discovery口袋式高速逻辑分析仪来快速分析启动序列并确定时序。

    硬件清单

  • Digital Discovery口袋式高速逻辑分析仪
  • 带有flash的Zynq开发板(本文中使用Digilent Zybo作为被测对象)
  • SOIC测试夹(若有最佳)
  • 杜邦线
  • 主流机器学习算法简介与其优缺点分析

    机器学习算法的分类是棘手的,有几种合理的分类,他们可以分为生成/识别,参数/非参数,监督/无监督等。

    例如,Scikit-Learn的文档页面通过学习机制对算法进行分组。这产生类别如:1,广义线性模型,2,支持向量机,3,最近邻居法,4,决策树,5,神经网络,等等…

    但是,从我们的经验来看,这并不总是算法分组最为实用的方法。那是因为对于应用机器学习,你通常不会想,“今天我要训练一个支持向量机!”相反,你心里通常有一个最终目标,如利用它来预测结果或分类观察。

    所以在机器学习中,有一种叫做“没有免费的午餐”的定理。简而言之,它的意思就是说没有任何一种算法可以完美地解决每个问题,这对于监督式学习(即预测性建模)尤其重要。

    例如,你不能说神经网络总是比决策树好,反之亦然。有很多因素在起作用,比如数据集的大小和结构。因此,您应该为您的问题尝试许多不同的算法,同时使用数据的“测试集”来评估性能并选择优胜者。

    当然,你尝试的算法必须适合你的问题,这就是选择正确的机器学习算法的重要性之所在。打个比方,如果你需要清理你的房子,你可以使用真空吸尘器,扫帚或拖把,但是你不会拿出一把铲子然后开始挖掘。

    因此,我们想要介绍另一种分类算法的方法,即通过机器学习所负责的任务来分类。

    机器学习的任务

    在诸多关于MicroBlaze软核处理器的例程中,往往都是使用JTAG下载然后借助SDK执行程序代码。然而无论是在项目展示还是实际应用中,我们都希望我们的设计可以即插即用,免去重复烧写的麻烦和必须使用SDK运行程序的限制。

    事实上,为了部署一个真实的系统,需要在没有任何人为操作的情况下从非易失性存储器中启动MicroBlaze处理器并加载程序代码。

    本篇文章,我们就围绕这个话题,以Digilent Arty Artix-7开发板为例,教你如何在板载的QSPI Flash中存储比特流配置文件和应用程序。

    QSPI有两个主要作用:

  • 配置Artix FPGA
  • 存储应用软件
  • 对于第一个功能,我们在Vivado设计中不需要包含QSPI接口。我们只需要在Vivado配置中更新对QSPI的设置,提供QSPI Flash存储器与FPGA配置管脚的连接。然而,一旦FPGA配置完成并调用MicroBlaze软核处理器,我们则需要在设计中引入与QSPI Flash通信的接口。这个新添加的接口允许引导程序(bootloader)从QSPI Flash存储器中复制应用程序到Arty实际执行的DDR SDRAM存储介质中。

    当然,这会引起一个问题,即MicroBlaze bootloader(引导程序)从何而来?

    同步内容