Verilog Reperesentation of Digital Logic 2

2023. 6. 13. 16:50FPGA/Verilog

728x90
  • Data Type

Combinational Logic을 베릴로그로 표현할 때는 wire라는 키워드를 이용하여 사용

FF을 만들때는 reg라는 키워드를 사용해야 한다.

wire = 전선 / reg = 메모리 라 보면 된다.

전선 -> 한쪽의 입력이 있으면 반대편으로 그 값이 전달된다. 만약 입력이 끝나는 순간 출력도 사라진다.

 

FF을 표현할 때는 메모리를 사용하기 때문에, 메모리의 기능을 하는 reg시그널을 아웃풋으로 설정해줘야한다.

  1. FF의 출력은 항상 레지스터 출력이다. 
  2. FF의 출력이 reg라면, clock이 edge될 때 입력이 없어도 그 이전의 출력상태를 출력reg가 기억한다.
  3. 만약, output이 wire출력이라면 clock이 edge될 때 입력이 없으면 그 이전 출력상태를 wire가 기억하지 못한다. ->FF의 재 기능을 하지 못한다. -> output은 무조건 reg타입을 사용해야 한다.

Combinational Logic의 NOT GATE는 입력에 따라 출력이 결정되기 때문에 output signal을 wire로 사용하면 된다.

 

INPUT은 받아들이는 곳으로 wire나 reg나 상관없다.

-> 입력단 측으로 인해 결정되는 것이 아니라 출력단으로 결정되기 때문에 wire와 reg는 상관없다.

 

  • Always @ Keyword

Flip-Flop을 표현하기 위한 Verilog 키워드

베릴로그의 always는 Sensitivity가 변화할 때 구문이 작동. 

-> Clock이 변화하는 순간 작동한다.

-> posedge = 상승엣지 (0 -> 1) / negedge = 하강엣지 (1 -> 0)

 

  • 동시적으로 작동하는 non-blocking 특성

<=키워드는 항상 동시에 실행된다.

 

  • D Flip-flop

FF이 위치한다는 것은 해당 FF이 들어갈 위치가 존재.

module D_FF(
    input D,
    input clock,
    output Q,
    output nQ
    );
    wire D;
    wire clock;
    output reg Q;
    output reg nQ;
    
always @ (posedge clock)begin
    Q<=D;
    nQ<=D;
end

endmodule
  1. 베릴로그는 전체적인 module이 존재
  2. 모듈에서 입, 출력의 signal을 정의한다.
  3. 입, 출력의 전선을 나타내는 wire, reg를 정의한다.
  4. signal을 인가해주는 source자리에 D가 입력되고 Q로 출력되게 되므로 Q<=D;코드 작성
  5. nQ 또한 동일하게 작성된다.

 

  • JK Flip-flop

module JK_FF(
    input J,
    input K,
    input clock,
    output Q,
    output nQ
    );
    wire J,K;
    wire clock;
    output reg Q;
    output reg nQ;
    
always @ (posedge clock)begin
    if(J == 1'b0&& K == 1'b0) begin
    //no change
    end else if(J == 1'b0 && K == 1'b1) begin
    	if(Q == 1'b1) begin
        	Q <= ~Q;
        end
    end else if(J == 1'b1 && K == 1'b0) begin
    	if(Q == 1'b0) begin
        	Q <= ~Q;
        end
    end else if(J == 1'b1 && K == 1'b1) begin
        Q <= ~Q;
    end else begin
    end
end

endmodule

모듈에 대한 signal을 먼저 정의.

 

입력되는 것은 메모리기능을 하지 않아도 되기때문에 wire로 정의.

출력되어지는 것은 메모리기능을 가지는 FF에 의해서 reg타입이다.

 

위의 코딩은 behavior model이라 한다.

 

그다음 always문에선 

위와 같이 부울대수를 구하여 회로도를 그린 후 코드를 작성하거나 if else문을 이용하여 진리표에 맞게 코딩할 수 있다.

-> synthesis를 통해 최적화를 하면 결과값은 동일.

 

 

'FPGA > Verilog' 카테고리의 다른 글

Verilog Reperesentation of Digital Logic 3  (0) 2023.06.13
Digital Logic 3  (0) 2023.06.13
Digital Logic2  (0) 2023.06.13
Verilog Reperesentation of Digital Logic 1  (0) 2023.06.13
Digital Logic 1  (0) 2023.06.13