FPGA基础知识+基本协议总结(时序篇)

 对三个月的培训做一个总结和收尾:将自己的收获所得分享。

时序上:

1.同步电路和异步电路的区别?

电路中的触发器接不接同一个时钟源。

同步时序逻辑电路:各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲到来时,电路的状态才改变;

异步时序逻辑电路:电路中除可以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件,电路中没有统一的时钟,电路的状态的改变由外部输入的变化直接引起。

2.什么是亚稳态?

亚稳态是指触发器无法在某个规定的时间段内达到一个可以确认的状态;

原理:加入第一级触发器的输入不满足其建立保持时间,它在第一个脉冲信号到来后输出的数据就为亚稳态,

在下一个脉冲沿到来之前,输出的亚稳态数据在一段恢复时间后必须稳定下来,而且稳定的数据必须满足第二级触发器的建立时间。

同步器有效的条件:第一级的触发器进入亚稳态后的恢复时间 + 第二级触发器的建立时间 < = 时钟周期

解决办法:降低系统时钟频率,用反应更快的触发器,引入同步机制(两级触发器),改善时钟质量,用边沿变化快速的时钟信号。

3.跨时钟域的同步怎么做?

打拍(只能从慢时钟域到快时钟域)只适合单比特数据

异步FIFO(多比特)

握手信号(请求req,应答ack)

4.建立时间,保持时间的概念?

建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;

保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间, 如果保持时间不够,数据同样不能被打入触发器。

5.时序约束、时序分析有关

时序分析的实质:检查设计中的触发器能否正常工作,也就是检查D触发器的同步端口(输入)的变化是否满足建立时间和保持时间要求,或者检查D触发器的异步复位端口的变化是否满足恢复时间和移除时间要求。

静态时序分析:采用穷尽分析方法提取出整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否符合时序要求;

动态时序分析:就是仿真。

6.消除竞争和冒险

竞争:组合逻辑电路中,某个输入变量通过两条或两条以上的途径传到输出端,由于每条延迟时间不同,到达输出门的时间有先有后;

冒险:多路信号的电平值发生变化后,信号变化的瞬间,组合逻辑的输出有先有后,不是同时变化,往往会出现不正确的尖峰信号(毛刺);

接入滤波电容,修改逻辑设计,引入选通脉冲

7.PLL的相位偏移有什么用

数据采样的位置

8.逻辑综合

把设计的高级语言描述转换成优化后的门级网表

9.同步复位和异步复位

同步复位是指复位信号在时钟上升沿到来时,才有效always @(posedge clk) begin if (!rst_n)

异步复位是指无论时钟沿是否到来,只要复位信号有效,就会对系统进行复位

always @(posdge clk or negedge rst_n) begin if(!rst_n)

同步复位:有利于仿真,有利于时序分析,可以滤除高于时钟频率的毛刺;但复位信号的有效时长必须大于时钟周期,因为大多数的DFF只有异步复位端口,会在寄存器的数据输入端插入组合逻辑,会耗费较多的逻辑资源。

异步复位:节省资源,设计简单,方便识别;倘若复位释放恰恰在时钟有效沿附近,会使寄存器输出出现亚稳态,复位信号容易受到毛刺影响。

同步释放:使复位信号的释放和时钟同步,避免亚稳态。

所以一般采用异步复位,同步释放,如何做到:打拍,异步fifo,握手

10.组合逻辑和时序逻辑的区别

代码上:时序逻辑里的敏感列表里带有时钟上升沿,组合逻辑没有上升沿或者带有*

电路上:时序逻辑相当于在组合逻辑上多了一个D触发器

波形图上:组合逻辑的波形是即刻发生变化的,与时钟无关;时序逻辑的波形不会立刻反映出来,只有在时钟上升沿发生变化。

阻塞赋值:串行,一般在组合逻辑中使用

非阻塞赋值:并行,一般在时序逻辑中使用

11.LATCH、DFF、Register有什么区别?

锁存器:脉冲电平(0,1)敏感的存储单元电路,在使能信号有效时,可以锁住输出信号保持不变,使能信号失效时,输出与输入相同,等效于一个输出缓冲器。电位信号控制。

触发器:脉冲边沿敏感,锁存器是触发器的一种应用类型,强调的是通过触发信号(时钟)锁存数据输入位。

寄存器:暂存运算的数据和运算结果。同步时钟控制。

12:task和function

task可以调用function和其他task,而function不能调用task;

function只能与主模块共用一个仿真时间单元,而task可以定义自己的仿真时间;

function至少要有一个输入变量,而任务可以没有,也可以有多个任何类型的变量;function返回一个值,task不返回值。

function的定义不能包含任何的时间控制语句,不能启动task。

13.边沿检测

上升沿或下降沿的检测。

触发器经过时钟之后触发,输出t0时刻的信号,再通过非门输出信号,保留t1时刻的输出信号;

t0时刻为高、t1时刻为低,与门输出为高,此时为下降沿;

t0时刻为低、t1时刻为高,与门输出为高,此时为上升沿;

用途:

将时钟边沿使能转换为边沿检测使能,使时钟同步化;

捕获信号的突变

逻辑分析仪中信号的边沿检测。

14.时序约束

主要包括周期约束,偏移约束,静态时序路径分析,

附加约束的作用:

提高设计的工作频率(减少逻辑和布线延时);

获得正确的时序分析报告(静态时序分析工具以约束判断时序是否满足设计要求的标准);

指定FPGA/CPLD电气标准和引脚位置;

14.MOORE与MEELEY状态机的特征

Moore 状态机的输出仅与当前状态值有关,且只在时钟边沿到来时才会有状态变化;

Meeley 状态机的输出不仅与当前状态值有关,而且与当前输入值有关。

一段式中,一个always块中既描述状态转移,又描述状态输入和输出;

二段式中,一个always块时序逻辑描述状态机,另一个组合逻辑描述状态转移规律、条件和输出;

三段式,一个always块中同步时序描述状态转移,组合逻辑判断转移条件、规律,描述状态输出。

采用独热码,独热码永远只有1位为1,但必须加上default,不然会生成锁存器。

15.时钟抖动和时钟偏移

时钟抖动:时钟频率不一致,时钟的跳变沿不确定;由外界干扰引起,采用抗干扰手段可以避免;

时钟偏移:时钟相位的不一致,全局时钟产生的各个子时钟信号到达不同触发器的时间点不同;由数字电路内部各路径布局布线长度和负载不同导致,利用全局时钟网络可尽量消除。

16.FPGA设计中如何实现同步时序电路的延时?

异步电路的延时:加buffer、两级与非门

同步电路,较大和特殊要求的延时,一般通过高速时钟产生计数器,通过计数器来控制延时;对于比较小的延时,可以通过触发器打一拍,延时一个时钟周期。

17.前仿真、后仿真

前仿真(功能仿真-RTL仿真):在于验证电路的功能是否满足设计要求,不考虑电路门延迟与线延迟,主要验证电路与理想情况是否一致;

后仿真(时序仿真-门级仿真):电路已经映射到特定的工艺环境后,综合考虑电路的路径延迟与门延迟的影响,验证电路能否是否满足时序要求。

你可能感兴趣的:(verilog,fpga开发)