디지털 IC 프런트 엔드 연구 노트: 교차 클록 도메인 신호 동기화

관련 기사

디지털 IC 프런트 엔드 연구 노트: LSFR(Linear Feedback Shift Register)

디지털 IC 프런트 엔드 연구 노트: 래치 래치 합성

디지털 IC 프런트 엔드 연구 노트: 신호 동기화 및 에지 감지

디지털 IC 프런트 엔드 연구 노트: FIFO의 Verilog 구현(1)

디지털 IC 프런트 엔드 연구 노트: FIFO의 Verilog 구현(2)

디지털 IC 프런트 엔드 연구 노트: 그레이 코드(Verilog에서 구현한 이진 그레이 코드 변환기 포함)

디지털 IC 프런트 엔드 연구 노트: 중재 폴링(1)

디지털 IC 프런트 엔드 연구 노트: 중재 폴링(2)

디지털 IC 프런트 엔드 연구 노트: 중재 폴링(3)

디지털 IC 프런트 엔드 연구 노트: 중재 폴링(4)

디지털 IC 프런트 엔드 연구 노트: 중재 폴링(5)

디지털 IC 프런트 엔드 연구 노트: 중재 폴링(6)

디지털 IC 프런트엔드 연구 노트: LRU(최소 최근 사용) 알고리즘


  1. 단일 비트 신호 동기화 기본 사항

플립플롭의 입력 신호가 설정 시간(setup time)과 홀드 시간(hold time)을 충족하지 못하면 출력은 준안정 상태, 즉 출력이 1도 0도 아닌 상태가 됩니다. 불확실한 값입니다.

하나의 클록만 있는 디지털 시스템(단일 클록 도메인 디지털 시스템이라고 함)에서는 두 플립플롭 사이의 조합 논리 회로의 지연을 제어하여 설정 및 유지 시간이 타이밍 요구 사항을 충족하도록 할 수 있습니다. 그러나 하나의 클럭 도메인 플립플롭의 출력이 다른 클럭 도메인 플립플롭의 입력으로 사용될 때 두 클럭은 상관 관계가 없으며 이때 준안정 상태는 피할 다른 방법이 필요합니다.

아래 그림은 이 문제를 해결하는 방법을 보여줍니다. CLK_B 클럭 도메인의 출력 끝에 두 개의 계단식 D 플립플롭을 삽입하는 것입니다. 이때 Q_BS1의 출력은 준안정 상태로 나타날 수 있지만 다음 클록 에지가 오기 전에 준안정 상태가 안정되고 이때 Q_BS2는 준안정 상태로 나타나지 않을 가능성이 높다. 그러나 CLK_B 클럭이 매우 빠르면 Q_BS2가 여전히 준안정 상태로 나타날 수 있습니다. 이 때 캐스케이드된 D 플립플롭의 수를 늘리는 것을 고려할 수 있습니다. 실제 애플리케이션에서는 2단계 트리거를 사용하여 탭하는 것으로 충분합니다.

  1. 신호 동기화 규칙

신호가 동기화되면 몇 가지 규칙을 따라야 합니다.

  1. 클록 도메인을 교차하는 신호는 소스 클록 도메인의 레지스터 출력에서 ​​직접 나와야 합니다. 신호가 플립플롭에서 직접 오는 것이 아니라 조합 논리에서 오는 경우 레이스 및 위험이 생성될 수 있습니다. 아래 그림에 그 예가 나와 있습니다.

처음에 AND 게이트의 두 입력은 1과 0이고 출력 c는 0이다. a가 0에서 1로 변하고 b가 1에서 0으로 변할 때 최종 출력 c는 여전히 0이지만 a와 b는 시간이 항상 1 상태이므로 출력 c가 실수로 일정 시간 동안 1이 됩니다. 이때 CLK_B의 상승 에지가 발생하면 글리치 신호 1이 다음 단계에서 d와 e가 특정 폭으로 나타나도록 합니다. 우리가 보고 싶지 않은 False 신호입니다. CLK_A 클럭 도메인을 사용하는 레지스터가 AND 게이트 뒤에 삽입되면 c의 글리치가 나타나지 않으므로 회로의 정상적인 작동에 영향을 미치지 않습니다.

  1. 동기화 장치는 로직 셀 라이브러리의 전용 플립플롭을 사용하여 구현됩니다. 여기 에 언급된 특수 목적 플립플롭은 높은 구동 능력과 높은 이득(

  1. 동기화를 위한 여러 동기화 장치의 사용을 피하는 하나의 출력 신호. 이 문장이 의미하는 것은 신호를 다른 클럭 도메인의 여러 지점에 동기화하기 위해 여러 동기화 장치를 사용할 수 없다는 것입니다. 동기화 장치로 인해 신호가 1~2주기 지연되기 때문에 동기화 장치가 여러 개인 경우 결과가 발생할 수 있습니다. 비일관성(최종 결과가 일관되더라도)이 발생하여 다운스트림 시스템에 오류가 발생합니다.

  1. 다중 비트 출력 신호는 여러 동기화 장치를 사용하여 개별적으로 동기화하지 않도록 합니다. 이 기사에서 논의하는 것은 모두 단일 비트 신호이며 대부분 제어 신호입니다. 불안정한 조합 오류가 발생할 수 있습니다(Gray 코드는 한 번에 한 비트만 변경하기 때문에 Gray 코드 인코딩을 사용하여 오류를 방지할 수도 있습니다). 이렇게 많은 비트 신호를 동기화하는 방법은 무엇입니까? 비동기 FIFO 또는 핸드셰이크 프로토콜과 같은 다른 방법을 사용하여 동기화할 수 있습니다.

  1. 신호 동기화 고급

두 가지 주파수 영역 클럭 속도의 상대적인 속도에 따라 단일 비트 신호의 동기화를 두 가지 경우로 나누는데 이 두 가지 경우에는 서로 다른 동기화 방법이 필요합니다.

  1. 빠른 클록 동기식 느린 클록 도메인의 비동기 제어 신호

在这种情况下,可能会出现异步信号在自己的慢时钟域中只维持了一个时钟的有效时间,但在快时钟域却被采样了多次,这可能会导致目标时钟域误以为有多个连续的有效控制信号(这里和之前的信号沿检测文章中要求输出一个单周期宽度的检测信号类似,见https://blog.csdn.net/weixin_45791458/article/details/128690161?spm=1001.2014.3001.5501)。

这里采用的方法为在两级同步器后再加一个级别,然后利用第三个同步器的低电平和第二个同步器的高电平译码出一个周期的高电平。

input sig_a;
input clkb;
input rstb;
 
reg sig_a_d1,sig_a_d2,sig_a_d3;
wire sig_a_posedge;
 
assign sig_a_posedge=sig_a_d2&!sig_a_d3;
 
always@(posedge clkb,negedge rstb)
begin
    if(!rstb)
    begin
        sig_a_d1<=1'b0;
        sig_a_d2<=1'b0;
        sig_a_d3<=1'b0;
    end
    else
    begin
        sig_a_d1<=sig_a;
        sig_a_d2<=sig_a_d1;
        sig_a_d3<=sig_a_d2;
    end
end

  1. 慢时钟域同步快时钟域下的异步控制信号

用慢时钟同步快时钟域下的控制信号带来的问题是可能在慢时钟到来之前,快时钟的控制信号已经失效,这样就丢失了控制信号,显然造成了功能错误,信号波形如下图所示。对于这个问题,常见的是使用握手机制。

握手机制(一)

我们通过握手机制,人为锁存快时钟域的控制信号,然后通过同步器穿越边界,使慢时钟域采样到信号,再通过同步器反馈给快时钟域,接着快时钟域释放当前控制信号,这时就可以响应下一个控制信号,原理图如下所示。

其中,数据从adat输入,左下角应该是一个不是一个简单的触发器,而是可以根据反馈信号锁存adat的触发器,锁存后的信号为adat1,这个信号通过两级同步器进入慢时钟域,并将反馈信号(这里是信号本身)同步会快时钟域,表示信号已收到,可以取消快时钟域的锁存信号了,并等待下一个adat有效信号的到来。

用Verilog HDL实现的快时钟域的锁存代码如下。

module adapt_gen(input aclk,rest_b,adat,abdat2,output reg adat1);
    always@(posedge clk,negedge rest_b)
        if(!reset_b)
            adat1<=1'b0;
        else
            if(abdat2)
                adat1<=1'b0;
            else
                adat1<=adat;    
endmodule

这种方法不能解决快时钟域信号在两个慢时钟域信号间多次翻转的问题。握手机制默认了这种情况不存在,也就是说,在设计时,必须保证快时钟域两个有效信号间的最小时间限制。这个最小值是反馈回路的延迟和第一个同步器恢复无效状态的时间之和。

握手机制(二)

我们还可以将快时钟域异步信号连接到一个D触发器的时钟端,而输出端连接至高电平,然后通过两级同步器连接至慢时钟域,慢时钟域收到信号后给出反馈信号,复位D触发器和第一个同步器,如下图所示。

当异步信号有效沿来临时,D触发器的输出q1被置为1,此时q1可能不满足第一个同步器的建立时间要求,导致q2出现亚稳态,但在Synch_out端,亚稳态不会出现(同步装置的原理),输出被反馈回到复位端,与输入信号的低电平一起复位前两个触发器,这样使得输出信号的宽度为一个慢时钟域时钟周期。

以上内容来源于《Verilog高级数字系统设计技术和实例分析》、《SOC设计方法与实现》和《Verilog HDL高级数字设计》

Supongo que te gusta

Origin blog.csdn.net/weixin_45791458/article/details/129368585
Recomendado
Clasificación