校园招聘即将开始,是时候回顾一下FPGA的理论基础。
- 线与逻辑
线与逻辑:即两个输出端(包括两个以上)直接互连就可以实现"AND"的逻辑功能。在总线传输等实际应用中需要多个门的输出端并联连接使用,而一般TTL门输出端并不能直接并接使用,否则这些门的输出管之间由于低阻抗形成很大的短路电流(灌电流),而烧坏器件。在硬件上,可用集电极开路门(OC门)或三态门(TS门)来实现。
OC门实现线与,应同时在输出端口加一个上拉电阻;三态门(TS门)主要应用于多个门输出共享数据总线,为避免多个门输出同时占用数据总线,这些门的使能信号(EN)中只允许有一个为有效电平(如高电平),由于三态门的输出是推拉式的低阻输出,且不需接上拉(负载)电阻,所以开关速度比OC门快,常用三态门作为输出缓冲器。 - 同步和异步
同步复位是复位信号随时钟边沿触发有效。异步复位是复位信号有效和时钟无关;
同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系;
同步电路有统一的时钟源,经过PLL分频后的时钟驱动的模块,因为是一个统一的时钟源驱动属于同步电路。异步电路没有统一的时钟源。 - 同步电路和异步电路
同步电路:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源,因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。
异步电路:电路没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,还有这些触发器的状态变化与时钟脉冲同步,而其他的触发器的状态变化不与时钟脉冲同步。 - 时序设计的实质
电路设计的难点在时序设计,时序设计的实质就是满足每一个触发器的建立/保持时间的要求。
建立时间:触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的时间。
保持时间:触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的时间。 - 亚稳态
亚稳态:是指触发器无法在某个规定的时间段内到达一个可以确认的状态。
原因:由于触发器的Tsu和Th不满足,当触发器进入亚稳态,使得无法预测该单元的输出,这种不稳定是会沿信号通道的各个触发器级联传播。
解决办法:
1)降低系统时钟频率;
2)用反应更快的FF;
3)改善时钟质量,用边沿变化快速的时钟信号;
4)引入同步机制,防止亚稳态传播(可以采用前面说的加两级触发器);
5)对复位信号采用异步复位、同步释放的方法。
使用两级触发器来使异步电路同步化的电路其实叫做“一步同位器”。两级触发器可防止亚稳态传播的原理:假设第一级触发器的输入不满足其建立保持时间,它在第一个脉冲沿到来后输出的数据就为亚稳态,那么在下一个脉冲沿到来之前,其输出的亚稳态数据在一段恢复时间后必须稳定下来,而且稳定的数据必须满足第二级触发器的建立时间,如果都满足了,在下一个脉冲沿到来时,第二级触发器将不会出现亚稳态,因为其输入端的数据满足其建立保持时间。
同步器有效的条件:第一级触发器进入亚稳态后的恢复时间 + 第二级触发器的建立时间 < = 时钟周期。更确切地说,输入脉冲宽度必须大于同步时钟周期与第一级触发器所需的保持时间之和。最保险的脉冲宽度是两倍同步时钟周期。 因此这样的同步电路对于从较慢的时钟域来的异步信号进入较快的时钟域比较有效,对于进入一个较慢的时钟域,则没有作用 。 - 竞争与冒险
1)基本概念
在进行组合逻辑电路的分析与设计的时候,若不考虑逻辑门的延迟时间对电路产生的影响,就认为电路的输入与输出均处于稳定的逻辑电平。然而在实际中,信号经过逻辑门电路都需要一定的时间,由于不同路径上门的级数不同,信号经过不同路径传输的时间不同,或者门的级数相同,而各个门延迟时间的差异,也会造成传输时间的不同,因此,电路在信号电平变化瞬间,可能与稳态下的逻辑功能不一致而产生错误输出,这种现象就是电路中的竞争-冒险。
2)判断法
如果逻辑表达式中出现有相反的信号,可能会出现竞争-冒险现象。例如:F=(A+B)(\bar{A}+C),在B=C=0时,F=\bar{A}A;
有两个相切的卡诺圈,并且相切处没有其他卡诺圈包围,可能会出现竞争-冒险现象。
3)消除方法
加滤波电路,消除毛刺的影响;
加选通信号,避开毛刺;
增加冗余项,消除逻辑冒险。 - 系统最高速度计算(最快时钟频率)和流水线设计思想
同步电路的速度是指同步系统时钟的速度,同步时钟越快,电路处理数据的时间间隔越短,电路在单位时间内处理的数据量就愈大。假设 Tco 是触发器的输入数据被时钟打入到触发器到数据到达触发器输出端的延时时间;Tdelay 是组合逻辑的延时;Tsetup 是 D触发器的建立时间。假设数据已被时钟打入 D 触发器,那么数据到达第一个触发器的Q输出端需要的延时时间是 Tco,经过组合逻辑的延时时间为 Tdelay,然后到达第二个触发器的D端,要希望时钟能在第二个触发器再次被稳定地打入触发器,则时钟的延迟必须大于 Tco+Tdelay+Tsetup,也就是说最小的时钟周期 Tmin =Tco+Tdelay+ Tsetup,即最快的时钟频率 Fmax=1/Tmin。
FPGA 开发软件也是通过这种方法来计算系统最高运行速度 Fmax。因为 Tco 和Tsetup 是由具