VHDL에서 std_logic 타입은 물리적 와이어 상의 단일 비트를 표현하는 초석입니다. 이전 튜토리얼에서 쓰인 단순한 integer 타입과 달리, std_logic은 실제 디지털 신호 동작을 더 정확하게 모델링하는 풍부한 값 집합을 제공합니다.
디지털 핀은 보통 로직 하이('1')나 로직 로우('0')를 나르지만, 물리적 신호는 하이 임피던스, 약한, 미정의 상태도 나타날 수 있습니다. std_logic 타입은 이 모든 가능성을 포착해 VHDL 설계에서 가장 빈번히 쓰이는 타입입니다.
이 글은 Basic VHDL Tutorials 시리즈의 일부입니다.
std_logic 시그널이 가질 수 있는 전체 값 목록:
'1'
Logic 1
'0'
Logic 0
'Z'
High impedance
'W'
약한 신호; 0 또는 1 불확정
'L'
약한 0 (풀다운)
'H'
약한 1 (풀업)
'-'
Don't care
'U'
Uninitialized
'X'
Unknown (다중 드라이버)
대부분 튜토리얼에선 주 값 '1', '0'과 가끔 'U', 'X'로 설계 에러를 강조합니다. 나머지 상태는 I2C 같은 프로토콜 모델링이나 트라이스테이트 버스 생성 같은 고급 기능에 유용합니다.
여러 프로세스가 같은 std_logic 시그널을 드라이브하면 언어는 리졀루션 함수(resolution function)로 결과 값을 결정합니다. 이 메커니즘은 시뮬레이션에서 컴파일/런타임 에러를 방지하며, 아래 리졀루션 테이블로 정의됩니다.
U
X
0
1
Z
W
L
H
-
U
X
X
1
1
1
1
1
X
1
U
X
0
X
0
0
0
0
X
0
U
U
U
U
U
U
U
U
U
U
U
X
X
X
X
X
X
X
X
X
U
X
0
1
Z
W
L
H
X
Z
U
X
0
1
W
W
W
W
X
W
U
X
0
1
L
W
L
W
X
L
U
X
0
1
H
W
W
H
X
H
U
X
X
X
X
X
X
X
X
-
실습
이 비디오 튜토리얼은 std_logic 시그널 선언과 파형 시뮬레이션 시각화를 시연합니다.
이 실습에서 생산된 최종 VHDL 코드:
library ieee; use ieee.std_logic_1164.all; entity T10_StdLogicTb is end entity; architecture sim of T10_StdLogicTb is signal Signal1 : std_logic := '0'; signal Signal2 : std_logic; signal Signal3 : std_logic; begin process is begin wait for 10 ns; Signal1 <= not Signal1; end process; -- Driver A process is begin Signal2 <= 'Z'; Signal3 <= '0'; wait; end process; -- Driver B process(Signal1) is begin if Signal1 = '0' then Signal2 <= 'Z'; Signal3 <= 'Z'; else Signal2 <= '1'; Signal3 <= '1'; end if; end process; end architecture;
ModelSim 파형 창에서 run 후 타임라인 확대:
반복 신호 주기의 다른 부분에 커서 둔 파형:
분석
이 실습은 VHDL 리졀루션 함수의 동작을 보여줍니다. 텍스트 출력만 의존하지 않고 파형 검사로 여러 드라이버가 std_logic 시그널에서 어떻게 상호작용하는지 더 명확히 봅니다.
Signal1은 단일 프로세스가 토글하므로 '0'과 '1' 사이를 깔끔히 오갑니다. Driver A와 B가 모두 드라이브하는 시그널들은 앞선 테이블대로 리졀브됩니다.
Signal
Driver A
Driver B
Result
Signal2
'Z'
'Z'
'Z'
Signal2
'Z'
'1'
'1'
Signal3
'0'
'Z'
'0'
Signal3
'0'
'1'
'X'
핵심 정리
std_logic은 단일 비트 시그널에 가장 널리 쓰이는 VHDL 타입이다.
std_logic 시그널을 디지털 값을 나르는 물리적 와이어로 생각하라.
여러 프로세스가 같은 std_logic 시그널을 드라이브하면 리졀루션 함수가 최종 값을 결정한다.