极性码采用两个电压值编码:正电平代表一种信号逻辑状态,负电平代表另一种状态。极性码包括:归零码、不归零码、双相位码、块编码等。下面就进行详细介绍。
RZ Encoding
归零编码使用两组电平值:正-零,负-零。
信号变化不是发生在比特之间而是发生在每个比特内。在每个比特间隙的中段,信号将归零。比特“1”实际上是用正电平跳变到零表示,比特“0”则用负电平跳变到零表示,...
技术
初玩zynq发现,在zynq中可以运行FreeRTOS,果断试了下;测试了几个例子,一切正常,但是在使用空闲钩子函数时导致无法正常执行。
要使用空闲钩子函数必须将FreeRTOSConfig.h文件中的configUSE_IDLE_HOOK定义为1,当然编译前已手动将其定义改为1,但是空闲钩子函数仍然没有运行。
查看源文件没发现错误,...
作者:猫叔
延迟约束
对于延迟约束,相信很多同学是不怎么用的,主要可能就是不熟悉这个约束,也有的是嫌麻烦,因为有时还要计算PCB上的走线延迟导致的时间差。而且不加延迟约束,Vivado也只是在Timing Report中提示warning,并不会导致时序错误,这也会让很多同学误以为这个约束可有可无。
但其实这种想法是不对的,比如在很多ADC的设计中,...
来源:硬件助手
本文主要介绍各种通信接口物理层的编码技术,包括数字-数字接口编码方式、数字-模拟接口编码方式、模拟-数字接口编码方式、模拟-模拟接口编码方式。
Digital to Digital Encoding
数字-数字接口的编码方式主要就是对二进制比特流的编码,常见的可以归为三大类:
单极性码(单电平):非零电平代表一种信号逻辑状态,零电平代表另一种;...
作者:猫叔
FPGA的调试是个很蛋疼的事,即便Vivado已经比ISE好用了很多,但调试起来依旧蛋疼。即便是同一个程序,FPGA每次重新综合、实现后结果都多多少少会有所不同。而且加入到ila中的数据会占用RAM资源,影响布局布线的结果。
尤其是在时序紧张的情况下,ila占的资源越多,布线的难度就会越大。当时序不收敛时,就可能会导致一个问题,我们从ila中看到的信号可能不是真实的...
作者:胡永怀,来源: FPGA技术联盟
Q:
什么是上拉/下拉电阻?有什么作用?又该怎么用?
A:
上拉电阻:将一个不确定的信号通过电阻连接到高电平(VCC),使该信号初始电平为高电平。
下拉电阻:将一个不确定的信号通过电阻连接到低电平(GND),使该信号的初始电平为低电平。
上拉下拉电阻如何接线?
上拉电阻示例...
作者:猫叔
多周期路径约束
多周期路径,我们一般按照以下4个步骤来约束:
1. 带有使能的数据
首先来看带有使能的数据,在本工程中的Tming Report中,也提示了同一个时钟域之间的几个路径建立时间不满足要求
其实这几个路径都是带有使能的路径,使能的周期为2倍的时钟周期,本来就应该在2个时钟周期内去判断时序收敛。因此,我们添加时序约束:...
本文主要介绍Zynq UltraScale+ MPSoC系列器件的PS-PL之间互连的AXI总线接口。
Zynq MPSoC系列器件的AXI总线结构如下图所示:
PS侧可以使用PS-PL AXI接口调用PL侧的硬件加速器等接口。这种互连属于高带宽、低延迟的连接方式。
Zynq MPSoC提供了12个PS-PL AXI端口,详细如下表所示:...
作者:Andreas Braun...
作者:猫叔
伪路径约束
在本章节的“2 约束主时钟”一节中,我们看到在不加时序约束时,Timing Report会提示很多的error,其中就有跨时钟域的error,我们可以直接在上面右键,然后设置两个时钟的伪路径。
这样会在xdc中自动生成如下约束:
set_false_path -from [get_clocks -of_objects [...
作者:默宸,来源: FPGA技术联盟
前言
很多FPGA初学者,都会怀疑学习FPGA有没有前途,发展前景怎么样,到底该怎样学习FPGA???各种迷茫,导致无法踏踏实实、全身心投入FPGA学习与开发工作中。下面请看看一个死磕FPGA 15年的大神给大家的肺腑之言,相信看完之后的你不在徘徊、不再犹豫、能够勇往直前。
作为一个从事了15年FPGA行业的大龄工程师。...
作者:猫叔
I/O约束
I/O约束是必须要用的约束,又包括管脚约束和延迟约束。
管脚约束
管脚约束就是指管脚分配,我们要指定管脚的PACKAGE_PIN和IOSTANDARD两个属性的值,前者指定了管脚的位置,后者指定了管脚对应的电平标准。
在vivado中,使用如下方式在xdc中对管脚进行约束。
set_property -dict {...
本文主要介绍Xilinx FPGA的GTx的参考时钟。下面就从参考时钟的模式、参考时钟的选择等方面进行介绍。
参考时钟的模式
参考时钟可以配置为输入模式也可以是输出模式,但是在运行期间不能切换。作为输入时,用于驱动Quad 或者channel PLLs,作为输出时,可以来自于同一个Quad中的任意一个channel。7系列的GTx只能作为输入,而Ultra和Ultra+...
作者:默宸,来源: FPGA技术联盟
跳频通信具有良好的抗干扰、抗多径衰落、抗截获等能力和同步迅速等特点,广泛应用于军事、交通、商业等各个领域。其关键技术主要有三点:跳频序列发生器、跳频频率合成器和跳频同步器。频率合成器是跳频系统的心脏,直接影响到跳频信号的稳定性和产生频率的准确度,在跳频频率合成器中,直接数字式频率合成器(Direct Digital Synthesizer :DDS)...
作者:王欢,来源: FPGA技术联盟
PCB布局技巧
1、滤波电容的放置要与电源接近,振荡器也是,在振荡器前端放电阻。
2、通过Design的Board Shape改变电路板大小。
3、画完电路板大小后,在Mechanical1层用10mil线画板框(部分工程师喜欢用禁止布线层即KeepOut-Layer层)P+L布线。
4、在布置PCB时,必须先要设置规则(很重要...
一、SPI协议
1、SPI协议概括
SPI(Serial Peripheral Interface)——串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM、FLASH、实时时钟,AD转换器以及数字信号处理器和数字信号解码器之间。SPI是一种高速,全双工,同步的通信总线,在芯片上只占用四根线(CS、MOSI、MISO、SCK...
作者:猫叔
git有多好用我就不用多说了,可谓是程序员必备技能之一。对于一般的软件代码来说,只需把源文件进行git管理即可。但对于FPGA工程师来说,使用git多多少少有些蛋疼,主要有下面几个问题:
① 有bd文件的工程中,只把bd文件加入git是不行的;
② 很多公司都会有一些积累下来的hdl文件,放到某个文件夹中,所有的工程目录下都会有这个文件夹,...
注意:本文所有内容皆来源于Xilinx工程师,如需转载,请写明出处作者及赛灵思论坛链接并发邮件至cncrc@xilinx.com,未经Xilinx及著作权人许可,禁止用作商业用途。
引言
本篇博文并非技术类文章,但无疑是专为技术人员撰写的。完成几个项目之后,您心知肚明这些项目能够一蹴而就或多或少都掺杂些运气成分。您可能会遇到人为错误、事先未曾预料到的困难、甚至是超出您控制的问题(比如...
前言
在FPGA的设计中,避免使用锁存器是几乎所有FPGA工程师的共识,Xilinx和Altera也在手册中提示大家要慎用锁存器,除非你明确知道你确实需要一个latch来解决问题。而且目前网上大多数文章都对锁存器有个误解,我们后面会详细说明。
这篇文章,我们包含如下内容:
①锁存器、触发器和寄存器的原理和区别,为什么锁存器不好?
② 什么样的代码会产生锁存器?
③...
Vivado时序约束中Tcl命令的对象及属性
在前面的章节中,我们用了很多Tcl的指令,但有些指令并没有把所有的参数多列出来解释,这一节,我们就把约束中的Tcl指令详细讲一下。
我们前面讲到过get_pins和get_ports的区别,而且我们也用过get_cells、get_clocks和get_nets这几个指令,下面就通过一张图直观展现它们的区别。...
注意:本文所有内容皆来源于Xilinx工程师,如需转载,请写明出处作者及赛灵思论坛链接并发邮件至cncrc@xilinx.com,未经Xilinx及著作权人许可,禁止用作商业用途。
Video Frame Buffer IP 简介
Video Frame Buffer Read/Write IP 支持您将视频数据从存储器域(AXI4 存储器映射接口)迁移到 AXI4-Stream...
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个独立的传输通道:读地址通道、读数据通道、写地址通道、写数据通道、写响应通道。地址通道携带控制消息用于描述被传输的数据属性,...