总结FPGA一些知识点

        本文为个人总结复习资料,资料来源网络,如有侵权,请联系本人删除。文章末尾贴有部分参考资料链接。 

目录

1.竞争与冒险

2.跨时钟域处理(单比特,多比特,快慢时钟)

3.阻塞赋值与非阻塞赋值

4.同步复位,异步复位,同步复位异步释放

同步复位:

异步复位:

异步复位同步释放:

5.FIFO

6.建立时间与保持时间

7.时钟抖动与时钟偏移

8.锁存器与触发器

9.Moore与Meeley状态机

10.FPGA资源

11.FPGA开发流程


1.竞争与冒险

在组合逻辑电路中,不同路径的输入信号变化传输到同一点门级电路时,在时间上有先有后,这种先后所形成的时间差称为竞争(Competition)

由于竞争的存在,输出信号需要经过一段时间才能达到期望状态,过渡时间内可能产生瞬间的错误输出,例如尖峰脉冲。这种现象被称为冒险(Hazard)

消除方法:

  1. 增加滤波电容滤除窄脉冲:在输出端并联一个小电容,将尖峰脉冲的幅度削弱至门电路阈值以下。增加输出电压的翻转时间,易破坏波形。
  2. 使用时钟同步电路,利用触发器进行打拍延迟。
  3. 采用格雷码计数器:计数时相邻数据只有1bit发生变化
  4. 修改逻辑,增加冗余项

避免方法:

  1. 时序电路,使用非阻塞赋值;组合逻辑,使用阻塞赋值。
  2. 在同一个 always 块中不要既使用阻塞赋值又使用非阻塞赋值。
  3. 不要在多个 always 块中为同一个变量赋值。
  4. 避免Latch产生。

2.跨时钟域处理(单比特,多比特,快慢时钟)

跨时钟域(CDC):数据从一个时钟域传输到另外一个时钟域。

亚稳态:数据无法在规定时间段达到一个稳定的状态。

  1. 数据传输不满足触发器的建立时间(Tsu)和保持时间(Th)要求。
  2. 复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recovery time)不满足。

单比特信号:

        慢时钟域到快时钟域:使用寄存器打两拍操作。

       快时钟域到慢时钟域:脉冲展宽,把快时钟域的信号多稳定一段时间,等到慢时钟域采集到。

多比特信号:

(1)异步FIFO

(2)握手法:在具体实现中,假设req、ack、data总线在初始化时都处于无效状态,发送域先把数据放入总线,随后发送有效的req信号给接收域。接收域在检测到有效的req信号后锁存数据总线,然后回送一个有效的ack信号表示读取完成应答。发送域在检测到有效ack信号后撤销当前的req信号,接收域在检测到req撤销(需要进行边沿检测)后也相应撤销ack信号,此时完成一次正常握手通信。

(3)格雷码+同步(同步器)

(4)DMUX同步法

3.阻塞赋值与非阻塞赋值

阻塞:在同一个always 中,一条阻塞赋值语句如果没有执行结束,那么该语句后面的语句就不能被执行。在描述组合逻辑电路的时候,使用阻塞赋值。

非阻塞:非阻塞赋值是由时钟节拍决定,在时钟上升到来时,执行赋值语句右边,然后将 begin-end 之间的所有赋值语句同时赋值到赋值语句的左边, begin—end 之间的所有语句,一起执行,且一个时钟只执行一次,属于并行执行语句。在描述时序逻辑的时候,使用非阻塞赋值。

4.同步复位,异步复位,同步复位异步释放

你可能感兴趣的:(总结FPGA一些知识点)