산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> VHDL

VHDL에서 신호(Signal)와 변수(Variable)의 차이점 이해하기

이전 튜토리얼에서는 프로세스 내에서 변수를 선언하는 방법을 탐구했습니다. 변수는 지역적인 알고리즘 작업에 이상적이지만, 해당 프로세스 외부에서는 볼 수 없습니다. 설계의 다른 부분과 값을 공유해야 할 때는 신호(signal)를 사용합니다.

신호는 아키텍처의 선언 영역에 선언됩니다. 즉, architecture <아키텍처명> of <엔티티명> is 줄과 begin 키워드 사이입니다.

이 게시물은 기본 VHDL 튜토리얼 시리즈의 일부입니다.

신호 선언 구문:
signal <이름> : <타입>;

초기값을 선택적으로 지정할 수 있습니다:
signal <이름> : <타입> := <초기값>;

실습

이 비디오 튜토리얼에서는 신호 선언 방법과 변수와의 핵심 차이점을 학습합니다.

이 튜토리얼에서 작성한 최종 코드:

entity T06_SignalTb is end entity;
architecture sim of T06_SignalTb is
  signal MySignal : integer := 0;
begin
  process is
    variable MyVariable : integer := 0;
  begin
    report "*** Process begin ***";
    MyVariable := MyVariable + 1;
    MySignal <= MySignal + 1;
    report "MyVariable=" & integer'image(MyVariable) & ", MySignal=" & integer'image(MySignal);
    MyVariable := MyVariable + 1;
    MySignal <= MySignal + 1;
    report "MyVariable=" & integer'image(MyVariable) & ", MySignal=" & integer'image(MySignal);
    wait for 10 ns;
    report "MyVariable=" & integer'image(MyVariable) & ", MySignal=" & integer'image(MySignal);
  end process;
end architecture;

ModelSim에서 실행 버튼을 눌렀을 때 시뮬레이터 콘솔 출력:

VSIM 2> run
# ** Note: *** Process begin ***
# Time: 0 ns Iteration: 0 Instance: /t06_signaltb
# ** Note: MyVariable=1, MySignal=0
# Time: 0 ns Iteration: 0 Instance: /t06_signaltb
# ** Note: MyVariable=2, MySignal=0
# Time: 0 ns Iteration: 0 Instance: /t06_signaltb
# ** Note: MyVariable=2, MySignal=1
# Time: 10 ns Iteration: 0 Instance: /t06_signaltb
# ** Note: *** Process begin ***
# Time: 10 ns Iteration: 0 Instance: /t06_signaltb
# ** Note: MyVariable=3, MySignal=1
# Time: 10 ns Iteration: 0 Instance: /t06_signaltb
# ** Note: MyVariable=4, MySignal=1
# Time: 10 ns Iteration: 0 Instance: /t06_signaltb
# ** Note: MyVariable=4, MySignal=2
# Time: 20 ns Iteration: 0 Instance: /t06_signaltb
...

분석

동일한 초기값 0으로 신호와 변수를 생성했습니다. 프로세스에서 동일하게 처리했지만, 콘솔 출력은 뚜렷한 행동 차이를 보여줍니다. 주요 차이점은:

예제에서 MySignal의 첫 두 증가는 wait for 10 ns; 문이 프로세스를 일시 중단시키고 신호를 업데이트하기 전에 덮어쓰여져 손실되었습니다. 이후 증가는 일시 중단 후 나타나며 예상된 동작과 일치합니다.

핵심 요약

다음 튜토리얼로 이동 »


VHDL

  1. VHDL Signed vs Unsigned 타입 마스터하기: 실전 인사이트
  2. VHDL 변수 완벽 이해: 실전 예제와 신뢰성 있는 설계를 위한 규칙
  3. 클라우드 컴퓨팅 vs 전통적 컴퓨팅: 실용적 비교
  4. VHDL 문자열 리스트 구현: 모범 사례와 예제
  5. VHDL 테스트벤치 시뮬레이션 우아하게 종료하기
  6. VHDL PWM 컨트롤러 구현: 설계, 시뮬레이션, FPGA 데모
  7. VHDL 난수 생성: 균일 분포부터 OSVVM까지
  8. 프로세스 내 프로시저로 VHDL FSM 설계 깔끔하게 만들기
  9. VHDL 함수 마스터하기: 효율적 설계를 위한 실전 가이드
  10. 중국 베이더우 위성 항법 시스템: GPS와 차별점 분석