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

VHDL 동시 문장(Concurrent Statements) 마스터하기: 실전 가이드

VHDL에서 동시 문장(concurrent statement)은 process 블록 밖, 아키텍처에 직접 놓인 시그널 할당입니다. 동시 할당(concurrent assignment) 또는 동시 프로세스(concurrent process)라고도 부릅니다.

동시 문장을 쓰면 할당 우변에 나타나는 모든 시그널에 자동으로 민감한 프로세스를 만드는 효과가 있습니다. 즉, 동시 할당은 완전한 민감도 리스트를 가진 프로세스의 문법적 설탕(syntactic sugar)입니다.

이 단축 표현은 단일 시그널을 구동하는 간단한 조합 논리를 구현할 때 특히 유용합니다. 매번 process 구조에 민감도 리스트를 적는 대신 아키텍처 본문에서 대상 시그널에 직접 할당할 수 있습니다.

이 튜토리얼은 Basic VHDL Tutorials 시리즈의 일부입니다.

올바르게 쓰면 코드 의도가 수정처럼 명확해집니다—토글하려는 비트마다 프로세스로 어지럽힐 필요 없습니다.

실습

이 비디오에서 동시 문장 만들기를 배웁니다:

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

library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity T13_ConcurrentProcsTb is end entity; architecture sim of T13_ConcurrentProcsTb is signal Uns : unsigned(5 downto 0) := (others => '0'); signal Mul1 : unsigned(7 downto 0); signal Mul2 : unsigned(7 downto 0); signal Mul3 : unsigned(7 downto 0); begin process is begin Uns <= Uns + 1; wait for 10 ns; end process; -- Process multiplying Uns by 4 process is begin Mul1 <= Uns & "00"; wait on Uns; end process; -- Equivalent process using sensitivity list process(Uns) is begin Mul2 <= Uns & "00"; end process; -- Equivalent process using a concurrent statement Mul3 <= Uns & "00"; end architecture; 

ModelSim 파형 창에서 run 후 타임라인 확대:

VHDL 동시 문장(Concurrent Statements) 마스터하기: 실전 가이드

파형에서 Mul1, Mul2, Mul3이 정확히 동일하게 동작함을 볼 수 있습니다. 이는 동시 문장과 우리가 작성한 두 프로세스가 완전히 등가임을 확인시켜 줍니다.

동시 문장은 프로세스처럼 동작합니다: <= 우변에 나타나는 모든 시그널이 암묵적으로 민감도 리스트에 추가됩니다. 결과적으로 평가되는 시그널 중 하나라도 변하면 좌변 시그널이 업데이트됩니다.

이 예제에서 Uns 시그널을 왼쪽 비트 시프트로 4배 했습니다. 모든 시그널이 unsigned 타입이라 컴파일러가 숫자값으로 취급합니다. 이진수 오른쪽에 0 비트 두 개를 덧붙이는 건 4를 곱하는 것과 같습니다.

VHDL 동시 문장(Concurrent Statements) 마스터하기: 실전 가이드

핵심 정리

다음 튜토리얼로 이동 »

VHDL

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