FPGA时钟和时钟域

时钟树

所谓时钟树为FPGA内部资源, 分 : 全局时钟树, 区域时钟树 , IO时钟树

原则上优先使用全局时钟树, 在GT接口上使用IO时钟树, 一般工具也会对GT时钟加以限制;

时钟树使用方式

  • 正确的物理连接

    FPGA会由物理管脚专门用于全局时钟设置, 通过查询数据手册可以在PCB设计阶段进行确认,当外部时钟接入此管脚时 ,工具会自动占有全局时钟树资源, 当接入普通信号时不会分配时钟树资源;

  • 恰当的代码描述

    原语的使用, 即BUFG的使用,可以将PLL的输出等内部时钟进行全局时钟资源的分配;

    IO时钟资源需要参考相应接口手册, 以ultrascale 的GTH为例, 其JESD204 的时钟方案针对不同的子类会由不同的专用时钟方案, 和时钟BUF的使用;

    需要注意对时钟树上的时钟信号进行任何逻辑操作产生的新信号将不再时钟树上

跨时钟

跨时钟问题的原理与单时钟域避免隐患一样, 即避开不稳定态;

两级采样

高频采低频使用两级采样保证设计行为的正确性和一致性;

低频采高频,则高频时钟域内必须保证其输出信号在一个大于低频周期的时间内保持不变确保不会漏采样;

握手

正常握手逻辑, 需要注意A的握手信号需要在A寄存器输出不变的一个时钟周期后在拉高并保持至少一个B的周期(考虑Skew最好2个)以保证B的顺利采样和数据稳定;

异步FIFO

需注意FIFO的数据平衡,保证 写速率 == 读速率;

PLL和DCM

压控振荡器VCO输出的信号为整个锁相环最终的输出信号, 该信号会经过一个整数分频器分频后反馈给鉴相器PD(也是鉴频器), PD比较该反馈信号与输入的本振信号, 如有差别 PD输出差别信号 , 该差别经过低通滤波器LF滤波形成控制VCO频率变化的控制电压, 在该电压的控制下VCO输出信号 的频率或相位会改变, 新的输出如果和本振信号相等则PLL进入锁定;

时钟输入, 输出端口

同一时刻只能有一个CLKIN使能, 但是可以有多个CLKOUT输出;

CLKIN必须是连续时钟信号 , 否则PLL会不断失锁;

CLKIN的频率必须是符合对应器件PLL的时钟频率范围要求;

CLKIN的占空比最好接近50%;

CLKOUT可以有多个输出, 原理是VCO的输出CLKMID会扇出多路, 每一路都有一个分频器和移相器用以产生CLKOUT;

CLKMID的频率根据器件有一定的范围限制, 具体参数查看相应参数;

CLKMID扇出路径上的分频移相系数有限制, 所以各路CLKOUT具有相关性, 要产生两个完全不相关的CLKOUT需要两个PLL;

CLKOUT频率受是时钟树资源限制,其频率和移相精度也有一定限制;

PLL锁定指示端口

PLL中的CLKMID针对CLKIN有一定时间的锁定延迟;

LOCKED信号指示锁定. LOCKED == 0 失锁, LOCKED == 1锁定;

复位的设计

复位分类

同步复位

同步复位 : 复位信号在时钟边沿到来时刻为有效,则执行一次复位, 同步复位为瞬间态, 离散;

优点:

  • 同步复位离散, 有利于仿真器的仿真;
  • 同步复位只在时钟边沿到来时生效, 可以滤除高于时钟频率的毛刺.提高复位操作可靠性;
  • 同步复位系统可以设计为典型同步时序电路,有利于时序约束和时序分析;

缺点:

  • 复位信号有效持续时间长度大于一个时钟周期,否则可能会被当作毛刺;
  • 同步复位信号与时钟相关, 因此设计和实现必须考虑各种延迟和时间参数;
  • 大多数寄存器只有异步复位端口, ,采用同步复位会在寄存器输入端口增加额外的组合逻辑, 消耗更多的资源;

异步复位

异步复位 : 复位信号立即执行, 无关时钟信号的有效边沿,异步复位具有持续性, 连续性;

优点:

  • 大多数寄存器否具有异步复位端口, 这样可以节省资源;
  • 异步部位不关心复位信号与时钟信号关系, 设计简单;

缺点:(异步信号有效与时钟边沿靠近的一系列问题)

  • 容易导致亚稳态;

  • 大面积逻辑时因为路径延迟, 导致逻辑功能混乱;

  • 易受到毛刺干扰;

复位的设计方法

纯粹的异步复位别用, 尽量使用同步复位;

资源紧张使用低电平有效的异步复位, 同步释放;

同步信号同步复位

always@(posedge clk)
beginif(rst)<statement>;else<statement>;
end

同步信号异步复位

always@(posedge clk , negedge rst)
beginif(!rst)<statement>;else<statement>;
end

异步信号同步复位

先对异步复位信号进行同步化处理, 在使用同步复位的方式进行复位;

always@(posedge clk)
begintemp_rst<= a_rst;b_rst   <= temp_rst;
endalways@(posedge clk)
beginif(b_rst)<statement>;else<statement>;
end

异步信号异步复位

always@(posedge clk)
begintemp_rst<= a_rst;b_rst   <= temp_rst;
endalways@(posedge clk,negedge b_rst)
beginif(!b_rst)<statement>;else<statement>;
end

复位的高扇出的解决方案

  • 寄存器的复制

    //同步信号的复制 ,复制若干个类R寄存器
    always@(posedge clk)
    beginrst <= reset;
    end//异步信号的复制
    //temp0 , temp1两级采样, temp2位类R寄存器
    always@(posedge clk)
    begintemp0 <= rst;temp1 <= temp0;temp2 <= temp1;
    end
    
  • 正确利用全局时钟树

    时钟树可以保证信号到达FPGA不同触发器的时间差尽可能小,但不保证消耗最短的资源; 那么全局时钟树上的信号群延迟就会比较大, 那么复位信号使用全局时钟树也会存在群延迟, 此时为保证系统稳定性需要对时钟引入一个相同的群延迟;

    BUFG resetOnTree(.O(rst),.I(reset));
    BUFG clockOnTree(.O(clk),.I(clock));
    //rst clk 即可用于设计//异步信号
    always@(posedge clock)
    begintemp_rst<= a_rst;b_rst   <= temp_rst;
    end
    BUFG resetOnTree(.O(rst),.I(b_rst));
    BUFG clockOnTree(.O(clk),.I(clock));
    //此时clock不能是在时钟树上的时钟;
    //如果clock已经上树, 那么为抵消复位系统引入的延迟可以使用不带BUFG的反馈回路的PLL
    

本文为个人读书笔记,仅作记录之用

FPGA 之 时钟,时钟域, 以及复位系统的设计相关推荐

  1. 基于intel x86+fpga智能驾驶舱和高级驾驶辅助系统硬件设计(二)

    系统功能架构及各模块功能介绍 智能驾驶舱和高级驾驶辅助系统是一个车载智能终端嵌入式平台,系统是一个能够运行 虚拟化操作系统的软件和硬件的综合体.本文的车载主机包括硬件主控处理器.电源管理芯 片.存储设 ...

  2. Verilog数字系统基础设计-数据转换器

    绪论 在一些应用中,两个电路模块交界处,一个电路模块的输出数据位宽大于另一个模块的输入数据位宽,此时需要进行数据转换.例如,在SATA控制器中,内部数据位宽为32比特,但是与外部物理收发器PHY的接口 ...

  3. FPGA CDC跨时钟域设计学习(一)亚稳态

    FPGA CDC跨时钟域设计学习(一) 亚稳态 MTBF - mean time before failure 同步器 理论 设计原则 学习资源主要来源于CummingsSNUG2008Boston_ ...

  4. (79)FPGA如何处理跨时钟域问题-面试必问(三)(第16天)

    (79)FPGA如何处理跨时钟域问题-面试必问(三)(第16天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA如何处理跨时钟域问题-面试必问(三)(第1 ...

  5. FPGA之异步时钟、同步时钟并存同步问题

    关于FPGA同一个工程中如何进行同步异步复位 同步复位:需要时钟的产生,在时钟的进行下进行复位: 异步复位:无需时钟,即可进行复位. 问题: 有些信号,异步复位,在时钟来之前就已经复位了,而同步复位有 ...

  6. 单片机课程学习的数字时钟系统模块化设计研究

    摘要:随着人们生活环境的不断改善和美化,人们希望通过在生活中得到更多的乐趣,来满足我们日益增长的精神需求.单片机课程学习的数字时钟系统模块化设计研究能够给人们的生活带来丰富多彩的滋味,低廉的造价以及控 ...

  7. 开启ntp_飒,NTP时钟服务器在银行大楼系统方案

    飒,NTP时钟服务器在银行大楼系统方案 时间同步才是各个系统协同工作的基础. 方案背景: 银行大楼作为银行业务管理的主体中心,集办公区域.营业厅.自助银行.监控中心.出入口.园区周界于一体.同时,考虑 ...

  8. (127)FPGA面试题-介绍FPGA 门控时钟

    1.1 FPGA面试题-介绍FPGA 门控时钟 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-介绍FPGA 门控时钟: 5)结束语. 1.1.2 本节引 ...

  9. (42)FPGA面试题时钟抖动和时钟偏移

    1.1 FPGA面试题时钟抖动和时钟偏移 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题时钟抖动和时钟偏移: 5)结束语. 1.1.2 本节引言 &quo ...

最新文章

  1. Spring对Hibernate事务管理
  2. MySQL 到PostgreSQL 的数据迁移工具
  3. java实现数字转mac,Java Ethernet.getSourceMAC方法代码示例
  4. hexo博客添加暗色模式_我如何向网站添加暗模式
  5. Java日期格式化SimpleDateFormat
  6. 如何抓取html请求,怎么获取请求头
  7. linux编程排序,Linux下简单的c编程——选择法排序
  8. 电脑远程服务_电脑远程维修专家在线服务
  9. MySQL之终端(Terminal)管理MySQL
  10. Div高度自适应内容高度
  11. 【python教程入门学习】利用Python自动生成暴力破解的字典
  12. Privoxy教程使用详解
  13. OLTP和OLAT的区别
  14. 将电脑新建文本文档txt的默认编码从ANSI改为utf-8
  15. ftp voyager_Voyager 2太空飞行最佳样本方差的Python实现
  16. arcgis for js通过框架配置实现点线面及echarts绘制
  17. 万字长文讲述由ChatGPT反思大语言模型的技术精要
  18. av_rescale_q()
  19. 反射阵天线(Reflectarray Antenna)设计方法简述
  20. Python版本的温湿度+Nokia5110 display(SPI)

热门文章

  1. mplayer播放问题汇集
  2. zzuli OJ 1034: 夏季促销
  3. linux如何打开gz文件,gz文件扩展名,gz文件怎么打开?
  4. 卡特兰数 卡塔兰数 概念 代码实现 模型分析全集
  5. Echarts实现柱状图闪烁效果
  6. 深度学习面试知识小结
  7. python线程延时函数_详解Python 多线程 Timer定时器/延迟执行、Event事件
  8. php常用函数(第一版)
  9. iOS开发 iOS10推送必看(基础篇)
  10. python函数调用参数