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

VHDL에서 민감도 목록을 사용하여 프로세스를 만드는 방법

항상 민감성 목록을 사용해야 합니다. 생산 모듈에서 프로세스를 트리거합니다. 민감도 목록은 프로세스가 민감한 모든 신호를 나열하는 프로세스에 대한 매개변수입니다. 신호가 변경되면 프로세스가 깨어나고 그 안의 코드가 실행됩니다.

우리는 이미 wait on 사용법을 배웠습니다. 및 wait until 신호가 변경될 때 프로세스를 깨우기 위한 명령문. 하지만 솔직히 말해서 대부분의 프로세스를 쓰는 방식은 아닙니다.

이 블로그 게시물은 기본 VHDL 자습서 시리즈의 일부입니다.

VHDL 코드를 작성할 때 작성 스타일은 코드가 시뮬레이터에서만 실행되는지 여부에 따라 다릅니다. 이 튜토리얼 시리즈에서 했던 것처럼 시뮬레이션 코드를 작성하는 경우 항상 wait 사용 프로세스를 제어하는 ​​명령문. 물리적 구현을 ​​만들려는 코드를 작성하는 경우 절대 wait 사용 진술.

민감도 목록이 있는 프로세스의 구문은 다음과 같습니다.
process(<signal1>, <signal2>, ..) is
begin
    <main logic here>
end process;

민감도 목록의 중요한 단점은 모든 프로세스 내에서 읽은 신호는 민감도 목록에 있어야 합니다. 그러나 시뮬레이터는 VHDL 언어에서 합법이기 때문에 민감도 목록에 신호를 추가하지 못한 경우 이를 알려주지 않습니다. 문제는 이렇게 하지 않으면 코드가 합성되어 실제 구현에서 사용될 때 다르게 동작한다는 것입니다.

VHDL-2008에서 키워드 all 모든 신호를 나열하는 대신 사용할 수 있습니다. 불행히도 대부분의 합성 소프트웨어는 이 최신 버전의 VHDL을 지원하지 않습니다.

운동

이 비디오 자습서에서는 VHDL의 민감도 목록을 사용하여 프로세스를 만드는 방법을 배웁니다.

이 튜토리얼에서 만든 최종 코드:

entity T09_SensitivityListTb is
end entity;

architecture sim of T09_SensitivityListTb is

    signal CountUp   : integer := 0;
    signal CountDown : integer := 10;

begin

    process is
    begin

        CountUp   <= CountUp + 1;
        CountDown <= CountDown - 1;
        wait for 10 ns;

    end process;

    -- Process triggered using Wait On
    process is
    begin

        if CountUp = CountDown then
            report "Process A: Jackpot!";
        end if;

        wait on CountUp, CountDown;

    end process;

    -- Equivalent process using a sensitivity list
    process(CountUp, CountDown) is
    begin

        if CountUp = CountDown then
            report "Process B: Jackpot!";
        end if;

    end process;

end architecture;

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

VSIM 2> run
# ** Note: Process A: Jackpot
#    Time: 40 ns  Iteration: 1  Instance: /t09_sensitivitylisttb
# ** Note: Process B: Jackpot
#    Time: 40 ns  Iteration: 1  Instance: /t09_sensitivitylisttb

분석

출력물에서 두 프로세스가 비슷하게 동작함을 알 수 있습니다. 민감도 목록이 있는 프로세스는 정의상 wait on이 있는 프로세스와 동일하기 때문입니다. 프로세스가 끝나면.

민감도 목록이 있는 프로세스는 일반적으로 합성하려는 코드에 사용됩니다. 이러한 코드를 일반적으로 RTL(레지스터 전송 레벨) 코드라고 합니다. 이것은 관습이지만 거기에는 합당한 이유가 있습니다. 일부 wait onwait until 명령문은 합성할 수 있지만 어떤 종류의 하드웨어를 만들지 알기 어렵습니다.

테이크아웃

다음 튜토리얼로 이동 »


VHDL

  1. VHDL에서 문자열 목록을 만드는 방법
  2. VHDL 코드 잠금 모듈을 위한 Tcl 기반 테스트벤치를 만드는 방법
  3. VHDL에서 PWM 컨트롤러를 만드는 방법
  4. VHDL에서 링 버퍼 FIFO를 만드는 방법
  5. 자가 점검 테스트벤치를 만드는 방법
  6. VHDL에서 연결 목록을 만드는 방법
  7. VHDL의 프로세스에서 프로시저를 사용하는 방법
  8. VHDL에서 불순 함수를 사용하는 방법
  9. VHDL에서 함수를 사용하는 방법
  10. VHDL에서 유한 상태 기계를 만드는 방법