技术

建立时间,保持时间 为了确保寄存器在时钟沿稳定采集数据,那么必须要满足寄存器的建立,保持时间要求。 建立时间要求:在寄存器有效时钟沿之前至少Tsetup时间,数据必须到达且稳定。如下图所示。 保持时间要求:在数据采集有效时钟沿之后,数据必须维持最短Thold时间不变。如下图所示。 建立时间裕量计算 同步时序电路如下图所示。这里对后面一个寄存器进行建立时间裕量分析...
作者:XCZ,来源:硬件助手微信公众号 本篇主要针对CMOS电平,详细介绍一下CMOS的闩锁效应。 1、Latch up 闩锁效应是指CMOS电路中固有的寄生可控硅结构(双极晶体管)被触发导通,在电源和地之间存在一个低阻抗大电流通路,导致电路无法正常工作,甚至烧毁电路。 Latch up是指CMOS晶片中,在电源VDD和地线GND(VSS)...
作者:肉娃娃 原语,即primitive。不同的厂商,原语不同;同一家的FPGA,不同型号的芯片,可以也不一样;原语类似最底层的描述方法。使用原语的好处,可以直接例化使用,不用定制IP;即可通过复制原语的语句,然后例化IP,就可使用;Xilinx是通过直接修改原语中的参数再例化IP来使用;Xilinx公司的原语分为10类,包括:计算组件,IO端口组件,寄存器/锁存器,时钟组件,处理器组件,...
前言(本文基于赛灵思官方HLS文档UG871中的7.1节):           在使用高层次综合,创造高质量的RTL设计时,一个重要部分就是对C代码进行优化。           Vivado HLS拥有自动优化的功能,试图最小化loop和function的latency,为了实现这一点,软件会在loop和function上并行执行尽可能多的操作(比如说,在function级别上,...
Zynq™-7000 All Programmable SoC在单个器件上实现了ARM处理功能与FPGA逻辑独特的组合,因此需要双重的配置过程,同时需要考虑处理器系统和可编程逻辑。工程师会发现,其配置顺序与传统的赛灵思FPGA稍有差别。尽管如此,方法仍是相似的,生成引导镜像和完成配置存储器编程的难度不大。   虽然标准的FPGA配置实践一般只需要FPGA bit文件,...
作者:圆宵,来源:FPGA那点事儿 随着视频应用场景和内容越来越丰富,对网络传输,存储,和AI智能分析带来了越来越高的需求和挑战。以一路FHD@60fps视频为例,其RAWDATA的带宽约为3Gbps;到了4K@60fps,带宽大约为12Gbps;到8K,带宽更是会到48Gbps。这样大的数据量,如果不进行压缩是没有办法进行传输和存储的。因此,从早年的MPEG2,到当下被广泛采用的H....
上一期,我们重点学习了ZYNQ的PL开发,本期我们侧重于进行PS开发的学习。我们将在 VIVADO 开发环境下搭建 ARM+FPGA 的系统架构,并在 SDK 中编译软件实现软硬件联合开发。 本部分的学习,我们依旧借助得力的助手与伙伴——PYNQ_z2来完成。 一. 实验目的 1. 点亮开发板右下角三个灯 2. 输出“Hello,World!” 二....
作者:XCZ ,来源:硬件助手微信公众号 本篇主要介绍常用的单端逻辑电平,包括TTL、CMOS、SSTL、HSTL、POD12等。 1、TTL电平 下面以一个三输入的TTL与非门介绍TTL电平的原理。 三输入TTL与非门 当输入全1时,uI=3.6V,VT1处于倒置工作状态(集电结正偏,发射结反偏),uB1=0.7V×3=2.1V(后级电路决定的),...
作者:Evening Xilinx每一个FPGA都有一个独特的ID,也就是Device DNA,这个ID相当于我们的身份证,在FPGA芯片生产的时候就已经写死在芯片的eFuse寄存器中,具有不可修改的属性,因为使用的是熔断技术。值得说明的是,在7系列及以前,这个ID都是57bit的,但是在Xilinx的Ultraslace架构下是96bit...
对于Vivado Hls来说,输入包括Tesbench,C/C++源代码和Directives,相应的输出为IP Catalog,DSP和SysGen,特别的,一个工程只能有一个顶层函数用于综和,这个顶层函数下面的子函数也是可以被综合的,会生成相应的VHDL和Verilog代码,所以,C综合后的RTL代码结构通常是跟原始C描述的结构是一致的,除非是子函数功能很简单,所需要的逻辑量很小。...
作者:小鱼,Xilinx学术合作 一.概述 在文章《Verilog HDL入门思路梳理》我们说过应该如何去学习Verilog HDL描述。然而第一步,我们需要知道Verilog有哪些语法,它是否可以综合,可以用这个语法来描述什么逻辑功能电路呢? 其实Xilinx已经贴心地准备好了答案,还给你准备了一堆参考实例。 二. Verilog行为级描述 资料名称...
作者:XCZ ,来源:硬件助手微信公众号 本篇为逻辑电平系列文章中的第一篇,主要介绍逻辑电平相关的一些基本概念。后续将会介绍常见的单端逻辑电平(针对CMOS的闩锁效应进行详细介绍)、差分逻辑电平、单端逻辑电平的互连、差分逻辑电平的互连、一些特殊功能的互连、逻辑互连中的电流倒灌问题、以及逻辑电平的转换等。 1、常见逻辑电平 常见的逻辑电平如下: 单端:TTL、CMOS、...
由于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...
作者:NingHeChuan Get Smart About Reset: Think Local, Not Global。   对于复位信号的处理,为了方便我们习惯上采用全局复位,博主在很长一段时间内都是将复位信号作为一个I/O口,通过拨码开关硬件复位。后来也看了一些书籍,采用异步复位同步释放,对自己设计的改进。   不过自从我研读了Xilinx的White Paper后,...
作者:魏建勇,来源:2018年电子技术应用第11期 摘要: 集成工控机箱使用CPCI接口兼容各种可插拔板卡,板卡的CPCI设计多使用专用芯片搭配FPGA实现,降低了可扩展性,增加了板卡面积和成本。为了解决上述问题,设计了一种基于FPGA的CPCI接口。介绍了使用FPGA实现的CPCI协议、仿真及外部通信总线协议、外部中断机制、冲突避免机制,该设计在量产的各种CPCI板卡中使用,...
作者:材哥,玩儿转FPGA 前言 vivado和ISE的使用差别很大,Vivado是专门针对7系列和以后系列的FPGA/AP SOC进行高效设计的工具,特别是最近提出的UltraFast设计方法,能够极大地提高开发效率。ISE在支持老版本器件的基础上,目前也支持7系列/ZYNQ的设计,但是效率不能和Vivado相比。关于vivado的基本使用这里不多说,主要把一些问题点整理成“错题集”,...
作者: 小鱼,Xilinx学术合作 一. 概述 时序逻辑示意图,如下图所示。数据从一个寄存器出来,经过组合逻辑到达下一个寄存器。 在学习数字电路的过程中,我们都知道时序逻辑,但是大家对时序逻辑真的了解吗? (1)纯组合逻辑电路的缺点在哪? (3)纯组合逻辑电路完成不了什么功能? (2)为什么需要时钟和寄存器呢...
上一期的学习中,我们系统性地介绍了PYNQ与ZYNQ地区别与联系。PYNQ = Python + ZYNQ,即将ZYNQ部分功能的Python化,直接调用Python库和FPGA硬件库进行功能的开发。 Pynq降低了开发人员的门槛,但知其然也知其所以然,开发效率将会更高。因此,在进入PYNQ的python开发之前,我们先来学习ZYNQ的PL与PS开发,为接下来的学习提供良好的基础。...
作者:Alex He,Xilinx 嵌入式技术专家 Xilinx 嵌入式技术专家 Alex He 与大家分享在Docker里玩转PetaLinux的上手教程~ PetaLinux PetaLinux是Xilinx推出的针对Zynq Soc, Zynq MPSOC嵌入式开发板的基于Yocto二次封装的Linux BSP构建工具,支持Ubuntu/CentOS/...
作者: 做但不能忘思考,FPGA2嵌入式 当我们使用一种新的IP核的时候,遇到的最大问题是:以前根本没有接触过的新东西,我们会感到恐惧,不知道如何下手。比如,SelectIO该怎么来实现LVDS的功能: Step1,我们新加一个接收的SelectIO的IP核,界面如下图: Step2,打开IP核对应的数据手册和文档来学习IP核的大致使用方法,...
Zynq可扩展处理平台是赛灵思新一代 FPGA的可编程技术的产品系列。与采用嵌入式处理器的FPGA不同,Zynq产品系列的处理系统不仅能在开机时启动,而且还可根据需要配置可编程逻辑。采用这种方法,软件编程模式与全功能的标准ARM处理SoC毫无二致。 与之相关和不同的是,PYNQ = Python + ZYNQ,即将ZYNQ部分功能的Python化,...
作者:没落骑士 一、前言   FPGA以擅长高速并行数据处理而闻名,从有线/无线通信到图像处理中各种DSP算法,再到现今火爆的AI应用,都离不开卷积、滤波、变换等基本的数学运算。但由于FPGA的硬件结构和开发特性使得其对很多算法不友好,之前本人零散地总结和转载了些基本的数学运算在FPGA中的实现方式,今天做一个系统的总结归纳。 二、FPGA中的加减乘除 1.硬件资源...
FPGA+ARM是ZYNQ的特点,那么PL部分怎么和ARM通信呢,依靠的就是AXI总线。这个实验是创建一个基于AXI总线的GPIO IP,利用PL的资源来扩充GPIO资源。通过这个实验迅速入门开发基于总线的系统。 使用的板子是zc702。 AXI总线初识: AXI (Advanced eXtensible Interface),由ARM公司提出的一种总线协议。总线是一组传输通道...
作者:单博,MATLAB 国内的无线通信系统研发过程通常采用的是瀑布式开发的研发方式,项目的开发流程按照从左到右依次分为四个阶段: 瀑布式的研发方式 在瀑布式开发的研发模式中,经常需要进行大量的技术协调会进行技术沟通和协调。同时,这种递进式研发模式越来越难以应对复杂产品开发: 文本格式的需求文档很难完全避免二义性的产生; 很难在早期进行测试验证并及时发现设计问题,...
在本教程的带领下,你将在十分钟内学会在PYNQ-Z2板卡上使用传感器和LED开发自己的IoT应用! 初始化板卡 from pynq.overlays.base import BaseOverlay base = BaseOverlay("base.bit") 初始化LED Bar Grove LED bar上有10个LED灯,8个绿色的LED,...
在本教程的带领下,你将在十分钟内学会在PYNQ-Z2板卡上使用二值化神经网络开发自己的AI应用! 1. AI初学者入门第一步:分类 AI入门第一步就是对输入的图片进行分类。首先我们需要初始化一个分类器,根据最终实现分类目标的不同需要选择不同的数据集。我们可以在‘road-signs','streeview'和‘cifar10’三个数据集中选择其一,这里选择的是'road-signs'...
作者:XCZ,来源:硬件助手 本篇主要介绍ZU+系列MPSoC的外围接口,针对每个接口进行概述性介绍,后续会针对个别接口进行详细介绍原理图设计和PCB设计。 ZU+系列MPSoC的外围接口主要包括两部分:PL部分和PS部分。PL内部资源视具体型号而定,PS部分集成两个或四个ARM Cortex-A53 MPCore with CoreSight(具体数量和性能和具体型号有关),...
前言: 前面我们都是使用JTAG方式下载比特流文件,然后下载elf文件,最后点击Run as或者Debug as来运行程序。JTAG方式是通过tcl脚本来初始化PS,然后用JTAG收发信息,优点是可以在线调试,缺点是断电后程序就丢失了。为了解决程序丢失的问题,可以制作镜像文件烧写到sd卡或者flash中,上电即可加载程序。 ZYNQ有两大类启动模式:从BootROM主动启动,...
参考 书籍《RapidIO The Embedded System Interconnect》 xilinx手册pg007《Serial RapidIO Gen2 Endpoint v4.1 LogiCORE IP Product Guide》 Zynq-Linux移植学习笔记之14-RapidIO驱动开发 host初始化 直接看RapidIO的初始化,...
这年头GitHub可谓是程序员必备交友技能。毫无疑问GitHub现在已经是全球最大的开源社区了,也常常被人戏称为“全球最大同性交友平台”。 你可以在这里follow各种开源社区的技术大牛,学习到各种各样的开源技术和开源项目。 那么作为一个嵌入式工程师,我们应该如何用好GitHub呢?GitHub可以用来做些什么好玩有意思的事情呢? 追随开源项目...
分号 Tip 不要在行尾加分号, 也不要用分号将两条命令放在同一行。 行长度 Tip 每行不超过80个字符 例外: 1. 长的导入模块语句 2. 注释里的URL 不要使用反斜杠连接行。 Python会将 圆括号, 中括号和花括号中的行隐式的连接起来 , 你可以利用这个特点. 如果需要, 你可以在表达式外围增加一对额外的圆括号。 Yes: foo_bar(...
DA(Vivado)软件可以很好的帮助我们更好的去学习FPGA相关知识,例如:   •   记得使用EDA软件自带的语言模板;   •   新建 IO Planning工程初步引脚分配;   •   EDA中自带的IP核你会快速用吗? 单片机是基于FLASH结构的,所以单片机上电直接从本地FLASH中运行。...
作者:Matt Chevrier,德州仪器 为工业以太网器件供电需要解决工业以太网和工业应用的几个特定问题。 标准以太网与工业以太网之间最大的区别在于拓扑结构,如图1所示。标准以太网为星形拓扑,而工业以太网则包含线形、树形和环形等多种不同的拓扑结构。 图 1:两种类型的以太网拓扑结构 除拓扑结构以外,工厂自动化设备的工作电压为24伏,而电信设备的供电电压为48伏。...
作者:Huster-ty Xenomai是一种采用双内核机制的Linux 内核的强实时扩展。由于Linux 内核本身的实现方式和复杂度,使得Linux 本身不能使用于强实时应用。在双内核技术下,存在一个支持强实时的微内核,它与Linux 内核共同运行于硬件平台上,实时内核的优先级高于Linux 内核,它负责处理系统的实时任务,而Linux 则负责处理非实时任务,...
前言: ZYNQ 7000有三种GPIO:MIO,EMIO,AXI_GPIO MIO是固定管脚的,属于PS,使用时不消耗PL资源;EMIO通过PL扩展,使用时需要分配管脚,使用时消耗PL管脚资源;AXI_GPIO是封装好的IP核,PS通过M_AXI_GPIO接口控制PL部分实现IO,使用时消耗管脚资源和逻辑资源。 使用的板子是zc702。 1.MIO方式...
为了快速实现算法板级验证,PC端需要通过JTAG或以太网与FPGA形成通路。最简单便捷的方案是利用协议栈芯片,用户可以无视底层,利用简单的SPI协议读写寄存器实现复杂的TCP UDP等网络协议。当然带宽会受限于SPI接口有效速率,本文采用芯片为W5500,支持10M/100M自适应,其理论值高达80Mbps,基本达到算法验证的要求。   ...
作者: OpenSLee,来源:FPGA开源工作室 1. 背景知识 OPENCV(Open Source Computer Vision)被广泛的使用在计算机视觉开发上。使用Vivado HLS视频库在zynq-7000全可编程soc上加速OPENCV 应用的开发,将大大提升我们的计算机视觉开发。 图1和图2展示了如何使用opencv加速zynq-7000全可编程...
在Xilinx提供的很多ip如VDMA ,OSD,Mixer,TPG等等,在使用前都需要进行配置,配置接口往往是AXI-Lite接口,正常情况下我们一般自己编写配置逻辑或者通过MB/ZYNQ等对IP进行配置,如果在我们使用到XDMA的同时也使用到需要AXI-Lite配置的ip的话,那么有一种新的方法可以对这类型IP进行配置。首先说说XDMA,XDMA是Xilinx封装好的PCIE DMA传输IP...
FPGA毕竟不是ASIC,对时序收敛的要求更加严格,本文主要介绍本人在工程中学习到的各种时序约束技巧。 首先强烈推荐阅读官方文档UG903和UG949,这是最重要的参考资料,没有之一。它提倡要在设计的早期阶段就要排除问题,越到后期时序的改善就越困难。其中HLS层次对性能的影响是最大的。 本文将从代码风格,时序修正,工程设置等几个方面介绍本人的实践经验,希望让各位初学者快速提高,...
前言: 使用的板子是zc702。用Vivado的IP核搭建最小系统,包括ARM核(CPU xc7z020),DDR3(4×256M),一个UART串口(Mini USB转串口),纯PS,通过串口打印出HelloWorld,工程虽小,五脏俱全,算是一种朝圣。配置要和板子对应,大家注意修改。 操作步骤: 硬件部分 1. 新建Vivado工程。...
作者:做但不能忘思考 ,来源:FPGA2嵌入式 0. 概述 做FPGA开发或者是嵌入式开发,数字图像处理是一个很大的领域,回顾下大学里学的模电,数电,单片机原理,数字图像处理,通信理论,MATLAB,目前比较前沿的Python等知识联系起来,能更好的指明人生规划的方向。 1. 模拟电路 都记得我们大学学习的一门课程,模拟电路吗?难,枯燥,又感觉没有鬼用。...
在Vivado FIR滤波器设计与仿真(一)中产生了两路正弦信号,频率分别为4MHz和5MHz,今天要进行FIR滤波器设计,在进行滤波器设计之前,需要对滤波器的参数进行设置,需要借助MATLAB软件或者Filter Solutions软件,这次使用Filter Solutions来进行参数设定。 关于Filter Solutions软件的使用,这里有一篇博客比较详细的介绍了它的用法,...
一. 概述 Verilog HDL不同于我们学过的C,Python等软件设计语言;Verilog是一门硬件描述语言。这里有两个关键词:硬件,描述。 硬件:表示我们时刻要从数字电路系统的角度去认识和学习Verilog HDL 描述:而不是设计。因此表示在用动手进行Verilog编写之前,电路的架构至少已经在你脑子里构建好了,而Verilog只是把它描述出来而已...
前言: 偶数分频容易得到:N倍偶数分频,可以通过由待分频的时钟触发计数器计数,当计数器从0计数到N/2-1时,输出时钟进行翻转,并给计数器一个复位信号,使得下一个时钟从零开始计数。以此循环下去。 奇数分频如何得到呢? 第一部分  奇数分频 奇数分频方法: N倍奇数分频,首先进行上升沿触发进行模N计数,计数到(N-1)/2时输出时钟翻转,同时进行下降沿触发的模N计数,...
 本文设计思想采用明德扬至简设计法。上一篇博文中定制了自定义MAC IP的结构,在用户侧需要位宽转换及数据缓存。本文以TX方向为例,设计并验证发送缓存模块。这里定义该模块可缓存4个最大长度数据包,用户根据需求改动即可。   该模块核心是利用异步FIFO进行跨时钟域处理,位宽转换由VerilogHDL实现。需要注意的是用户数据包位宽32bit,因此包尾可能有无效字节,...
Vivado HLS中常见的接口类型有: 1. ap_none          默认类型,该类型不适用任何I/O转换协议,它用于表示只读的输入信号,对应于HDL中的wire类型。 2. ap_stable          只用于输入信号,其具体实现方式仍为ap_none。它用于向Vivado HLS的综合器表明该信号在两次复位之间值是不变的。 3. ap_vld...
对于ZYNQ MPSoC有以下几个文件, 1.FSBL 这个FSBL跟zynq-7000的fsbl是一样的,用户可以选择用cortex-a53制作启动的fsbl文件,也可以选择用cortex-r5来制作启动的fsbl文件。 2.PMUFW (pmufw.elf) PMU的配置文件,但这个不是必须的,用户是可选的,MPSOC有LPD.FPD.PL三路电源轨,...
PYNQ项目是一个新的开源框架,使嵌入式编程人员在无需设计可编程逻辑电路的情况下充分发挥Xilinx Zynq All Programmable SoC(APSoC)的功能。 与常规方式不同的是,通过PYNQ,用户可以使用Python进行APSoC编程,并且代码可直接在PYNQ-Z1上进行开发和测试。通过PYNQ,可编程逻辑电路将作为硬件库导入并通过其API进行编程,...
当我们使用vivado搭建好硬件设计后就要在SDK下进行程序编写了,在SDK中我们可以建立C/C++工程,所以就有很多的库函数可以调用,那么问题来了,如何查询我想要的API函数呢?或者是该API函数如何使用? 下面我将以GPIO的IPCore为例介绍如何查询API函数。 1.将vivado设计好的硬件设计导入到SDK中,就可以把SDK代码编辑区的变迁也让切换到system.mss页面...
作者:浅搁 FPGA2嵌入式 1. 前言 IP核这个东西相信很多人都不陌生吧,不管是哪个FPGA厂家,都会有自己的一些现成IP核供用户使用,从而节省设计的开发时间。在一个设计中,个人觉得将模块变成一个个直观的图形界面更有助于理清思路,增强整个设计的逻辑性。以前用过Microsemi的开发平台,觉得挺人性化的,你写完代码后,直接把.v文件拉到画布中,文件便会以图形模块的形式显示出来,...