FPGA原理和结构 您所在的位置:网站首页 fpga基本结构单元 FPGA原理和结构

FPGA原理和结构

2024-07-11 19:38| 来源: 网络整理| 查看: 265

写在前面

阅读《FPGA原理与结构》(日本 田野英晴主编, 赵谦译) 的读书笔记,本文通过FPGA的电路原理结构介绍了一些FPGA常见的基本概念。

理解FPGA的基础知识 触发器

在实际的数字系统中往往包含大量的存储单元,而且经常要求他们在同一时刻同步动作,为达到这个目的,在每个存储单元电路上引入一个时钟脉冲(CLK)作为控制信号,只有当CLK到来时电路才被“触发”而动作,并根据输入信号改变输出状态。把这种在时钟信号触发时才能动作的存储单元电路称为触发器,以区别没有时钟信号控制的锁存器。

在这里插入图片描述

从电路结构理解亚稳态产生原理

CMOS工艺下的D-FF结构如下:

先由传输门和两个反相器组成一个循环电路(锁存器),再由前后两级锁存器按主从结构连接而成。传输门起开关的作用,随着CLK的状态变化切换开关。从输出来看的话,前级的锁存器的值会有序传送给后级(随着时钟输入)。

为了防止时钟信号变化时输入信号发生冒险,从而使稳定输入信号进入前级锁存器,前级锁存器的时钟相位应该和产生输入信号的电路时钟反向。

在这里插入图片描述

当CLK等于0时,也即主锁存器工作时,D端的输入的数据将传入到主锁存器中,而和后级的锁存器是断开的,所以数据不会传输到从寄存器,从寄存器输出给Q为保持的上一个周期的数据。

当CLK等于1时,也即从锁存器工作时,D输入端和主锁存器断开,确保数据稳定,然后主锁存器将数据传输给从锁存器,然后输出到Q端。

此时如果前级的反相器环路的信号没有循环一圈以上,就会出现在0和1之间的摆动的中间电位,也就是亚稳态。

在这里插入图片描述

引入建立时间和保持时间

由于亚稳态的时间比传输延迟的时间长,在此时读取数据会有错误的风险,所以引入建立时间来约束时钟到来前输入D保持稳定的时间。

当CLK=1时,如果D在传输门关闭前就发生变化,那么本应该下一个时钟周期读取的数据就会提前进入锁存器,从而引起反相器环路震荡或者产生亚稳态。因此在CLK=1之后也要求输入D维持一定的时间,这也就是我们常说的保持时间。

为了保证正确的输入读取数据,并正确地将数据输出,FPGA所有的FF都要遵循建立时间和保持时间等时序上的约束要求。

逻辑综合、布局布线

从硬件描述语言(HDL)编写的RTL设计代码生成网表(逻辑门间的配线信息)的过程称为逻辑综合。最终决定逻辑综合所生成的电路网表在FPGA中以何种万式实现的两道工序称为布局和布线。

FPGA设计流程

FPGA内部会摆放了大量设置好的电路块和配线,用以实现用户FPGA的设计。FPGA设计流程,就是决定专为FPGA综合生成的电路摆放在哪儿、电路之间以什么样的布线的路径相连的过程。

如何评判设计良好?引入时序分析

为了保证设计好的电路能够正常工作,不单要保证功能(逻辑)正确。还必需要确保时序正确。在FPGA的设计流程中,从逻辑综合到布局布线,每一步都会对生成电路进行评估分析。而从前面的D-FF的物理结构可以知道,FPGA引入错误结果的主要来源在于器件的延时,所以也就主要对这个地方进行约束设计,也就是常说的时序分析。基于仿真的动态分析方式过于耗费时间,所以评估性能主要使用STA(静态时序分析)。STA只需要提供电路网表就可以进行全面评估验证,并且原理上只要遍历一次电路的拓扑结构,分析速度快。

时序分析包含对设计电路的建立时间分析和保持时间分析,并能够以此进行时序验证。时序验证主要是评估FPGA的电路延迟是否满足时序约束(时序上的设计需求)。

布线的延迟取决于FPGA设计电路的摆放位置和所使用的布线,也就是说**取决于布局布线工具的编译结果。**时序分析必须检查所有路径上逻辑延迟和布线延迟的时序余量,确保它们满足建立时间和保持时间的时序约束。

单相时钟同步电路

布局布线上具有一定自由度的FPGA都以同步电路设计方式为主、因为同步电路可以使用STA进行时序分析和验证。STA具有验证速度高的优点,但对电路结构有一定的要求**:延迟分析的起点和终点必须是基于同一时钟的F,从而可以通过累加起点和终点间的延迟来计算、验证每条路径的总延迟**。

在这里插入图片描述

上图中的FPGA设计,输入数据先过D-FF,然后经过D-FF输出,而且所有FF都由同相的时钟驱动。这种设计属于由同一时钟的同一边沿同步动作的电路类型。采用单一时钟进行同步是较为理想的选择。

同步电路设计的一个前提是所有的FF都必须同时接收到时钟信号,而现实中时钟的布线、时钟信号的驱动负荷、布线延时都会导致一定的时间偏差。这种时钟信号到达时间的错位成为时钟偏移(skew)。由于时钟振荡器的变形或者信号变形,时钟边沿会偏离平均位置,这种情况称为时钟抖动(jitter)。为了保证同步也需要进行控制时钟偏移和时钟抖动。(FPGA已经实现了好多层时钟树结构,并且通过驱动能力强的专用布线(globel buffer)将时钟低偏移连接到了整个芯片的FF上。)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有