FPGA逻辑设计基础
满足时序更为重要,两者冲突时速度优先
RTL编码风格
我没有了个性?! 这又不影响功能!
对个人而言,或许如此。但对于需要协作 的团队而言,编码风格的不统一,存在诸 多缺点。
RTL编码风格
对于一个团队来讲,编码风格的不统一 造成代码难以阅读,又不好维护,甚至 对于你自己,程序的作者亦是如此。你 或许思维敏捷、聪明伶俐,然而你编写 的代码令你的才干与造诣黯然失色。
思考一下:
传播延时对定时裕度有什么影响?
数字电路中的几个基本概念 - 时钟偏移 (1)
I A Ta Clock Tb O 组合逻辑 I B O
时钟偏移(clock skew)指的是时钟信号在各个负载路径上 的延时差。 以上图为例:假设时钟信号到达器件A 的最大延 时为 T a ,时钟信号到达器件B的最大延时为Tb,那么该时钟信 号的时滞即为Ta-T b。
FPGA逻辑设计基础
目录
● ● ● ● ●
FPGA 设计基本原则 RTL 编码风格 数字电路的几个基本概念 系统同步电路的静态时序分析 FPGA 设计案列分析
FPGA设计基本原则-同步设计原则
异步电路 电路的核心逻辑用组合电路实现, 比如异步的FIFO/RAM读写信号、 地址译码等电路 电路的主要信号、输出信号等并不 依赖于任何一个时钟信号,不是由 时钟信号驱动FF产生的 异步实现电路的最大缺点是容易产 生毛刺 不利于器件的移植,这包括器件族 之间的移植和从FPGA向结构化 ASIC的移植 不利于静态时序分析(STA),验证 设计时序性能 同步电路 电路的核心逻辑用各种各样的触 发器实现 电路的主要信号、输出信号等都 是由某个时钟沿驱动触发器实现 的 同步时序电路可以很好地避免毛 刺 利用器件移植,这包括器件族之 间的移植和从FPGA向结构化 ASIC的移植 有利于静态时序分析(STA),验证 设计时序性能
数字电路中的几个基本概念
● ● ● ● ● 建立时间 TSU、保持时间TH、时钟到输出的延时 TCO 传播延时 TPD 时钟偏移(clock skew,也称“时滞”) 亚稳态 组合逻辑的竞争与冒险
数字电路中的几个基本概念 - TSU、TH、TCO (1)
TSU TH Clock TCO Data TCO
FPGA设计基本原则-硬件原则
首先应该明确FPGA/ASIC的逻辑设计所采用的 HDL硬件描述语言通C/C++软件语言是有本质区别的
C/C++软件语言最终在CPU中运行,本质上是串行运行 的 HDL硬件描述语言最终在FPGA/ASIC中运行,本质是 并发运行的 在写HDL代码是要有硬件思想,最好能够将HDL对 应于硬件电路,做到心中有硬件
数字电路中的几个基本概念 - 竞争/冒险(2)
我们以下图中所示的电路分析竞争冒险现象:
A B
F1 F F2
C
由该电路逻辑图可直接写出输出函数式:
F AB BC AB BC
(a)
假定 A=C=1时,B由1变为0,由于信号传输路径不同,F2先由0变为1,F1 后由 1 变为0,使F2和F1出现同时为1的时刻,故输出产生负向过渡干扰 脉冲。因此,该电路存在竞争冒险现象,如图 8 所示。
数字电路中的几个基本概念
既然是逻辑设计基础的培训,为什么要说明基本概 念? 逻辑设计中 的大多数问题都与这几个基本概念有 关,因此我们需要简要说明一下,作为后续讨论的 依据!
数字电路中的几个基本概念
I
O
组合逻辑
I
O
Clock
上图显示了一个基本的系统同步时序电路模型 。在这个电 路模型中,有几个参数对该电路能否正常工作至关重要,下 面我们分别对它们进行描述。
数字电路中的几个基本概念 - 亚稳态(2)
亚稳态发生的原因
在同步系统中,如果触发器的建立/保持时间不满足,就可 能产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较 长的一段时间处于不确定的状态,在这段时间里Q端出现毛 刺、振荡、固定的某一电压值,而不是等于数据输入端D的 值。这段时间称为决断时间(resolution time)。经过决 断时间之后Q端将稳定到0或1上,但是究竟是0还是1,这是 随机的,与输入没有必然的关系。
RTL编码风格
采用一种一致的、可预见的方式编写代码,能使代 码更易于调试和维护。如果每个人都采用自己的编 码结构、注释方法和命名习惯,那么每个模块多少 都存在一些不易让人理解的地方。除非能完全透彻 地理解代码,否则其他人不可能运用你的代码(发 现问题的根源、分析代码的依赖性等)。
代码风格的不一致导致故障定位和代码复查效率低 下!
A B F2 C P F1 F
数字电路中的几个基本概念 - 竞争/冒险(6)
加入选通脉冲(2) 该选通脉冲通常是P=0,使电路处于封锁状态,只有在接收了 输入信号并且电路达到了新的稳态之后,才有脉冲P=1,允许电 路输出。这就避免了竞争冒险的影响。引入选通脉冲的组合电 路,输出信号只有在选通脉冲P=1其间才有效,波形图如图 10 所示。
FPGA设计基本原则-面积和速度的平衡和互换
面积和速度是一对对立统一的矛盾体
1. 面积:设计消耗的FPGA逻辑资源的数量 2. 速度:设计稳定运行能够达到的最高频率 3. 同时要求设计面积最小,运行频率最高是不现实的
面积和速度互换是FPGA设计的一个重要思想
1. 时序裕求较高,通过并串转换或兵乓操作提高时序
数字电路中的几个基本概念 - TPD (1)
TPD
I
O
组合逻辑
I
O
Clock
传播延时指的是从时序分析的源终结点到时序分析的目 的终结点之间的传输以及组合路径的延时和,例如PADto-PAD、FF-to-FF、 PAD-to-FF、FF-to-PAD 之间的延时。
数字电路中的几个基本概念 - TPD (2)
如果违背了建立/保持时间的要求会出现什么问题呢?
如果没有满足建立/保持时间的要求,寄存器就有可能出现 亚稳态,当出现亚稳态的时候寄存器的输出可能为一个中间 电平、也有可能出现震荡。
数字电路中的几个基本概念 - TSU、TH、TCO (3)
思考一下:
亚稳态有什么样的影响?
T CO对定时裕度有什么影响?
异步 输入
D
Q
D
Q
同步 输出
Clock
数字电路中的几个基本概念 - 亚稳态(4)
亚稳态的解决办法(2) 图中,左边为异步输入端,经过两级触发器同步,在右边的输出将是同 步的,而且该输出基本不存在亚稳态。其原理是即使第一个触发器的输 出端存在亚稳态,经过一个 时钟周期后,第二个触发器D端的电平仍未 稳定的概率非常小,因此第二个触发器Q端基本不会产生亚稳态。注意, 这里说的是“基本”,也就是无法“根除”,那么如果第二个触发器Q 出现了亚稳态会有什么后果呢?后果的严重程度是由你的设计决定的, 如果系统对产生的错误不敏感,那么系统可能正常工作,或者经过短暂 的异常之后可以恢复正常工作,例如设计异步FIFO时使用格雷码计数器 当读写地址的指针就是处于这方面的考虑。如果设计上没有考虑如何降 低系统对亚稳态的敏感程度,那么一旦出现亚稳态,系统可能就崩溃了。
数字电路中的几个基本概念 - 亚稳态(3)
亚稳态的危害 由于输出在稳定下来之前可能是毛刺、振荡、 固定的某一电压值,因此亚稳态除了导致逻 辑误判之外,输出0~ 1之间的中间电压值还 会使下一级产生亚稳态(即导致亚稳态的传 播)。 逻辑误判有可能通过电路的特殊设计 减轻危害(如异步FIFO中格雷码计数器的作 用),而亚稳态的传播则扩大了故障面,难 以处理。
数字电路中的几个基本概念 - 亚稳态(4)
亚稳态的解决办法(1)
只要系统中存在异步元件,亚稳态就是无法避免的,因此设计的电路首 先要减少亚稳态导致错误的发生,其次要使系统对产生的错误不敏感。 前者要通过同步处理来实现,而后者根据不同的设计应用有不同的处理 办法。用同步处理来减少亚稳态发生机会的典型电路如下图所示。
F AB BC AB BC AC
上式增加了AC项以后,函数关系不变,但当A=C=1时,输 出 F 恒为 1,不再产生干扰脉冲。所以,把电路按上式修 改,即可消除竞争冒险现象。修改后的电路如图 11所示:
数字电路中的几个基本概念 - 竞争/冒险(9)
修改逻辑设计(2)
A B
F1 F F2
RTL编码风格
那么我们应该按什么样的风格编写代码?
RTL编码风格
有很多公司都有自己的RTL编码规范
下面列出这些规范中的一些通用规定:
RTL编码风格
● 一个模块为一个文件; ● 文件命名为模块名+后缀 ● 常量(常量和文本宏)用大写字母表示,其它标识符(包 括 net 、variable、construct 及instance )用小写字母 表示; ● 时钟信号的后缀为_clk; ● 复位信号的后缀为_rst; ● 低电平有效的信号的后缀为_b; ● 每个文件必须包含规定格式的文件头; ● 每行长度不超过80字符; ● 禁用 casex ● …
数字电路中的几个基本概念 - 时钟偏移 (2)
思考一下:
时钟偏移对定时裕度有什么影响?
数字电路中的几个基本概念 - 时钟偏移 (3)
讨论:
引起时钟偏移的因素都有哪些?
走线长度 输入电容 … ?
数字电路中的几个基本概念 - 亚稳态(1)
亚稳态是指触发器无法在某个规定时间段内达到一个可确认 的状态。当一个触发器进入亚稳态时,既无法预测该单元的 输出电平,也无法预测何时输出才能稳定在某个确定的电平 上。在这个稳定期间(决断时间,resolution time),触发 器输出一些中间级电平,或者可能处于振荡状态,并且这种 无用的输出电平可以沿信号通道上的各个触发器级联式传播 下去,严重情况下会导致整个系统崩溃。
● 建立时间 TSU是指在器件的时钟触发沿到达之前数据需要保 持稳定不变的最小时间; ● 保持时间 TH是指在器件的时钟触发沿到达之后数据需要保 持稳定不变的最小时间; ● TCO 是指器件的时钟触发沿到输出有效数据之间的时间间隔。