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