第一章 理解FPGA所需的基础知识(一)-《FPGA的原理与结构》

FPGA原理与结构

第一章 理解FPGA所需的基础知识

1.1.4 组合逻辑电路

逻辑电路根据是否包含记忆元件,分为组合逻辑和时序逻辑电路。

组合逻辑的电路的特点:

1、组合逻辑电路不包含记忆元件

2、某个时间点的输出(逻辑函数值)仅仅取决于当时的输入

3、允许有多个输入/输出

内部由于计算逻辑与(AND)、逻辑或(OR)和逻辑非(NOT)等基本逻辑函数的逻辑门,以及门电路间的连线组成。

以下是逻辑门的符号、真值表和逻辑表达式

 

1.1.5 时序逻辑电路

含有记忆元件的逻辑电路被称为时序逻辑电路。

时序逻辑电路是一种过去的电路状态也会对输出产生影响的逻辑电路。

时序逻辑电路分为同步时序逻辑电路和异步时序逻辑电路

同步时序逻辑电路中:输入和内部状态的变化由时钟信号控制同步进行

异步时序逻辑电路:不需要时钟信号

时序逻辑电路的输出值由输入值和记忆元件的状态值共同决定。如图a

为米勒(Mealy)型时序逻辑电路,b为摩尔型(Moore)时序逻辑电路。

米勒:

  • 输出由内部状态和输入共同决定

  • 米勒的状态数通常比摩尔模型少因此有电路规模较小的特点

  • 缺点:由于输入会立刻反映到输出,所以逻辑元件或者不等长的布线所带来的信号延迟等容易引起信号竞争,进而导致非预期的错误(冒险)。

摩尔:

  • 输出仅由内部状态决定。

  • 摩尔模型直接使用记忆状态的输出,因此电路速度快而且不容易发生冒险。

  • 缺点:由于状态数量多,电路规模也相对较大。

 

1.2 同步电路设计

1.2.1 触发器

触发器(Flip Flop,FF)是一种只能存储一个二进制位(bit,比特)的存储单元,可以用作时序逻辑电路的记忆元件

FPGA逻辑单元内的D触发器(D-FF)就是一种在时钟的上升沿将信号的变化传送到输出的边沿触发器

如下图

1.2.2 建立时间和保持时间

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

 

由传输门和两个反相器组成一个循环电路(锁存器),再由前后两级锁存器按主从结构连接而成。

传输门起开关的作用,随着CLK的状态变化切换开关。

只是看输出的话,前级锁存器的值会将时钟输入的变化井然有序地传入后级锁存器。

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

 

当CLK = 0(主锁存器工作)时,位于前级的主锁存器将输入D的值保存进来,后级的从锁存器则维持上一时钟周期的数据;

当CLK = 1(从锁存器工作)时候,前级反相器环路中保存的数据会传输到后级,同时输入D的信号会被隔离在外。

此时如果前级反相器环路中的信号没有循环一圈以上,就会出现如图1-6的亚稳态

所以我们引入建立时间(setup time)来约束在时钟上升沿到来前输入D保持稳定的时间

当CLK = 1时,如果输入D在传输门关闭前就发生变化,那么本该在下一个周期读取的数据就会提前进入到锁存器,从而引起反相器环路震荡。

因此在CLK = 1之后也需要输入D维持一定的时间,我们称为保持时间(hold time)

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

1.2.3 时序分析

从硬件描述语言(Hardware Description Language,HDL)编写的RTL(Register Transfer Level,寄存器传输级)设计代码生成网表(逻辑门间的配线信息)的过程称为逻辑综合。

最终决定逻辑综合生成的电路网表在FPGA中以何种方式实现的两道工序称为布局布线

为了保证设计好的电路能够正常工作,不单单要保证(逻辑)正确,还必须要确保时序正确。

由于基于仿真的方式分析每个逻辑值并进行动态时序分析的方法过于耗时

所以FPGA的性能评估主要采用静态时序分析(Static Timing Analysis,STA)

STA只需要提供电路网表就可以进行全面的评估验证。

1.2.4 单相时钟同步电路

布局布线上具有一定自由度的FPGA都以同步电路设计方式为主,而同步

电路可以使用STA进行时序分析和验证。

STA的特点:具有验证速度高的优点。

但是STA对电路结构有一定的要求:延迟分析的起点和终点必须是基于同一个时钟的FF,从而可以通过累加起点和终点间的延迟来计算、验证每条路路径的总延迟。

因为各条路径上的布线长度不一,所以信号的延迟会不同,输出数据变化的时间点也会有所差别

因此如图1-7所示,FPGA设计中的输入信号会先被送到FF,输出信号则必须从FF引出,并且所有的FF都是由同相的时钟驱动。

 

同步设计的一个前提是所有FF都必须同时接受到时钟信号,而现实中时钟信号的布线非常长,时钟信号驱动的负荷、布线延迟等原因会导致出现时间差。

这种时钟信号到达时间的错位称为时钟偏移(Skew).

由于时钟振荡器的变动或信号变形,时钟边沿会偏离平均位置,这种情况称为时钟抖动(jitter)。

 

为了保证所有FF的输入时钟信号同步,需要将时钟偏移和时钟抖动控制在一定范围之内。

FPGA上已经提前实现了多层时钟树结构,并且通过驱动能力强的专用布线(global buffer)将时钟低偏移连接到整个芯片的FF上,因此在时钟设计上要比ASIC容易很多。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幸幸有狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值