2014-09-17 2 views
0

Microsemi 웹 사이트 (Actel HDL Code)의 문서를 살펴본 결과 플립 플롭 (동기식, 비동기식 등)의 구현이 몇 가지 발견되었습니다. 모든 경우에 필자는 플립형을 모델링했습니다 -blocks 명령문을 포함하는 -flops.플립 플롭 모델링의 올바른 방법

순차 논리를 모델링하기 위해 항상 비 차단을 사용했기 때문에 이러한 구현이 올바른지 알고 싶습니다. 내가 누락 된 것이 있습니까? 아니면 일반적으로 순차 회로가 아닌 플립 플롭 만 모델링하는 것입니까?

// Rising Edge Flip-Flop with Asynchronous Reset 
module dff_async_rst (data, clk, reset, q); 
    input data, clk, reset; 
    output q; 
    reg q; 

    always @(posedge clk or negedge reset) 
    if (~reset) 
     q = 1'b0; 
    else 
     q = data; 

    endmodule 

//Rising Edge Flip-Flop with Synchronous Reset 
module dff_sync_rst (data, clk, reset, q); 
    input data, clk, reset; 
    output q; 
    reg q; 

    always @ (posedge clk) 
    if (~reset) 
     q = 1'b0; 
    else 
     q = data; 

endmodule 

참고 : 항상에서 사용되는 차단 할당

+1

대부분의 합성 툴 순차 논리에 공통적입니다. 이 대답은 당신에게 더 자세한 통찰력을 줄 것이다 : http://stackoverflow.com/a/4774450/1383356 – Ari

답변

1

플립 플롭은 이전에 생각했던 비 차단 (<=)로 모델링되어야 순차 논리를 얻을 차단합니다.

1995 년 이후에 어떤 버전의 Verilog 을 사용하는 경우 포트 선언이 약간 정리 될 수 있습니다. 주의 명확성을 위해 시작 부분을 추가하고 활성 낮은 신호를 지정하려면 _n을 추가하십시오.

리셋 동기와

module dff_async_rst (
    input data, 
    input clk, 
    input reset_n, 
    output reg q //SystemVerilog logic is preferred over reg 
); 

always @(posedge clk or negedge reset_n) begin 
    if (~reset_n) begin 
    q <= 1'b0; 
    end 
    else begin 
    q <= data; 
    end 
end 

endmodule 

상승 에지 플립 플롭을 다시 비동기로 에지 플립 플롭 상승

module dff_sync_rst(
    input data, 
    input clk, 
    input reset_n, 
    output reg q //SystemVerilog logic is preferred over reg 
); 


always @(posedge clk) begin 
    if (~reset_n) begin 
    q <= 1'b0; 
    end 
    else begin 
    q <= data; 
    end 
end 

endmodule 
차단 과제는 아니지만, 이러한 예는 플립 플롭을 생성합니다
+0

내가 코드를 작성할 때, 나는 당신의 대답과 같은 코딩 스타일을 사용한다. 코드에 비 차단 할당을 사용합니다. 그러나 지정된 링크의 작성자가 차단 할당을 사용하므로 코딩 스타일이 올바른 것입니까? 나는 Microsemi 웹 사이트에서와 똑같은 질문을해야만했다. – chitranna

+0

정확하지 않다. 비 블로킹 (non-blocking)은 플립 플롭 (flip-flops)이 존재하는 이유를 모델링하는 것입니다. 올바른 형식을 사용하지 않으면 게이트 레벨 시뮬레이션 불일치에 대한 RTL이 발생할 수 있습니다. – Morgan