전공지식정리/디지털시스템설계

VHDL 3.병렬문

TimeSave 2020. 12. 8. 23:22

3. 병렬문

3.1 프로세스문(process statement)
; 순차적으로 서술할 수 있는 독립 모듈

- 알고리즘 표현 가능 도구
- 외부에서 보면(자체는) 병렬문
- 내부는 순차문.
- 여기서 신호 선언 불가.

3.2 동작
- 일종의 무한루프 => 감지리스트 신호 변화에 의해 순차문 수행

3.3 감지리스트
- (process 예약어 다음) or 마지막 순차문 wait문에 위치.

3.4
ex1) process 예약어 다음, sensitivity list 위치.
       
     Process(A,B)
      begin
                if A>B then
                            Y <= '0';
                else
                            Y < ='1';
                end if;
       end process;
==> 가급적 이 코드를 사용할 것.

ex2) wait on 다음에 sensitivity list 위치.
process
begin
          if A>B then
                      Y <= '0';
          else
                      Y <= '1';
           end if;
           wait on A,B ;
 end process;

3.5 delta delay (델타 지연)
; 순차문의 논리적인 실행 순서의 차이를 표현 한 것.
-> 실제 지연 없음 
-> 순차문들이 순차적으로 진행하는 것.
=> 감지리스트 신호 변화가 없을 때 : 시뮬레이션 타임 진행
=> 감지리스트 신호 변화가 있을 때 : 델타 지연으로 모델링

- 신호배정문 : 델타지연 발생
- 변수배정문 : 델타지연 없음.(소프트웨어적으로만 배정)

3.5.1 프로세스문의 델타지연.

20 ns : b 신호의 변화 delta cycle : process (a b c)
40 ns : b 신호의 변화
60 ns : a 신호의 변화
80 ns : c 신호의 변화

.5.2.1 지연된 프로세스(postponed process)
; 현재 단계에서 최종 델타 값만 가짐.


-> 프로세스에 예약어 'postponed' 사용
-> 델타 지연을 일으키는 문장 사용 불가.
   => 예약어 'after'  필요.
-> 다음 사이클이 델타지연이 아닐 경우만 실행 재개(?)
-> 논리합성 의도 없음(?)

3.5.2.2 비지연 프로세스
; 일반적인 프로세스 -> 모든 단계에서 델타지연.

3.6. 블록문
;  구조의 모듈화에 사용.(반복되는 구조)

3.6.1 block header
; 블록의 외부 인터페이스 표현 (like entity선언)
- 포트, 제네릭 선언 가능

3.6.2 block declarative part
; 아키텍쳐 선언과 일치(프로세스 선언과 비슷)
-> 신호, 공유변수(shared variable) 선언 가능
-> 콤포넌트 선언 가능

3.6.3 block statement part ; 병렬문으로 구성.

ex) 

3.6.4 경호조건
guard 신호로 block내의 동작 제어
-> 경호 조건 값 = guard신호 값
-> default = boolean형의 guard신호
-> guarded(예약어)를 사용하는 신호에 적용

3.6.4.1 guarded(예약어) 사용 신호
; 프로세스문의 감지리스트에 guard신호가 선언된 것 처럼 동작.
-> guard 신호 암시적 선언
-> guard 신호에 경호조건 암시적 배당.

ex)


등가코드 :


3.7. 병렬 프로시저 호출문.
; 순차 프로시저 호출문(프로세스 내부)과 동일.

ex)


3.8. 병렬 주장문
; 순차 주장문(프로세스 내부)와 동일

3.9. 병렬 신호 배정문
; 순차 신호 배정문(프로세스 내부)와 동일

ex) 예시 그리고 등가코드.

-------------------------------------------------------------------------------------
3.10. 콤포넌트 실체화 문
 ; 콤포넌트 입출력 신호와 내부 신호의 연결 관계를 정의


ex)

3.10.1.1. 아키텍처 선언부 에서 사용할 Component 선언.
3.10.1.2 아키텍처 문장부에서 Component 실체화문 사용.
3.10.1.3 콤포넌트 in/out 신호 <=> entity의 in/out, 내부 신호와의 연결 정의
-> generic map aspect : generic 신호들의 연결 관계 정의
-> port map aspect : 포트 신호들의 연결관계 정의

3.10.2 콤포넌트 연결
ex)

- Component의 형식 매개변수 => 실 매개변수 연결
- 형식 매개변수(formal parameter)
         -> Component 선언에 사용
         -> 부프로그램 선언에 사용( => 함수/프로시저)  

3.10.2.2 Component 연결방식
3.10.2.2.1 positional association(위치 연결)
 -> 형식 매개변수 위치에 실 매개변수 대응.

3.10.2.2.2 named association(이름 연결)
 -> 선언 위치에 무관하게 연결

=>두 방법 다 사용을 추천.


3.11. 생성문(= generate문)

generate문 bnf

ex)

-> 정교화(elaboration)매커니즘 => 반복구조/ 조건 분기구조
-> 효율적인 회로 서술.

출처 :  http://dasan.sejong.ac.kr/~dihan/vhdl.htm