[VerilogHDL] 04_데이터 타입_localparam

04_데이터 타입_5_localparam

verilogHDL

[VerilogHDL] 04_데이터 타입_localparam

1. localparam

Verilog HDL에서 localparam은 모듈 내에서 사용되는 로컬 상수를 정의하는 데 사용되는 키워드입니다. localparam을 사용하여 값을 한 번 정의하고 모듈 내에서 여러 곳에서 재사용할 수 있습니다. 다음은 localparam에 대한 상세한 설명입니다

1.1 로컬 상수 정의

localparam은 모듈 내에서 사용되는 로컬 상수 값을 정의하는 데 사용됩니다. 로컬 상수는 모듈 내에서만 사용되며, 해당 모듈의 범위에서만 유효합니다. 다른 모듈에서는 직접 접근할 수 없습니다.

1.2 값 할당

localparam은 모듈 내에서 값을 할당할 때 사용됩니다. 한 번 정의된 값은 변경되지 않으며, 상수로 취급됩니다. localparam은 실제로 컴파일러에 의해 상수로 처리되기 때문에 값이 컴파일 타임에 결정됩니다.

1.3 로컬 범위

localparam은 로컬 범위를 갖는다는 점에서 parameter와 다릅니다. localparam은 모듈 내에서만 사용되며, 해당 모듈의 내부 로컬 범위에 속합니다.

1.4 컴파일 타임 상수

localparam은 컴파일 타임에 값을 결정하고 상수로 사용됩니다. 이는 논리 회로의 구성 요소에 대한 컴파일러 최적화를 가능하게 하고, 모듈 간의 인터페이스 정의에서 일관성을 유지할 수 있도록 도와줍니다.

1.5 사용 예

localparam은 주로 상태 머신의 상태, 상수 신호의 값, 주소 폭 등과 같이 모듈 내에서 사용되는 상수 값을 정의하는 데 사용됩니다.

2. 예제 코드

module LocalparamExample;
    localparam WIDTH = 8;
    localparam MAX_VALUE = 255;
    
    reg [WIDTH-1:0] data;
    
    always @(posedge clk) begin
        if (data < MAX_VALUE) begin
            data <= data + 1;
        end
    end
endmodule

위의 예제 코드에서는 LocalparamExample이라는 모듈을 선언하고, WIDTHMAX_VALUE라는 두 개의 localparam을 정의합니다.

WIDTH는 8비트 데이터 폭을 나타내는 로컬 상수입니다. MAX_VALUE는 데이터의 최대 값으로 255로 정의됩니다.

모듈 내부에는 data라는 8비트 레지스터가 선언되고, always 블록에서는 클럭의 상승 에지가 발생할 때 data 값을 증가시킵니다. 이때 MAX_VALUE를 초과하지 않도록 체크합니다.

localparam을 사용하여 WIDTHMAX_VALUE 값을 정의하고, 이 값을 모듈 내에서 여러 곳에서 사용할 수 있습니다. localparam은 로컬 상수를 정의하는 데 사용되며, 컴파일 타임에 값이 결정되고 모듈 내에서 상수로 사용됩니다.

댓글 쓰기

0 댓글