FPGA知识积累【2】

目录

1.时序约束

①时序是什么?

在了解时序约束之前,我们必须要知道时序是什么?时序时序,顾名思义就是时间的先后顺序,芯片内是电路在工作,那么什么时候工作,什么时候不工作,这个就是时序。

②时序约束

在时序不出错时设计的电路才能发挥其正确的功能,因此,为了保证设计的电路的成功应用,我们需要对时序进行约束以满足设计的要求,这就是时序约束。

③怎么约束?

时序约束主要包括周期约束,偏移约束,静态时序路径约束三种。而通过附加时序约束可以优化综合、映射、布线、布局,使设计达到时序要求。

时序约束的一般策略是先附加全局约束,然后对快速和慢速例外路径附加专门约束。

附加全局约束时,首先定义设计的所有时钟,对各时钟域内的同步元件进行分组,对分组附加周期约束,然后对 FPGA 输入输出 PAD附加偏移约束、对全组合逻辑的PAD TO PAD路径附加约束。

附加专门约束时,首先约束分组之间的路径,然后约束快、慢速例外路径和多周期路径,以及其他特殊路径。

2.多bit信号异步处理

我们知道单bit信号可以通过两级触发器(打两拍)来进行异步处理,但是当数据是多bit信号时,由于打两拍的触发器位置不同,布局布线的不同会导致每个bit数据到达下一级触发器的延时不同,延时会随着打拍数的增加、数据位宽的增加、时钟频率的增大而变得更加恶劣,多位数据打拍后的数据有可能失真,因此这个方法就不能用了,下面介绍几种常见的多bit信号异步处理方法:

①MUX(多路选择器)
多路选择器+触发器实现,MUX相当于触发器的使能信号,当两个时钟域同步时,打开使能接受数据。
FPGA知识积累【2】
②握手

保持寄存器+握手信号,也就是先异步暂存,后同步写入。所谓握手,就是通信双方使用了专门控制信号进行状态指示,这些控制信号是双向的。(在边缘检测的综合项目中有用到,用于数据对齐)

③异步fifo

简单的来说就是读写时钟不相同的数据缓存器,但是由于FPGA没有外部的地址信号,所以只能顺序的读写,而不能跳读。异步处理时,先将数据写进fifo中,再一个一个读出来。

3.FPGA与CPLD

①FPGA(Field-Programmable Gate Array),即现场可编程门阵列,内部基本结构为门阵列构成静态存储器(SRAM)。该SRAM可构成查找表(LUT),通过查找表可实现逻辑函数功能。

②CPLD(Complex Programmable Logic Device)复杂可编程逻辑器件,是基于乘积项的可编程器件。

不同:

逻辑结构不同
CPLD:类似 PAL、GAL,拥有丰富的组合逻辑电路资源。
FPGA:类似门阵列,拥有丰富的触发器、存储器资源;

使用场合不同
CPLD:用来完成控制的逻辑
FPGA:可以完成比较复杂的算法

速度不同
CPLD:慢
FPGA:快

配置不同
CPLD:采用EPROM,E2PROM工艺,直接写入,保密性好。
FPGA:采用SRAM工艺,故需外加ROM芯片,用于存储配置信息。其保密性较差,高端FPGA具备加密功能

4.锁存器和触发器的区别

晶体管组成门电路
门电路组成锁存器
锁存器再加上一个触发信号电路,就成了触发器

5.FPGA芯片内的两种存储资源

①BLOCK RAM,BLOCK RAM由一定数量固定大小的存储块构成的,使用BLOCK RAM资源不占用额外的逻辑资源,并且速度快。

②LUT配置成的内部存储器(也就是分布式RAM),分布式RAM是用逻辑资源搭起来存储资源,非常占用内部资源。

6.时钟抖动

时钟抖动:相对于理想时钟,实际时钟存在不随时间积累的、时而超前、时而滞后的偏移

FPGA知识积累【2】

也就是时钟脉宽发生暂时的变化,或稍短或稍长。这个误差是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,布线对其没有影响。

7.时钟的使用

①FPGA芯片有固定的时钟路由,这些路由能有减少时钟抖动和偏差

②需要对时钟进行相位移动或变频的时候,一般不允许对时钟进行逻辑操作,这样不仅会增加时钟的偏差和抖动,还会使时钟带上毛刺

③一般的处理方法是采用FPGA芯片自带的时钟管理器如PLL,DLL或DCM,或者把逻辑转换到触发器的D输入,这些也是对时钟逻辑操作的替代方案

8.时序电路的延时

同步
①使用计数器,通过计数器来控制延时,这种延迟比较精确,也可以大部分的延时需求

②对于较小的延时,可以打一拍,但是只能延时一个时钟周期的时间

异步
插入缓冲器、两级非门(反相器)实现延时

上一篇:fpga程序固化


下一篇:SocKit系列文章——SOCKit下载程序时JTAG链的问题