目录
1.时序约束
①时序是什么?
在了解时序约束之前,我们必须要知道时序是什么?时序时序,顾名思义就是时间的先后顺序,芯片内是电路在工作,那么什么时候工作,什么时候不工作,这个就是时序。
②时序约束
在时序不出错时设计的电路才能发挥其正确的功能,因此,为了保证设计的电路的成功应用,我们需要对时序进行约束以满足设计的要求,这就是时序约束。
③怎么约束?
时序约束主要包括周期约束,偏移约束,静态时序路径约束三种。而通过附加时序约束可以优化综合、映射、布线、布局,使设计达到时序要求。
时序约束的一般策略是先附加全局约束,然后对快速和慢速例外路径附加专门约束。
附加全局约束时,首先定义设计的所有时钟,对各时钟域内的同步元件进行分组,对分组附加周期约束,然后对 FPGA 输入输出 PAD附加偏移约束、对全组合逻辑的PAD TO PAD路径附加约束。
附加专门约束时,首先约束分组之间的路径,然后约束快、慢速例外路径和多周期路径,以及其他特殊路径。
2.多bit信号异步处理
我们知道单bit信号可以通过两级触发器(打两拍)来进行异步处理,但是当数据是多bit信号时,由于打两拍的触发器位置不同,布局布线的不同会导致每个bit数据到达下一级触发器的延时不同,延时会随着打拍数的增加、数据位宽的增加、时钟频率的增大而变得更加恶劣,多位数据打拍后的数据有可能失真,因此这个方法就不能用了,下面介绍几种常见的多bit信号异步处理方法:
①MUX(多路选择器)
多路选择器+触发器实现,MUX相当于触发器的使能信号,当两个时钟域同步时,打开使能接受数据。
②握手
保持寄存器+握手信号,也就是先异步暂存,后同步写入。所谓握手,就是通信双方使用了专门控制信号进行状态指示,这些控制信号是双向的。(在边缘检测的综合项目中有用到,用于数据对齐)
③异步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.时钟抖动
时钟抖动:相对于理想时钟,实际时钟存在不随时间积累的、时而超前、时而滞后的偏移
也就是时钟脉宽发生暂时的变化,或稍短或稍长。这个误差是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,布线对其没有影响。
7.时钟的使用
①FPGA芯片有固定的时钟路由,这些路由能有减少时钟抖动和偏差
②需要对时钟进行相位移动或变频的时候,一般不允许对时钟进行逻辑操作,这样不仅会增加时钟的偏差和抖动,还会使时钟带上毛刺
③一般的处理方法是采用FPGA芯片自带的时钟管理器如PLL,DLL或DCM,或者把逻辑转换到触发器的D输入,这些也是对时钟逻辑操作的替代方案
8.时序电路的延时
同步
①使用计数器,通过计数器来控制延时,这种延迟比较精确,也可以大部分的延时需求
②对于较小的延时,可以打一拍,但是只能延时一个时钟周期的时间
异步
插入缓冲器、两级非门(反相器)实现延时