FPGA的用处比我们平时想象的用处更广泛,原因在于其中集成的模块种类更多,而不仅仅是原来的简单逻辑单元(LE)。
早期的FPGA相对比较简单,所有的功能单元仅仅由管脚、内部buffer、LE、RAM构建而成,LE由LUT(查找表)和D触发器构成,RAM也往往容量非常小。
现在的FPGA不仅包含以前的LE,RAM也更大更快更灵活,管教IOB也更加的复杂,支持的IO类型也更多,...
技术
在FPGA中我们写的最大的逻辑是什么?相信对大部分朋友来说应该是计数器,从最初板卡的测试时我们会闪烁LED,到复杂的AXI总线中产生地址或者last等信号,都会用到计数器,使用计数器那必然会用到进位链。
可能很多刚开始接触FPGA的同学没听过进位链,也就是Carry Chain,我们这里再回顾一下。FPGA的三个主要资源为:
1. 最低逻辑单元
可配置逻辑单元(CLB)
存储单元...
原作:Archie Mistry
翻译:豌豆花下猫@Python猫
原文:https://morioh.com/p/765b19f066a4
Python 是一门对初学者友好的编程语言,是一种多用途的、解释性的和面向对象的高级语言。
它拥有非常小的程序集,非常易于学习、阅读和维护。其解释器可在Windows、Linux 和 Mac OS 等多种操作系统上使用。...
Zynq中断大致可分为三个部分
第一部分为SGI,软件生成的中断,共16个端口;
第二部分为PPI,CPU私有外设中断,有5个;
第三部分为SPI,共享外设中断,来自于44个PS端的IO外设以及16个PL端的中断。中间部分为GIC,也即中断控制器,用于对中断进行使能、关闭、掩码、设置优先等。
以下为中断控制器框图,主要的控制器部分为ICC和ICD,...
多周期路径约束
多周期路径,我们一般按照以下4个步骤来约束:
1. 带有使能的数据
首先来看带有使能的数据,在本工程中的Tming Report中,也提示了同一个时钟域之间的几个路径建立时间不满足要求
其实这几个路径都是带有使能的路径,使能的周期为2倍的时钟周期,本来就应该在2个时钟周期内去判断时序收敛。因此,我们添加时序约束:...
在编写程序之前,先来了解GPIO的BANK分布,在UG585文档GPIO一章中可以看到GPIO是有4个BANK,注意与MIO的BANK区分。BANK0控制32个信号,BANK1控制22个信号,总共是MIO的54个引脚,BANK2和BANK3共能控制64个PL端引脚,每一组都有三个信号,输入EMIOGPIOI,输出EMIOGPIOO,输出使能EMIOGPIOTN,共192个信号。...
约束衍生时钟
系统中有4个衍生时钟,但其中有两个是MMCM输出的,不需要我们手动约束,因此我们只需要对clk_samp和spi_clk进行约束即可。约束如下:
create_generated_clock -name clk_samp -source [get_pins clk_gen_i0/clk_core_i0/clk_tx] -divide_by 32 [...
作者:默宸 ,来源:FPGA开源工作室
前言
随着人工智能和物联网技术的融合,AIoT(人工智能物联网)的概念应运而生,即AI(人工智能)+IoT(物联网)。目前,边缘AI正广泛应用于工业领域,这种技术可以为工业物联网边缘的多传感器分析和机器学习应用提供最低的时延、功耗和成本。在工业领域,当前热门的边缘AI应用包括工业机器人、智慧路灯、智能监控等。
目前,...
作者: 郑圆圆,来源:网络交换FPGA
今天跟大家分享的内容很重要,也是我们调试FPGA经验的总结。随着FPGA对时序和性能的要求越来越高,高频率、大位宽的设计越来越多。在调试这些FPGA样机时,需要从写代码时就要小心谨慎,否则写出来的代码可能无法满足时序要求。
跨时钟域信号的约束写法
问题一:没有对设计进行全面的约束导致综合结果异常,比如没有设置异步时钟分组,...
因为ZYNQ 的PS 和PL 部分的电源有上电顺序的要求,在电路设计中,按照ZYQN 的电源要求设计,上电依次为1.0V -> 1.8V -> 1.5 V -> 3.3V -> VCCIO,下图为电源的电路设计:
ZYNQ芯片的电源分PS系统部分和PL逻辑部分,两部分的电源分别是独立工作。PS系统部分的电源和PL逻辑部分的电源都有上电顺序,...
约束主时钟
在这一节开讲之前,我们先把wave_gen工程的wave_gen_timing.xdc中的内容都删掉,即先看下在没有任何时序约束的情况下会综合出什么结果?
对工程综合并Implementation后,Open Implemented Design,会看到下图所示内容。
可以看到,时序并未收敛。可能到这里有的同学就会有疑问,...
注意:本文所有内容皆来源于Xilinx工程师,如需转载,请写明出处作者及赛灵思论坛链接并发邮件至cncrc@xilinx.com,未经Xilinx及著作权人许可,禁止用作商业用途。
BY Anatoli Curran
在 Vivado/ISE 中遇到许可问题时,该怎么办呢?
本文介绍了使用不同类型的许可证时可能遇到的不同问题。您可单击以下标题,...
Zynq中AXI4-Lite功能
AXI4-Lite接口是AXI4的子集,专用于和元器件内的控制寄存器进行通信。AXI-Lite允许构建简单的元件接口。这个接口规模较小,对设计和验证方面的要求更少。AXI4-Lite接口的特性如下:
1) 突发长度为1。
2) 所有访问数据的宽度和数据总线宽度相同。
3) 支持数据总线宽度为32位或64位。
4)...
作者:猫叔
我们以Vivado自带的wave_gen工程为例,该工程的各个模块功能较为明确,如下图所示。为了引入异步时钟域,我们在此程序上由增加了另一个时钟--clkin2,该时钟产生脉冲信号pulse,samp_gen中在pulse为高时才产生信号。
下面我们来一步一步进行时序约束。
1. 梳理时钟树
我们首先要做的就是梳理时钟树,...
互联结构包括直通模式、只转换模式、N-1互联模式、N-M互联模式。
1. 直通模式
当只有一个主设备和一个从设备使用AXI互联时,AXI互联不执行任何转换或流水线功能,AXI互联结构退化成直接的线连接。在这种模式下,没有延迟,同时不消耗逻辑资源。
2. 只转换模式
当连接一个主设备和一个从设备时,AXI互联执行不同的转换和流水线功能:数据位宽转换、时钟速率转换、...
作者:Jonathan Hsu
编译:ronghuaiyang
导读
想不想去掉瀑布一样的For循环?使用函数式编程来写代码。
你有没有过看自己的代码的时候,看到瀑布一样的 for 循环?你是否发现自己不得不眯着眼睛,向显示器前倾才能看得更清楚?
我知道我有过。
For 循环是解决问题的瑞士军刀,但是,当需要浏览代码以快速阅读你所做的事情时,它们可能会让人不知所措...
xdc约束优先级
在xdc文件中,按约束的先后顺序依次被执行,因此,针对同一个时钟的不同约束,只有最后一条约束生效。
虽然执行顺序是从前到后,但优先级却不同;就像四则运算一样,+-x÷都是按照从左到右的顺序执行,但x÷的优先级比+-要高。
时序例外的优先级从高到低为:
① Clock Groups (set_clock_groups)
② False Path (...
前言
这是一个算力不足的年代,这是一个算力重建的年代,破局与重建关乎时代变迁,破局与重建也激发着创新者的斗志。
01、愿算力与你同在:当全世界的电力都用上还不够
“算力”在未来,就像当年的蒸汽机、电力一样,俨然已经是生产力发展的核心要素,也就是说,谁拥有超越别人的“算力”,谁就会拥有更高的生产力和效率,谁也就能在创新上实现真正的突破,成为推动产业和时代进步的原动力。所以“算力”...
作者:Quenton Hall,赛灵思公司工业、视觉、医疗及科学市场的 AI 系统架构师
在上一篇文章中,我们简要介绍了更高层次的问题,这些问题为优化加速器的需求奠定了基础。作为一个尖锐的问题提醒,现在让我们通过一个非常简单的图像分类算法,来看一看与之相关联的计算成本与功耗。
利用 Mark Horowitz 提供的数据点,我们可以考虑图像分类器在不同空间限制下的相对功耗。...
作者:Quenton Hall, 赛灵思公司工业、视觉、医疗及科学市场的 AI 系统架构师
在 2014 年,斯坦福大学教授 Mark Horowitz 发表了一篇题目为“计算的能源问题(以及我们该怎么办)”的论文。这篇具有深远意义的论文,讨论了当前半导体行业所面临的最热门的、与登纳德缩放比例定律 (Dennard Scaling )和摩尔定律 (Moore’s Law) 失效相关的挑战...
两种时序例外
多周期路径
上面我们讲的是时钟周期约束,默认按照单周期关系来分析数据路径,即数据的发起沿和捕获沿是最邻近的一对时钟沿。如下图所示。
默认情况下,保持时间的检查是以建立时间的检查为前提,即总是在建立时间的前一个时钟周期确定保持时间检查。这个也不难理解,上面的图中,数据在时刻1的边沿被发起,建立时间的检查是在时刻2进行,而保持时间的检查是在时刻1(...
因为ZYNQ 的PS 和PL 部分的电源有上电顺序的要求,在电路设计中,按照ZYQN 的电源要求设计,上电依次为1.0V -> 1.8V -> 1.5 V -> 3.3V -> VCCIO,下图为电源的电路设计:
ZYNQ芯片的电源分PS系统部分和PL逻辑部分,两部分的电源分别是独立工作。PS系统部分的电源和PL逻辑部分的电源都有上电顺序,...
AXI协议是基于burst的,主机只给出突发传输的第一个字节的地址,从机必须计算突发传输后续的地址。突发传输不能跨4KB边界(防止突发跨越两个从机的边界,也限制了从机所需支持的地址自增数)。
1)突发长度
ARLEN[7:0]决定读传输的突发长度,AWLEN[7:0]决定写传输的突发长度。AXI3只支持1~16次的突发传输(Burst_length=AxLEN[3:0]+1),...
时钟周期约束
时钟周期约束,顾名思义,就是我们对时钟的周期进行约束,这个约束是我们用的最多的约束了,也是最重要的约束。
下面我们讲一些Vivado中时钟约束指令。
1. Create_clock
在Vivado中使用create_clock来创建时钟周期约束。使用方法为:
create_clock -name <name> -period...
注意:本文所有内容皆来源于Xilinx工程师,如需转载,请写明出处作者及赛灵思论坛链接并发邮件至cncrc@xilinx.com,未经Xilinx及著作权人许可,禁止用作商业用途。
BY John Blaine
简介
许多 FPGA 设计都难以达成所期望的性能目标。原因不尽相同,以下列出的只是其中部分可能的原因:
未遵循 UltraFast 设计方法
时序约束不良...
前一篇文章《Python 中如何实现参数化测试?》中,我提到了在 Python 中实现参数化测试的几个库,并留下一个问题:
它们是如何做到把一个方法变成多个方法,并且将每个方法与相应的参数绑定起来的呢?
我们再提炼一下,原问题等于是:在一个类中,如何使用装饰器把一个类方法变成多个类方法(或者产生类似的效果)?
# 带有一个方法的测试类
class TestClass...
随着USB接口的越来越普及,现在几乎所有的接口都可以转换成USB接口,本文主要介绍一下Xilinx FPGA的JTAG接口转换成USB接口的方案。
Xilinx FPGA的JTAG接口可以有如下几种方式引出:
• 使用14pin/20pin标准的JTAG接口引出;
• 使用Xilinx通用的6pin排针引出;...
作者:宸宸,来源:FPGA开源工作室
Tcl介绍
Vivado是Xilinx最新的FPGA设计工具,支持7系列以后的FPGA及Zynq 7000的开发。与之前的ISE设计套件相比,Vivado可以说是全新设计的。无论从界面、设置、算法,还是从对使用者思路的要求,都是全新的;在运行速度、算法优化和功能整合等很多方面都有了显著地改进。但是对初学者来说,...
AXI4.0-lite是AXI的简化版本,ACE4.0 是AXI缓存一致性扩展接口,AXI4.0-stream是ARM公司和Xilinx公司一起提出,主要用在FPGA进行以数据为主导的大量数据的传输应用。
AXI协议是基于burst的传输,并且定义了5个独立的传输通道:读地址通道、读数据通道、写地址通道、写数据通道、写响应通道。地址通道携带控制消息用于描述被传输的数据属性,...
状态机
1、状态机是许多数字系统的核心部件,是一类重要的时序逻辑电路。通常包括三个部分:一是下一个状态的逻辑电路,二是存储状态机当前状态的时序逻辑电路,三是输出组合逻辑电路。
2、根据状态机的输出信号是否与电路的输入有关分为Mealy型状态机和Moore型状态机。电路的输出信号不仅与电路当前状态有关,还与电路的输入有关,称为 Mealy 型状态机,而电路的输出仅仅与各触发器的状态,...
本文主要介绍FPGA选型时的速度等级这个参数。
大家在进行FPGA选型时都会看见一个参数:Speed Grade,这就是芯片的速度等级。
芯片的速度等级不是专门设计出来的,而是在芯片生产出来之后,实际测试标定出来的;速度快的芯片在总产量中的比率低,价格也就相应地高。
这是Xilinx FPGA的排序方法是“序号越高,速度等级也越高”。...
时序路径
典型的时序路径有4类,如下图所示,这4类路径可分为片间路径(标记①和标记③)和片内路径(标记②和标记④)。
对于所有的时序路径,我们都要明确其起点和终点,这4类时序路径的起点和终点分别如下表。
这4类路径中,我们最为关心是②的同步时序路径,也就是FPGA内部的时序逻辑。
时序模型
典型的时序模型如下图所示,...
本文主要介绍Xilinx FPGA的FMC接口。
Xilinx FPGA的FMC是FPGA Mezzanine Card的简称。FMC分为处理引擎(载卡)和I/O引擎(FMC模块)两大部分。载卡和模块之间通过连接器连接(Samtec的),载卡上的连接器通常使用母座(female),模块上的连接器通常使用公座(male),设计人员可以重复利用单个载卡(...
注意:本文所有内容皆来源于Xilinx工程师,如需转载,请写明出处作者及赛灵思论坛链接并发邮件至cncrc@xilinx.com,未经Xilinx及著作权人许可,禁止用作商业用途。
BY Hemang Divyakant Parikh
有多种类型的时序违例可归类为脉冲宽度违例。
- 最大偏差违例(详见此处)
- ...
周期约束理论
首先来看什么是时序约束,泛泛来说,就是我们告诉软件(Vivado、ISE等)从哪个pin输入信号,输入信号要延迟多长时间,时钟周期是多少,让软件PAR(Place and Route)后的电路能够满足我们的要求。因此如果我们不加时序约束,软件是无法得知我们的时钟周期是多少,PAR后的结果是不会提示时序警告的。
周期约束就是告诉软件我们的时钟周期是多少,...
作者: 潘伟涛 ,来源:网络交换FPGA
“要养成良好的Verilog代码风格,要先有硬件电路框图之后再写代码的习惯,设计出良好的时序,这样才能在FPGA开发或者ASIC设计中起到事半功倍的效果,否则会事倍功半。”
01、代码规范
一、概述
1、always\assign\reg\wire
2、文件名与module名要一致,一个文件一个module
3、...
本文想针对测试中一种很常见的测试场景,即参数化测试,继续聊聊关于测试的话题,并尝试将这几个测试框架串联起来,做一个横向的比对,加深理解。
1、什么是参数化测试?
对于普通测试来说,一个测试方法只需要运行一遍,而参数化测试对于一个测试方法,可能需要传入一系列参数,然后进行多次测试。
比如,我们要测试某个系统的登录功能,就可能要分别传入不同的用户名与密码,进行测试:...
注意:本文所有内容皆来源于Xilinx工程师,如需转载,请写明出处作者及赛灵思论坛链接并发邮件至cncrc@xilinx.com,未经Xilinx及著作权人许可,禁止用作商业用途。
BY Hemang Divyakant Parikh
有多种类型的时序违例可归类为脉冲宽度违例。
- 最大偏差违例(本文详解之重点)
- ...
本篇文章参考Xilinx White Paper:Get Smart About Reset: Think Local, Not Global
在没看这篇文章前,回想一下平时我们常用的复位方式:
① 首先,上电后肯定是要复位一下,不然仿真时会出现没有初值的情况;
② 最好有个复位的按键,在调试时按一下复位键就可以全局复位了;
③ 也许是同步复位,也许是异步复位,...
作者:默宸
1、什么是同步逻辑和异步逻辑?
同步时序逻辑电路的特点:电路中所有的触发器都是与同一个时钟或者该时钟的衍生时钟驱动,而且当时钟脉冲到来时,电路的状态才能改变。改变后的状态将一直保持到下 一个时钟脉冲的到来,此时无论外部输入有无变化,寄存器状态都是稳定的。
异步时序逻辑电路的特点:电路中除了触发器外,还可以有其延迟元器件,电路中没有统一的时钟,...
标题:Python Tips: Dynamic function definition
作者:Philip Trauner
译者:豌豆花下猫”
来源:Python猫(微信号:python_cat)”
在 Python 中,没有可以在运行时简化函数定义的语法糖。然而,这并不意味着它就不可能,或者是难以实现。
from types import FunctionType...
作者: 邙嘉璐 ,来源:网络交换FPGA
10G以太网光口与高速串行接口的使用越来越普遍,本文拟通过一个简单的回环实验,来说明在常见的接口调试中需要注意的事项。各种Xilinx FPGA接口学习的秘诀:Example Design。欢迎探讨。
一、实验目的
为实现大容量交换机与高速率通信设备之间的高效数据传输,高速接口的理解与使用愈发显现出其重要地位。...
作者:默宸 ,来源:FPGA开源工作室
XDC介绍
XDC 是 Xilinx Design Constraints 的简写,但其基础语法来源于业界统一的约束规范SDC。XDC 在本质上就是 Tcl 语言,但其仅支持基本的 Tcl 语法如变量、列表和运算符等等,对其它复杂的循环以及文件 I/O 等语法可以通过在 Vivado 中 source 一个 Tcl 文件的方式来补充。...
概述
此项目解释了如何在FPGA上使用resizer IP来调整图像的大小。其中对比了两种图像大小调整的解决方案的运算速度,其中之一为使用Python Image Library通过软件算法实现图像大小调整,另一种使用Xilinx xfopencv library实现了在FPGA上硬件加速的图像大小调整。
初始化
1. 首先在SD卡内配置Pynq-Z2最新镜像PYNQ...
注意:本文所有内容皆来源于Xilinx工程师,如需转载,请写明出处作者及赛灵思论坛链接并发邮件至cncrc@xilinx.com,未经Xilinx及著作权人许可,禁止用作商业用途。
BY Alan Schuler
基本联合
在 SystemVerilog 中,联合只是信号,可通过不同名称和纵横比来加以引用。
其工作方式为通过 typedef 来声明联合,...
对于VerilogHDL语言中,经常在always模块中,面临两种赋值方式:阻塞赋值和非阻塞赋值。对于初学者,往往非常迷惑这两种赋值方式的用法,本章节主要介绍这两种文章的用法。其实,有时候概念稍微不清楚,Bug就会找到我们,下面一文扫清阻塞赋值和非阻塞赋值所有的障碍。
基本概念
阻塞赋值(Blocking Assignment)
阻塞赋值的基本描述格式为:
[变量...
在数字电路中,出于应用的需要,我们可以使用无符号数,即包括0及整数的集合;也可以使用有符号数,即包括0和正负数的集合。在更加复杂的系统中,也许这两种类型的数,我们都会用到。
有符号数通常以2的补码形式来表示。图1列出了4位二进制表示法所对应正负数。进一步观察,我们发现两种类型数的加减法是一样的,做加法和减法就是 在数轮上按正时钟转转或按反时钟转。比方说,1001+0100,...
上一篇博文介绍了GTX的发送端,这一篇将介绍GTX的RX接收端,GTX RX接收端的结构和TX发送端类似,数据流方向相反,不过和发送端也有一些区别,GTX的RX接收端结构图如图1所示:
图1
下面将根据数据流方向介绍一下RX接收端各个电路部分的功能。
RX Equalizer (DFE and LPM):RX信号从AFE(模拟前端)进来之后,首先经过RX均衡器,...
在使用Xilinx FPGA芯片中SGMII IP核进行千兆以太网调试时,经常会遇到以太网接口收到的前导码长度不足7个字节55的情况,但这种情况确实正常现象。这就要求在设计代码处理前导码时不能将55的个数作为判据,而是只要有55转换为D5,就应该认为前导码接收成功了。不了解前导码的同学可以参看文章《你见过物理层的以太网帧长什么样子吗?》。
SGMII接口基本功能测试
SGMII接口(...
作者:OpenSLee
在《基于FPGA的多级CIC滤波器实现四倍抽取一》和《基于FPGA的多级CIC滤波器实现四倍抽取二》中我们先来了解滑动平均滤波器、微分器、积分器以及梳状滤波器原理以及它们的幅频响应。此篇我们将用verilog实现基于FPGA的多级CIC滤波器实现四倍插值。
1 CIC滤波器的基本概述
CIC(积分梳状)滤波器是无线通信中的常用模块,一般用于数字下变频(...