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

VHDL 프로세스에서 민감도 리스트 사용으로 신뢰할 수 있는 RTL 설계

실무급 VHDL에서 프로세스는 일반적으로 wait 문 대신 민감도 리스트(sensitivity list)에 의해 구동됩니다. 민감도 리스트는 프로세스를 깨워야 할 모든 신호를 열거합니다.

wait on과 wait until은 시뮬레이션에 편리하지만, 합성 가능한 RTL에서는 거의 사용되지 않습니다. 합성에서 wait 문은 종종 무시되어 예측 불가능한 하드웨어를 초래합니다. 반면 민감도 리스트는 합성 도구가 신뢰성 있게 구현할 수 있는 조합 논리 또는 클럭 동기 블록에 직접 매핑됩니다.

기본 VHDL 튜토리얼 – 프로세스 민감도

시뮬레이터용 코드를 작성할 때는 타이밍 제어를 위해 항상 wait 문을 사용합니다. 실리콘으로 합성될 설계에서는 wait을 완전히 피하고 민감도 리스트를 사용합니다.

민감도 리스트가 있는 프로세스의 구문은 다음과 같습니다:

process( signal1, signal2, ... ) is begin -- 메인 로직 여기 end process;

프로세스 내부에서 읽는 모든 신호가 리스트에 나타나야 합니다. VHDL 컴파일러는 누락된 신호를 플래그하지 않지만, 하나를 생략하면 합성 후 동작이 변경됩니다.

VHDL-2008은 모든 읽기 신호를 자동으로 포함하는 키워드 all을 도입했습니다(예: process(all)). 그러나 대부분의 상용 합성기는 아직 이 기능을 지원하지 않습니다.

실습

동반 비디오 튜토리얼에서는 민감도 리스트를 사용하는 프로세스 구축을 안내합니다.

이 강의에서 생성된 최종 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;
  -- Wait On으로 트리거되는 프로세스
  process is
  begin
    if CountUp = CountDown then
      report "Process A: Jackpot!";
    end if;
    wait on CountUp, CountDown;
  end process;
  -- 민감도 리스트를 사용하는 동등한 프로세스
  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 프로세스와 민감도 리스트 프로세스가 동일한 조건에서 작동함을 보여줍니다. 이 동등성은 민감도 리스트가 프로세스 끝에 배치된 wait on처럼 암시적으로 동작하기 때문에 성립합니다.

실무에서 민감도 리스트는 합성 가능한 RTL의 사실상 표준입니다. 명확한 의도를 제공하고, 합성 도구가 올바른 하드웨어를 생성하게 하며, wait 문이 초래할 수 있는 모호성을 피합니다.

VHDL 프로세스에서 민감도 리스트 사용으로 신뢰할 수 있는 RTL 설계

핵심 요약

  • 민감도 리스트 프로세스는 wait on으로 끝나는 프로세스와 기능적으로 동일합니다.
  • 프로세스 내부에서 읽는 모든 신호는 해당 민감도 리스트에 나타나야 합니다.
  • 시뮬레이션 전용 코드에는 wait 문을, 합성 가능한 RTL에는 민감도 리스트를 사용하세요.

다음 튜토리얼로 이동 여기.

VHDL

  1. VHDL 문자열 리스트 구현: 모범 사례와 예제
  2. Tcl 기반 VHDL 코드락 모듈 테스트벤치 만들기
  3. VHDL PWM 컨트롤러 구현: 설계, 시뮬레이션, FPGA 데모
  4. 블록 RAM에서 견고한 VHDL 링 버퍼 FIFO 설계하기
  5. VHDL 자가 검증 테스트벤치 구축 실전 가이드
  6. VHDL에서 보호 타입과 액세스 포인터로 동적 링크드 리스트 구현하기
  7. 프로세스 내 프로시저로 VHDL FSM 설계 깔끔하게 만들기
  8. VHDL 비순수 함수 활용: FSM 가독성과 유지보수성 높이기
  9. VHDL 함수 마스터하기: 효율적 설계를 위한 실전 가이드
  10. VHDL 유한 상태 머신 설계: 신호등 실전 예제