一,同步逻辑与异步逻辑
1,同步逻辑: 时钟之间有固定的因果关系。 特点:各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲到来时,电路的状态才能改变。 同步逻辑是时钟之间有固定的因果关系。
2,异步逻辑: 各时钟之间没有固定的因果关系。 特点: 电路中除触发器外,还可以使用不带时钟的触发器和延迟元件作为存储单元,没有统一的时钟,电路状态的改变由外部输入的变化直接引起。异步逻辑是各种时钟之间没有固定的因果关系。
二,同步电路与异步电路
1, 同步电路:所有触发器的时钟输入端都连接同一时钟源; 同步电路有统一的时钟源,经过 PLL 分频后的时钟驱动的模块,因为是一个统一的时钟源驱动,所以还是同步电路;
2,异步电路:没有统一时钟。
异步电路无法做真正意义上的综合及 STA,如果同步电路中夹杂有异步电路,就 set_false_path.所以异步电路只有靠仿真来检查电路正确与否。异步电路的优点:无时钟歪斜问题,低电源消耗,平均效能而非最差效能,模块性,可组合和可复用性。
三,同步复位与异步复位
1,同步复位是复位信号随时钟边沿触发有效;异步复位是复位信号有效和时钟无关。
2,同步复位的优点:有利于仿真器的仿真;基本上没有亚稳态问题;可以使所设计的系统成为 100%的同步时序电路,有利于时序分析,由于只在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的复位毛刺;
3,同步复位的缺点:复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑延时因素。大多数的 FPGA 的 DFF 都只有异步复位端口,采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样会耗费逻辑资源。
4,异步复位的优点:大多数目标器件库的 dff 都有异步复位端口,因此采用异步复位可以节省资源;设计相对简单,异步复位信号识别方便,而且可以很方便的使用FPGA 的全局复位端口 GSR。
5,异步复位缺点:复位信号容易受到毛刺的影响;因为是异步逻辑,无法避免地存在亚稳态问题;
6,复位所使用的资源代价:
1) 布线资源的使用:减少了其他连接的自由性;降低了系统性能,需要更高 速度的器件;增加布线时间;
2) 逻辑资源的使用:触发器上专用复位的使用;在 D 输入或专用复位输入之前需要有额外的逻辑门;影响设计的尺寸;额外的逻辑层影响系统性能;增加布局布线的时间。
建议:使用异步复位,同步释放。
四,时序设计的实质机时序优化方法
1,时序设计的实质:满足每一个触发器的建立/保持时间的要求。
2,时序优化的方法: 采用流水设计,增加 Pipelining;具备布局布线意识,特别是与IO 管脚强相关的模块,需要注意某些信号链接了这两个模块,需要在设计的时候就增加流水; RAM 一般采用 REG 型输出,约束 RAM 的物理位置对时序优化有好处。
五,建立时间和保持时间
1,建立时间:触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间;
2,保持时间:触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的最小时间;
3,触发器内部数据的形成需要一定的时间,如果不满足建立和保持时间,触发器很可能会进入亚稳态,产生错误的输出。
六,亚稳态的产生及解决方法
1,亚稳态是指触发器无法在某个规定的时间段内到达稳定状态;
2,原因:由于触发器的 Tsu 和 Th 不满足,当触发器进入亚稳态,使得无法预测该单元的输出,这种不稳定是会沿信号通道的各个触发器级联传播;
3,解决方法:
- List item可使用两级缓存防止亚稳态的传播,条件是输入脉冲的宽度必须大于同步时钟周期与第一级触发器所需的保持时间之和。
- 降低系统时钟(不常见,因为高速率正确处理才是目的);
- 用反应更快的触发器(工艺相关,受硬件制约);
- 引入同步机制,防止亚稳态传播;(常见的处理方式,即通过一些机制,在现有硬件条件下,最大程度的减少亚稳态发生);
- 改善时钟质量,用边沿变化快速的时钟信号。
七,系统最高速度计算
Fmax = 1/(Tco + Tdelay + Tsetup-Tskew);Tskew = Tclkd - Tclks;
八,流水线设计思想
可以将较大的组合逻辑分为较小的逻辑块,通过适当的方法平均分配组合逻辑,然后再中间插入寄存器,并和原寄存器使用相同的时钟。
九,时序约束的概念和基本策略
1,时序约束主要包括: 时钟周期约束、 I/O 延迟约束、跨时钟域路径约束、多周期路径约束、伪路径约束、最大/最小延迟约束。从输入到输出的路径、从输入到寄存器的路径、从寄存器到寄存器的路径、从寄存器到输出的路径、异步清零信号和时钟存在异步的进入和退出的时序问题
2,策略: 附加时序约束的一般策略是先附加全局约束,然后对快速和慢速例外路径附加专门约束。附加全局约束时,首先定义设计的所有时钟,对各时钟域内的同步元件进行分组,对分组附加周期约束,然后对输入/输出 PAD 附加偏移约束、对全组合逻辑的 PAD TO PAD 路径附加约束。附加专门约束时,首先约束分组之间的路径,然后约束快、慢例外路径和多周期路径,以及其他特殊路径。
3,作用:提高设计的工作频率;获得正确的时序分析报告;指定FPGA/CPLD的电气标准和引脚位置。
十,FPGA与CPLD的差异与特性
器件种类/特性 | FPGA | CPLD |
---|---|---|
内部结构 | 查找表(Look Up Table) | 乘积项(Product Term) |
程序存储 | 内部SRAM结构 ,外挂EEPROM或FLASH存储程序 | 内部EEPROM或FLASH |
资源类型 | 触发器资源丰富 | 组合逻辑资源丰富 |
集成度 | 高 | 低 |
使用场合 | 完成比较复杂的算法 | 完成控制逻辑 |
速度 | 快 | 慢 |
其他资源 | RAM,PLL,DSP等 | - |
保密性 | 一般不能保密(可以使用加密核) | 可加密 |
十一,锁存器(latch)与触发器(flip-flop)的区别
电平敏感的存储器件称为锁存器;有交叉耦合的门构成的双稳态的存储元件称为触发器。分为上升沿触发和下降沿触发。可以认为是两个不同电平敏感的锁存器串联而成。前一个锁存器决定了触发器的建立时间,后一个决定了保持时间。
十二,时钟抖动与时钟偏移
1,时钟抖动(clock jitter) 是指芯片的某一个给定点上时钟周期发生暂时性变化,也就是说时钟周期再不同的周期上可能加长或缩短。它是一个平均值为 0的平均变量。
2,时钟偏移(clock skew):是由于布线长度及负载不同引起的,导致同一个时钟信号到达相邻两个时序单元的时间不一致。
3,区别: jitter 是在时钟发生器内部产生的,和晶振或者 PLL 内部电路有关,布线对其没有影响。 Skew 是由不同布线长度导致的不同路径的时钟上升沿到来的延时不同。
十三,块RAM(Block RAM, BRAM)与分布式RAM(Distributed RAM)的区别
块 RAM(Block RAM, BRAM)和分布式 RAM(Distributed RAM)是 FPGA 中常用的两种 RAM 资源,可以构成 RAM、 ROM、 FIFO、移位寄存器等。分布式 RAM 可以是纯组合逻辑,即给出地址马上出数据,也可以加上寄存器变成有时钟的 RAM,而 BRAM 一定是有时钟的。分布式 RAM 使用多少,综合后就会消耗多少。而 BRAM是块 RAM,它的大小和位置是固定的,即使只使用了一点点 BRAM,综合后同样会消耗一整块 RAM。
从物理上看, BRAM 是 FPGA 中固定的 RAM 资源,由大块的 SRAM 构成,常见的有 M4K、 M9K、 M18K、 M36K。分布式 RAM 是用 LUT 拼出来的,而 LUT 本质上讲也是一个 SRAM,只不过是容量较小的 SRAM。同样都是由 SRAM 构成,所以读写速度理论上都是一样的。
CLB 是指可编程逻辑功能块(Configurable Logic Blocks),顾名思义就是可编程的数字逻辑电路。 CLB 是 FPGA 内的三个基本逻辑单元。 CLB 的实际数量和特性会依器件的不同而不同,但是每个 CLB 都可配置,在 Xilinx 公司的 FPGA 器件中,一个 CLB 由 4 个 Slice 组成,这 4 个 Slice 又分 SliceM 和 SliceL,其中M 是 Memory 的首字母, L 是 Logic 的首字母,比较 SliceM 和 SliceL,他们的区别就是 SliceM 的查找表具有 RAM 和 ROM 的功能,而 SliceL 的则不具备。所以SliceM 比 SliceL 多的功能就是做存储器和移位。于是有: SliceM 可实现分布式RAM,而分布式 RAM 是由 SliceM 中的 LUT 实现。
BRAM 是一列一列分布的,这样可能造成用户逻辑模块和 BRAM 直接的距离较长,延时较长,最终导致性能下降。但这并不意味着用分布式 RAM 的性能就一定比 BRAM 的性能好,由于 LUT 单元并不一定是连续的,构成的分布式 RAM 之间会有线延迟。所以具体谁对 FPGA 的时序影响更小还要看具体的布局布线情况,如果需要使用较大的存储空间建议用 BRAM;如果只是需要比较小的零散的存储空间一般就用分布式RAM。
十四,实现同步电路的延时
1,异步电路一般是通过加 buffer、两级与非门等来实现延时;
2,在同步电路中,对于比较大的和特殊要求的延时,一般通过高速时钟产生计数器,通过计数器来控制延时;对于较小的延时,可以通过触发器打一拍。
十五,可以综合实现为 RAM/ROM/CAM 的三种资源: BLOCK RAM,触发器(FF) ,查找表(LUT) ;
1,生成 RAM 等存储单元式,首选 BLOCK RAM 资源;一可以节省底层可编程单元;二可靠性和速度更好。
弄清 FPGA 硬件结构和 BLOCK RAM 的容量,合理、高效的使用 BLOCK RAM;分布式 RAM 资源。
十六,HDL 语言层次概念
1,系统与标准级,功能模块级,行为级,寄存器传输级,门级;
2,系统级,算法级, RTL 级(行为级),门级,开关级。
十七,查找表的原理与结构
LUT 本质上是一个 RAM。有 4 输入或 6 输入的查找表,一个 4 输入的 LUT 可以看作一个有 4 位地址线的 16x1 的 RAM。
十八,FPGA 设计中对时钟的使用
一般使用 PLL,DLL,或 DCM,或者把逻辑转换到触发器的 D 输入。