[VerilogHDL] 08_컴파일 지시어_timescale
1. timescale
Verilog HDL에서 timescale
은 시뮬레이션 시간과 시간 단위를 설정하는 데 사용되는 컴파일 지시어입니다.
`timescale time_unit/precision
여기서 time_unit
은 시뮬레이션 시간의 기본 단위를 나타내며, precision
은 시뮬레이션 시간 값의 정밀도를 나타냅니다. time_unit
은 s
, ms
, us
, ns
, ps
, fs
중 하나를 선택하여 사용하며, precision
은 정수 값입니다.
timescale
지시어를 사용하여 시뮬레이션 시간과 단위를 설정하는 이유는 다음과 같습니다.
-
시뮬레이션 시간:
timescale
지시어를 사용하여 시뮬레이션 시간의 기본 단위를 설정할 수 있습니다. 시뮬레이션 시간은 Verilog HDL에서 사용되는 시간 관련 작업(예: 딜레이, 시간 기반 조건 등)에 영향을 줍니다. -
시간 단위:
timescale
지시어를 사용하여 시뮬레이션 시간 값의 단위를 설정할 수 있습니다. 단위는 시뮬레이션 시간 값을 표현할 때 사용되는 단위로, 보통 초(s
), 밀리초(ms
), 마이크로초(us
), 나노초(ns
), 피코초(ps
), 펨토초(fs
) 등이 있습니다. -
정밀도:
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 나노초 후에 data
에 8'h00
값을 할당합니다.
0 댓글