欢迎光临
我们一直在努力

fsm包是什么牌子讲全信号的跨时钟域同步。包括单比特和多比特,对于单比特自然用两级寄存器同步最为方便。对于多比特,常考察异步FIFO以及握手方法。要理解亚稳态的概念以及避免亚稳态的方法。(2)说到亚稳态,就不得不说setup time 和 hold time。一定要掌握两种时钟约束和分析时钟约束的方法。清楚四种路径(

### 全信号跨时钟域同步(单比特和多比特)
#### 单比特跨时钟域同步
– 慢时钟域到快时钟域:采用两级触发器同步来抑制亚稳态传播,如果快时钟域只要求输出一个时钟周期的有效信号,可采用边沿检测电路。默认单比特脉冲信号在源时钟域内已被本地时钟控制的寄存器同步,这样信号不仅与时钟保持同步,且有利于时序优化[^1][^4]。
– 快时钟域到慢时钟域:需要将快时钟域的信号展宽保证慢时钟可以采到,可采用计数、状态机、握手协议来完成,但前提是快时钟域的控制信号是不连续的(如果不行就采用FIFO);也可采用窄脉冲检测电路或脉冲同步器[^1]。

#### 多比特跨时钟域同步
对每一个信号使用两级DFF进行同步会出现数据的收敛问题,即多比特信号的亚稳态,经过两级DFF处理后,输出值随机且相互之间没有关联性。可采用将A时钟域要传输的信号打一拍送到B时钟域中进行双reg同步,同步之后的信号再反馈到A中,A中再进行双reg同步,当A域中反馈同步信号变为高时才将被采信号拉低,但这种方法会有更多的延时,并且需要更多同步寄存器[^3][^5]。

### 亚稳态概念及避免方法
#### 亚稳态概念
在时钟信号上升沿或下降沿附近对异步信号进行采样时,由于建立时间(setup time)和保持时间(hold time)不满足要求,触发器输出端Q在一个规定的时间段内不能达到一个确定的逻辑电平状态,处于一种中间的不确定状态,这种状态称为亚稳态。

#### 避免方法
– 单比特信号:采用多级触发器来采样来自异步时钟域的信号,级数越多,同步过来的信号越稳定。一般两级是最基本要求,如果是高频率设计,则需要增加寄存级数来大幅降低系统的不稳定性。例如将源时钟域(慢)内的单比特信号同步到目的时钟域(快),经过时钟同步后信号不仅与时钟保持同步,而且有利于时序优化[^2][^4]。
– 多比特信号:采用格雷码编码,因为格雷码每次只有一位发生变化,可减少亚稳态的影响;使用FIFO进行数据缓存和同步,FIFO可以处理多比特数据的跨时钟域传输,并且能保证数据的完整性。

### setup time和hold time时钟约束及分析方法
#### 时钟约束
– setup time:指在时钟信号有效沿到来之前,数据信号必须保持稳定的最小时间。如果数据信号在时钟有效沿到来之前的setup time内发生变化,触发器可能无法正确采样数据,从而导致亚稳态。
– hold time:指在时钟信号有效沿到来之后,数据信号必须保持稳定的最小时间。如果数据信号在时钟有效沿到来之后的hold time内发生变化,触发器也可能无法正确采样数据,导致亚稳态。

#### 分析方法
– 静态时序分析(STA):通过工具对电路进行全面的时序分析,检查每个时序路径是否满足setup time和hold time的要求。工具会计算每个路径的时序余量(slack),如果余量为负,则表示该路径存在时序问题。
– 动态仿真:通过编写测试平台,对电路进行动态仿真,观察在不同时钟频率和信号变化情况下,触发器的采样情况,检查是否出现亚稳态。

### 四种路径关键路径查找与最高工作频率计算
#### 四种路径
– 寄存器到寄存器(Register to Register):数据从一个寄存器输出,经过组合逻辑,再到另一个寄存器输入的路径。
– 输入端口到寄存器(Input Port to Register):数据从输入端口进入,经过组合逻辑,到达寄存器输入的路径。
– 寄存器到输出端口(Register to Output Port):数据从寄存器输出,经过组合逻辑,到达输出端口的路径。
– 输入端口到输出端口(Input Port to Output Port):数据从输入端口进入,经过组合逻辑,直接到达输出端口的路径。

#### 关键路径查找
关键路径是指在所有时序路径中,时序余量最小(最接近或小于零)的路径。通过静态时序分析工具,可以找出电路中的关键路径。

#### 最高工作频率计算
最高工作频率(fmax)与关键路径的延时(Tpd)有关,计算公式为:$f_{max}=frac{1}{T_{pd}}$,其中$T_{pd}$为关键路径的总延时,包括组合逻辑延时和寄存器的时钟到输出延时。

### Verilog描述常用电路结构
#### D触发器
“`verilog
module d_flip_flop (
input wire clk,
input wire rst_n,
input wire d,
output reg q
);
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
q <= 1’b0;
end else begin
q <= d;
end
end
endmodule
“`

赞(0)
未经允许不得转载:上海聚慕医疗器械有限公司 » fsm包是什么牌子讲全信号的跨时钟域同步。包括单比特和多比特,对于单比特自然用两级寄存器同步最为方便。对于多比特,常考察异步FIFO以及握手方法。要理解亚稳态的概念以及避免亚稳态的方法。(2)说到亚稳态,就不得不说setup time 和 hold time。一定要掌握两种时钟约束和分析时钟约束的方法。清楚四种路径(

登录

找回密码

注册