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

VHDL 클록 트리거 프로세스 구축 실전 가이드

대부분의 VHDL 설계는 클록된 로직, 흔히 동기 또는 순차 로직이라 불리는 것을 사용합니다. 클록된 프로세스는 다른 입력 시그널 변화와 무관하게 마스터 클록의 에지에서만 활성화됩니다.

클록된 로직의 기본 요소는 플립플롭(flip-flop)입니다. 이 튜토리얼에서는 네거티브 리셋을 가진 양의 에지 트리거 플립플롭에 집중합니다. 아래 회로도를 참조하세요:

VHDL 클록 트리거 프로세스 구축 실전 가이드

샘플-홀드 장치로서 플립플롭은 상승 클록 에지에서 입력 값을 캡처하고, 다음 상승 에지 또는 리셋 신호 어서트 전까지 그 값을 유지합니다.

참고: 이 글은 Basic VHDL Tutorials 시리즈의 일부입니다.

모든 클록된 프로세스는 동시에 트리거되고 입력을 동시에 샘플링합니다. 클록은 이산적 타임스텝을 확립해 복잡한 논리를 명확한 사이클-바이-사이클 이벤트로 분할하게 합니다.

플립플롭 또는 그 배열을 레지스터(registers)라고도 부릅니다.

클록된 프로세스의 민감도 리스트에는 일반적으로 클록 시그널만 들어갑니다. 프로세스가 클록 플랭크에서만 깨어나기 때문입니다. 추가 입력은 트리거 목적상 무시됩니다.

아래는 동기 리셋을 가진 클록된 프로세스의 재사용 가능한 템플릿입니다:

process(Clk) is begin if rising_edge(Clk) then if nRst = '0' then <reset all output signals here> else <main logic here> end if; end if; end process; 

실습

동반 비디오 튜토리얼에서 VHDL 클록된 프로세스 생성을 안내합니다.

테스트벤치 코드

플립플롭 최종 테스트벤치:

library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity T17_ClockedProcessTb is end entity; architecture sim of T17_ClockedProcessTb is constant ClockFrequency : integer := 100e6; -- 100 MHz constant ClockPeriod : time := 1000 ms / ClockFrequency; signal Clk : std_logic := '1'; signal nRst : std_logic := '0'; signal Input : std_logic := '0'; signal Output : std_logic; begin -- The Device Under Test (DUT) i_FlipFlop : entity work.T17_FlipFlop(rtl) port map( Clk => Clk, nRst => nRst, Input => Input, Output => Output); -- Clock generation Clk <= not Clk after ClockPeriod / 2; -- Testbench sequence process is begin -- Release the DUT from reset nRst <= '1'; wait for 20 ns; Input <= '1'; wait for 22 ns; Input <= '0'; wait for 6 ns; Input <= '1'; wait for 20 ns; -- Apply reset nRst <= '0'; wait; end process; end architecture; 

플립플롭 모듈

네거티브 리셋을 가진 양의 에지 플립플롭 구현:

library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity T17_FlipFlop is port( Clk : in std_logic; nRst : in std_logic; -- Negative reset Input : in std_logic; Output : out std_logic); end entity; architecture rtl of T17_FlipFlop is begin -- Flip‑flop with synchronized reset process(Clk) is begin if rising_edge(Clk) then if nRst = '0' then Output <= '0'; else Output <= Input; end if; end if; end process; end architecture; 

파형 관찰

ModelSim에서 시뮬레이션 실행 후 타임라인 확대 시 파형은 출력이 오직 상승 클록 에지에서만 업데이트됨을 명확히 보여줍니다:

VHDL 클록 트리거 프로세스 구축 실전 가이드

분석

출력은 상승 클록 에지에서만 변경됩니다. 두 상승 에지 사이에서 발생하는 입력 전이(예: ~45ns에서 시작하는 음의 딥)는 플립플롭이 에지에서만 샘플링하므로 캡처되지 않습니다.

아래 애니메이션은 입력, 클록, 출력 간 관계를 시각화합니다:

VHDL 클록 트리거 프로세스 구축 실전 가이드

주요 관찰 사항:

실제로 플립플롭은 클록 에지 전후 짧은 기간 동안 안정된 입력을 요구합니다. 이는 셋업(setup)과 홀드(hold) 시간으로 알려져 있습니다. 이 제약은 VHDL을 넷리스트로 변환할 때 합성 도구가 자동 처리합니다.

시뮬레이션 타임스텝에 대한 깊은 이해는 델타 사이클 설명을 참조하세요.

핵심 정리

지식 테스트 준비됐나요? Basic VHDL Quiz – part 3 풀거나 다음 튜토리얼로 계속하세요.

VHDL

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