[VerilogHDL] 08_컴파일 지시어_timescale

08_컴파일 지시어_1_timescale

verilogHDL

[VerilogHDL] 08_컴파일 지시어_timescale

1. timescale

Verilog HDL에서 timescale은 시뮬레이션 시간과 시간 단위를 설정하는 데 사용되는 컴파일 지시어입니다.

`timescale time_unit/precision

여기서 time_unit은 시뮬레이션 시간의 기본 단위를 나타내며, precision은 시뮬레이션 시간 값의 정밀도를 나타냅니다. time_units, ms, us, ns, ps, fs 중 하나를 선택하여 사용하며, precision은 정수 값입니다.

timescale 지시어를 사용하여 시뮬레이션 시간과 단위를 설정하는 이유는 다음과 같습니다.

  1. 시뮬레이션 시간: timescale 지시어를 사용하여 시뮬레이션 시간의 기본 단위를 설정할 수 있습니다. 시뮬레이션 시간은 Verilog HDL에서 사용되는 시간 관련 작업(예: 딜레이, 시간 기반 조건 등)에 영향을 줍니다.

  2. 시간 단위: timescale 지시어를 사용하여 시뮬레이션 시간 값의 단위를 설정할 수 있습니다. 단위는 시뮬레이션 시간 값을 표현할 때 사용되는 단위로, 보통 초(s), 밀리초(ms), 마이크로초(us), 나노초(ns), 피코초(ps), 펨토초(fs) 등이 있습니다.

  3. 정밀도: timescale 지시어를 사용하여 시뮬레이션 시간 값의 정밀도를 설정할 수 있습니다. 정밀도는 시뮬레이션 시간 값의 유효 숫자 자릿수를 나타냅니다. 정밀도가 높을수록 시뮬레이션 시간 값의 정확도가 향상됩니다.

2. 예제 코드

`timescale 1ns/1ps

module TimescaleExample;
    reg [7:0] data = 8'hFF;
    
    always @(posedge clk) begin
        if (reset)
            data <= 8'hFF;
        else
            data <= #10 8'h00;
    end
endmodule

위의 예제 코드에서는 TimescaleExample 모듈을 선언하고, data라는 reg 변수를 정의합니다.

timescale 지시어를 사용하여 시뮬레이션 시간의 기본 단위를 나노초(ns)로 설정하고, 정밀도를 피코초(ps)로 설정합니다.

always 블록에서는 posedge 클럭 이벤트에 따라 동작하며, reset 신호에 따라 data 값을 업데이트합니다. #10은 10 나노초 딜레이를 의미하며, 10 나노초 후에 data8'h00 값을 할당합니다.

댓글 쓰기

0 댓글