《FPGA入门教程》看书随笔——数字电路设计入门

本文介绍了数字电路设计的基础知识,包括逻辑设计的核心概念、常见的电平标准、组合逻辑与时序逻辑的区别,以及如何处理竞争与冒险现象,特别是毛刺的产生与消除方法。此外,文章还详细探讨了同步电路设计原则与时钟设计要点。
1、数字电路设计的核心是逻辑设计。数字电路的逻辑值只有‘1’和‘0’,表征的是模拟 电压或电流的离散值,一般‘1’代表高电平,‘0’代表低电平。
2、当前的数字电路的电平标准常见的有:TTL、CMOS、LVTTL、LVCMOS、 ECL、PECL、LVDS、HSTL、SSTL等。
3、数字电路设计大致可分为组合逻辑电路和时序逻辑电路。
     组合逻辑电 路的输出仅与当前的输入有关,而时序逻辑电路的输出不但与输入有关,还和系统上一个 状态有关。
     组合逻辑电路由任意数目的逻辑门电路组成,一般包括与门、或门、异或门、与非门、或非门等。
4、时序逻辑电路由时钟的上升沿或下降沿驱动工作,其实真正被时钟沿驱动的是电路中的触发器(Register),也称为寄存器。触发器的工作原理和参数如下图:

5、竞争与冒险
     竞争:当一个逻辑门的输入有两个或两个以上的变量发生改变时,由于这些变量时经过不同路径产生的,是它们状态改变的时刻有先有后,这种时差引起的现象称为竞争(Race),
     竞争的结果将很可能导致冒险(Hazard)发生(例如产生毛刺)。
     组合逻辑电路的冒险仅在信号状态改变的时刻出现毛刺,这种冒险是过渡性的,它不会是状态值偏离正常值。但在时序电路中,冒险是本质的,可导致电路输出值永远偏离正常值或发生震荡。
     避免冒险的最简单的方法同一时刻只允许单个输入变量发生变化,或使用寄存器采样的办法
6、毛刺的产生
     信号在器件中传输的时候,所需要的时间是不能精确估计的,当多路信号同时发生跳变的瞬间,就产生了“竞争冒险”。
这是,往往会出现一些不确定的尖峰信号,即“毛刺”
7、毛刺的危害:
     毛刺是数字电路设计中的棘手问题,它的出现会影响电路工作的稳定性、可靠性,严重 时会导致整个数字系统的误动作和逻辑紊乱。
8、毛刺的消除
    (1)输出加D触发器
     原理是用一个D触发器去读带毛刺的信号,利用D触发器对输入信号的毛刺不敏感的特点,去除信号中的毛刺。 
     (2)信号同步法
     设计数字电路的时候采用同步电路可以大大减少毛刺。做到真正的“同步”就是去除毛刺信号的关键问题。所以同步的关键就是保证在时钟的跳变沿读取的数据时稳定的数据胃不是毛刺的数据。以下为两种具体的信号同步方法:
     1)信号延时同步法
     原理就是在两级信号传递的过程中加一个延时环节,从而保证在下一 个模块中读取到的数据是稳定后的数据,即不包含毛刺信号
     2)状态机控制
     由状态机在特定的时刻分别发出控制特定模块的时钟信号或者模块使能信号,状态机的循环控制就可以使得整个系统协调运作,同时减少毛刺信号。
     (3)格雷码计数器
     格雷码计数器的输出每次只有一位跳变
9、同步电路设计
     同步电路设计是指所有电路在同一个公共时钟的上升沿或下降沿的触发下同步的工作。
     同步电路的设计准则:
     (1)尽可能在设计中使用同一时钟,时钟走全局时钟网络。走全局时钟网络的时钟是最简单、最可预测的时钟,并保证Clocke skew可以小到忽略的地步
     (2)避免使用混合时钟沿采样数据。
     (3)尽量少在模块内部使用计数器分频所产生的时钟。计数器分频时钟需完成的逻辑 功能完全可由PLL锁相环或时钟使能电路替代。计数器分频时钟的缺点是使得系统内时钟 不可控,并产生较大的Clock skew,还使静态时序分析变得复杂。
     (4)避免使用门控时钟。因为经组合逻辑产生的门控时钟极可能产生毛刺,且组合逻辑电路的Jitter和Skew比较大
     (5)当整个电路需要多个时钟来实现,则可以将整个电路分成若干局部同步电路(尽可能以同一个时钟为一个模块),局部同步电路之间接口当作异步接口考虑,而且每个时钟信 号的时钟偏差(△T)要严格控制。
     (6)电路的实际最高工作频率不应大于理论最高工作频率,留有设计余量,保证芯片 可靠工作。
     (7)电路中所有寄存器、状态机在系统被reset复位时应处在一个已知的状态。
10、时钟的设计讨论
     时钟类型包括: 全局时钟、内部逻辑时钟和门控时钟。
     (1)全局时钟
     全局时钟即同步时钟,它通过 FPGA 芯片内的全局时钟布线网络或区域时钟网络来驱 动。
     全局时钟的设计方法:
     1)由PLL锁相环来产生全局时钟。
     2)将FPGA芯片内部逻辑产生的时钟分配至全局时钟布线逻辑
     3)将外部时钟通过专用的全局时钟输入引脚引入FPGA。
     (2)内部逻辑时钟(严格禁用
     内部逻辑时钟即指由芯片每部的组合逻辑或计数器分频产生的时钟。
     (3)门控时钟(避免使用
     门控时钟最好只在顶层模块中出现,并将其分离到一个在顶层的独立模块中。
     推荐的门控时钟设计如下,该设计一般不会产生毛刺和亚稳态的问题。
11、亚稳态
     在同步电路或异步电路中,如果触发器的setup 时间或hold 时间不能得到满足,就可 能产生亚稳态。此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状 态,在这段时间里Q端将会产生毛刺并不断振荡、最终固定在某一电压值上,此电压值并 不一定等于原来数据输入端D 的值。这段时间称为决断时间 (resolution time)。经过决断 时间之后,Q端将稳定到0或 1上,但是究竟是0还是1,  这是随机的,与输入没有必然 的关系
     亚稳态的危害:
     (1)导致逻辑误判
     (2)导致亚稳态的传播(严重情况下输出0~1之间的中间电压值还会使下一级 产生亚稳态)
12、对跨时域数据的处理
     核心就是要保证下级时钟对上级数据采样的setup时间或hold时间满足要求,即尽量避免亚稳态的发生和传播。但是,只要系统中有异步元件,亚稳态就无法避免。推荐下面的方法来解决异步时钟域数据同步问题:
(1)用触发器打两拍
(2)异步FIFO或DPRAM
      因为异步FIFO或DPRAM使用格雷码计数器设计读写地址的指针,所以它可以很 好地避免亚稳态的发生。
        (3)调整时钟相位(难度大,适用面有限)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风中月隐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值