FPGA 异步时钟处理方】的更多相关文章

1 假设FPGA设计,包括不同的频率的时钟,它会发出涉及异步时钟. 我们需要一些方法来使时钟同步,从而保证FPGA可靠性设计. 2 在建立和保持时间所构成的有效时间窗体内,数据输入到触发器进行转换. 假设数据的到达时间不满足建立或者保持时间就会产生时序冲突. 此时触发器的输出就有可能停留在非逻辑0 或1 的范围内(这个状态叫做准稳态).从而造成逻辑错误. 3 假设异步时钟的相位不可以全然对齐就有可能引起2中所述的故障,并且这样的故障是不可再现的,也无法通过仿真发现. 4 解决方法,即时钟同步问题…
1 引言    基于FPGA的数字系统设计中大都推荐采用同步时序的设计,也就是单时钟系统.但是实际的工程中,纯粹单时钟系统设计的情况很少,特别是设计模块与外围芯片的通信中,跨时钟域的情况经常不可避免.如果对跨时钟域带来的亚稳态.采样丢失.潜在逻辑错误等等一系列问题处理不当,将导致系统无法运行.本文总结出了几种同步策略来解决跨时钟域问题. 2 异步设计中的亚稳态    触发器是FPGA设计中最常用的基本器件.触发器工作过程中存在数据的建立(setup)和保持(hold)时间.对于使用上升沿触发的触…
一.典型方法 典型方法即双锁存器法,第一个锁存器可能出现亚稳态,但是第二个锁存器出现亚稳态的几率已经降到非常小,双锁存器虽然不能完全根除亚稳态的出现(事实上所有电路都无法根除,只能尽可能降低亚稳态的出现),但是基本能够在很大程度上减小这种几率.最后的一个D触发器和逻辑电路组成的是一个采沿(上升沿,修改一下就能采集下降沿)电路,即当第二个锁存器的输出中出现1个上升沿,那么最后的逻辑输出就会产生1个clock的高电平脉冲 二.结绳法 1.结绳法1:利用数据的边沿作时钟(例子中上升沿).(可以将脉冲无…
有些东西当你习以为常而不去深思熟虑的时候,致命的错误就会因此埋下!      FPGA开发中难免会遇到跨时钟域处理的问题,而对于单比特信号,我会不假思索的回答:打两拍不久解决了吗?但是事实时,这佯作的前提条件是:信号A从clk1进入到clk2的时候,clk1的是一个慢时钟,而clk2是一个快时钟.这样在快时钟域把信号A延迟两排,总能采样到稳定的数据. 但是如果是一个快时钟信号进入到一个慢时钟域中,上面的做法就不一定成立!单比特信号A在快时钟周期内2个clk保持稳定,但是快时钟域内2个clk的时钟…
对FPGA的全局时钟了解不多,遂转载一篇文档: http://xilinx.eetop.cn/?action-viewnews-itemid-42 目前,大型设计一般推荐使用同步时序电路.同步时序电路基于时钟触发沿设计,对时钟的周期.占空比.延时和抖动提出了更高的要求.为了满足同步时序设计的要求,一般在FPGA设计中采用全局时钟资源驱动设计的主时钟,以达到最低的时钟抖动和延迟. FPGA全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元…
文章主要是基于学习后的总结. 1. 时钟域 假如设计中所有的触发器都使用一个全局网络,比如FPGA的主时钟输入,那么我们说这个设计只有一个时钟域.假如设计有两个输入时钟,如图1所示,一个时钟给接口1使用,另一给接口2使用,那么我们说这个设计中有两个时钟域. 2. 亚稳态 触发器的建立时间和保持时间在时钟上升沿左右定义了一个时间窗口,如果触发器的数据输入端口上数据在这个时间窗口内发生变化(或者数据更新),那么就会产生时序违规.存在这个时序违规是因为建立时间要求和保持时间要求被违反了,此时触发器内部…
FPGA跨时钟数据传输,是我们经常遇到的问题的,下面给出一种跨时钟握手操作的电路结构.先上图 先对与其他人的结构,这个结构最大的特点是使用 req 从低到高或者高到低的变化 来表示DIN数据有效并开始传输.并且同过判断 req与ack信号是否相等就可以判断传输是否完成.当req !=ack时表示正在传输,不可以发起新的传输操作.当req=ack时表示传输完成,可以开始新的传输过程. 并且这样的结构在req传输发生亚稳态时也可以有效的传输信号,可以适应任意时钟域之间的数据传输.仿真图如下 代码:…
1.什么是xilinx fpga全局时钟资源 时钟对于一个系统的作用不言而喻,就像人体的心脏一样,如果系统时钟的抖动.延迟.偏移过大,会导致系统的工作频率降低,严重时甚至会导致系统的时序错乱,实现不了预期的逻辑功能.xilinx fpga内的全局时钟资源可以很好的优化时钟的性能,因此在设计时要尽可能多的使用fpga内部的时钟资源.xilinx fpga内部的全局时钟采用全铜工艺实现,配合专用时钟缓冲和驱动结构,可以使进入全局时钟网络的时钟到达fpga内部各个逻辑单元的抖动和延迟最小.全局时钟资源…
FIFO一般用于通过两个不同时钟域的数据传输.一个水池有进和出两个通道,由于进出口水流不一致所以需要水池加以缓冲.堆栈也是相当于水池的作用.如果输入端不是连续的数据流,可以通过堆栈来调节使数据以稳定的状态输出.如果数据的输入时钟大于输出,那么总有一个时间使堆栈溢出则溢出的这部分会被舍弃.一般异步时钟需要同步,本文只是基于FIFO的基本原理编程.后续会对FIFO进行技术上的改进. 代码: module FIFIO(input clkin,input write,input [:] datain,i…
在第一个独立开发的FPGA项目中,使用了Altera平台的三速以太网IP,工作在100M模式下,外部输入的PHY时钟频率为25MHz. 由于在前期没有注意这个外部输入的时钟,导致最后不得不在板子上飞线,完成以太网的调试.这篇文章主要讲讲在做FPGA开发的时候,如何考虑时钟资源的评估!? 1 .使用的时钟频率和相位变化范围?是用DCM还是PLL? 2.设计中使用到的IP核需要多种时钟域吗?用到了多时钟,它们在期间上怎么选择和分布? FPGA上时钟资源有全局时钟资源,水平时钟资源.垂直时钟资源,区域…
FPGA项目设计中,通常会遇到多时钟处理.即一个PLL输出多个时钟,根据条件选择合适的时钟用作系统时钟.方案一: 外部晶振时钟进入PLL,由PLL输出多个时钟,MUX根据外部条件选择时钟输出做为系统使用. 方案在时钟频率比较低的情况下是可行的.设计时注意MUX使用组合逻辑实现的,注意case语句中default选项必须有输出,否则会出现锁存器. 当输出时钟频率较高时,这种方案的时序约束就比较麻烦.除了使用creat_clock命令约束PLL输入时钟,使用creat_generate_clock约…
时钟架构总览 7系的FPGA使用了专用的全局(Global)和区域(Regional)IO和时钟资源来管理设计中各种的时钟需求.Clock Management Tiles(CMT)提供了时钟合成(Clock frequency synthesis),倾斜矫正(deskew),过滤抖动(jitter filtering)功能.非时钟资源,例如本地布线,不建议使用在时钟设计中. 全局时钟树(Global clock tree)可以驱动device中的所有同步原件(synchronous eleme…
7系列FPGA中包含了多达24个CMT(时钟管理单元)(实际上V7常见只有20个),MMCM和PLL均为时钟综合器,对外部输入时钟.内部时钟进行处理,生成需要的低抖动时钟.PLL是MMCM的功能子集,也是基于MMCM的.其中MMCM包含的额外特性有: 输入多路复用器从IBUFG,BUFG,BUFR,BUFH,GTs(CLKIN only)或互连(不推荐)中选择其一 作为参考和反馈时钟,每个时钟输入都经过一个可编程的计数器(D).相位频率检测器(PFD)比较输入(参考)时钟和反馈时钟的上升边缘的相…
小梅哥编写,未经许可严禁用于任何商业用途 近期,一直在调试使用Verilog编写的以太网发送摄像头数据到电脑的工程(以下简称以太网图传).该工程基于今年设计的一款FPGA教学板AC620.AC620上有一个百兆以太网接口和一个通用CMOS摄像头接口,因此非常适合实现以太网图传功能.CMOS摄像头接口没有什么好说的,就是IO而已,这里先重点介绍下以太网接口. 以太网接口使用了一片10/100M自适应以太网收发器(PHY),型号为RTL8201.该芯片和FPGA采用标准的MII接口进行连接.什么是M…
上一次设计的动态扫描数码管显示电路模型如上,这是一个32位并行数据[31:0]disp_num选通输出并行数据[7:0]select和[7:0]段选的电路.因此需要输出16个信号 而在开发板上的电路与这个的接口不同,如下: 这个开发板设计的fpga只有有三个输出,接到2片级联的74HC595芯片上,并行输出段选和位选数据. 这三个输出分别为:DIO(串行数据),SCLK(与74HC595匹配的时钟信号),RCLK(锁存器使能信号) 因此,想要在这片开发板上控制数码管显示,就得修改代码. 在上一次…
原创 by DeeZeng FPGA 的 CLK pin 是否可以用作普通输入 ,输出或双向IO 使用?    这些专用Clock input pin 是否可以当作 inout用,需要看FPGA是否支持. 像cyclone V的CLK in 同时支持 作为普通的 inout 而有些FPGA则不支持   那我们可以如何确认是否支持呢? 可以查看 FPGA 的pinout Excel 数据表 https://www.intel.com/content/www/us/en/programmable/s…
文章主要是基于学习后的总结. 1. 时钟域 假如设计中所有的触发器都使用一个全局网络,比如FPGA的主时钟输入,那么我们说这个设计只有一个时钟域.假如设计有两个输入时钟,如图1所示,一个时钟给接口1使用,另一给接口2使用,那么我们说这个设计中有两个时钟域. 2. 亚稳态 触发器的建立时间和保持时间在时钟上升沿左右定义了一个时间窗口,如果触发器的数据输入端口上数据在这个时间窗口内发生变化(或者数据更新),那么就会产生时序违规.存在这个时序违规是因为建立时间要求和保持时间要求被违反了,此时触发器内部…
在逻辑设计领域,只涉及单个时钟域的设计并不多.尤其对于一些复杂的应用,FPGA往往需要和多个时钟域的信号进行通信.异步时钟域所涉及的两个时钟之间可能存在相位差,也可能没有任何频率关系,即通常所说的不同频不同相. 图1是一个跨时钟域的异步通信实例,发送域和接收域的时钟分别是clk_a和clk_b.这两个时钟频率不同,并且存在一定的相位差.对于接收时钟域而言,来自发送时钟域的信号data_a2b有可能在任何时刻变化. 图1 跨时钟域通信 对于上述的异步时钟域通信,设计者需要做特殊的处理以确保数据可靠…
http://www.fpga.com.cn/advance/skill/speed.htm http://www.fpga.com.cn/advance/skill/design_skill3.htm 时钟是整个电路最重要.最特殊的信号,系统内大部分器件的动作都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小, 否则就可能造成时序逻辑状态出错:因而明确FPGA设计中决定系统时钟的因素,尽量较小时钟的延时对保证设计的稳定性有非常重要的意义. 1.1 建立时间与保持时间 建立时间(Tsu:…
之前的项目中更多的是有师兄提供经验和帮助,追求的是快速上手,所以不管对于硬件电路设计,还是verilog电路编程,甚至是FPGA内部的资源,都没来得及系统地学习,最近在做算法到电路的实现,正好系统学习,将感悟记于此,如有错误,欢迎指出.讨论. 原创不易,转载请转原文,注明出处,谢谢.   一.关于时钟引脚 FPGA芯片一般有好几组时钟引脚 CLK [0..N] [p,n],我的理解是:首先,时钟必须由外部晶振通过CLK引脚输入到FPGA的时钟网络,至于选用哪一组CLK,主要看FPGA哪个bank…
之前的项目中更多的是有师兄提供经验和帮助,追求的是快速上手,所以不管对于硬件电路设计,还是verilog电路编程,甚至是FPGA内部的资源,都没来得及系统地学习,最近在做算法到电路的实现,正好系统学习,将感悟记于此,如有错误,欢迎指出.讨论. 一.关于时钟引脚 FPGA芯片一般有好几组时钟引脚 CLK [0..N] [p,n],我的理解是:首先,时钟必须由外部晶振通过CLK引脚输入到FPGA的时钟网络,至于选用哪一组CLK,主要看FPGA哪个bank对时钟要求最为苛刻:其次,一般用p端,n端由q…
本文大部分内容来自Clifford E. Cummings的<Simulation and Synthesis Techniques for Asynchronous FIFO Design>,同时加上一些自己的一些理解,有兴趣的朋友可以阅读原文. 一.FIFO简介 FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,它与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完…
主要参考了https://www.eefocus.com/liu1teng/blog/12-02/237897_4533d.html .Xilinx UG471.UG472以及Xilinx Forum上的一些问答,在此一并表示感谢. ------------------------------------------------------------------------------------------------------ 本文主要用来随意记录一下最近在为手头的FPGA项目做约束文件…
题记:这个笔记不是特权同学自己整理的,特权同学只是对这个笔记做了一下完善,也忘了是从那DOWNLOAD来的,首先对整理者表示感谢.这些知识点确实都很实用,这些设计思想或者也可以说是经验吧,是很值得每一个有志于FPGA/CPLD方面发展的工程师学习的. 1.硬件设计基本原则 (1).速度与面积平衡和互换原则:一个设计如果时序余量较大,所能跑的频率远高于设计要求,能可以通过模块复用来减少整个设计消耗的芯片面积,这就是用速度优势换面积的节约:反之,如果一个设计的时序要求很高,普通方法达不到设计频率,那…
转自http://ninghechuan.com 你要的FPGA&数字前端笔面试题来了 FPGA&ASIC基本开发流程 题目:简述ASIC设计流程,并列举出各部分用到的工具. 勘误:Calibre是Mentor公司的 ASIC开发基本流程 芯片架构,考虑芯片定义.工艺.封装 RTL设计,使用Verilog.System Verilog.VHDL进行描述 功能仿真,理想情况下的仿真 验证,UVM验证方法学.FPGA原型验证 综合,逻辑综合,将描述的RTL代码映射到基本逻辑单元门.触发器上 D…
FPGA SoC通过融合FPGA和ASIC两者的元件,跨越了灵活性和性能之间的界限.但随着它们进入高安全性.任务关键型市场,它们也面临着与标准SoC相同的问题,包括在日益复杂的器件中快速传输越来越多的数据,以及在验证和调试中可能出现的一切棘手的问题. FPGA SoC是一种混合器件,随着芯片制造商和系统公司每年要完成更多的设计工作,它正获得越来越多的关注,尤其是协议和算法仍在变化的市场中,比如汽车.医疗器械和安全性市场.使用标准的FPGA芯片可以提供必要的灵活性,但是只有ASIC才能满足更高的性…
这几天看了Clifford E. Cummings的两篇大作<Simulation and Synthesis Techniques for Asynchronous FIFO Design>and <Simulation and Synthesis Techniques for Asynchronous FIFO Design with Asynchronous Pointer Comparisons>颇有感想,真可谓经典之作,不可错过. 1.什么是FIFO? FIFO是英文Fi…
前言 好久没更新博客了,这篇文章写写停停,用了近一周的时间,终于写完了.本篇文章介绍,串口协议数据帧格式.串行通信的工作方式.电平标准.编码方式及Verilog实现串口发送一个字节数据和接收一个字节数据. 对于MCU串口的发送接收,可能就是1行代码就能实现串口的发送和接收: STM32的串口接收和发送 //STM32发送1个字节 USART_SendData(USART1, 'A'); while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE…
很多FPGA工程师都会遇到timing的问题,如何让FPGA跑到更快的处理频率是永久话题.决定FPGA的timing关键是什么?如何才能跑到更快的频率呢? A. 第一步需要了解FPGA的timing路径: 图1.时序模型 在任何设计中最普通的时序路径有以下4种: 1 输入端口到内部时序单元路径: 2 从时序单元到时序单元之间的内部路径: 3 从内部时序单元到输出端口之间的路径: 4 输入端口到输出端口之间的路径: B.第二步需要能够读懂FPGA的timing报告,从而找到影响timing的问题:…
本文讨论的四种常用FPGA/CPLD设计思想与技巧:乒乓操作.串并转换.流水线操作.数据接口同步化,都是FPGA/CPLD逻辑设计的内在规律的体现,合理地采用这些设计思想能在FPGA/CPLD设计工作种取得事半功倍的效果. FPGA/CPLD的设计思想与技巧是一个非常大的话题,由于篇幅所限,本文仅介绍一些常用的设计思想与技巧,包括乒乓球操作.串并转换.流水线操作和数据接口的同步方法.希望本文能引起工程师们的注意,如果能有意识地利用这些原则指导日后的设计工作,将取得事半功倍的效果! 乒乓操作“乒乓…