1. Subprogram(= 부프로그램)
; function(함수) & procedure(프로시저)의 총칭
-> 별도의 모듈, 특정 값 계산.
-> 반복 동작을 표현.
2. Subprogram 구조
2.1 Declaration(선언) ; 호출방법 정의
2.2 Body (본체) ; 동작내용 서술
3. 함수/프로시저
3.1 function
-> 'in' mode(형식 매개변수)
-> 리턴값 사용
-> 호출은 하나의 표현식(expression)을 구성.
-> 특정 값을 계산/동작을 표현
3.2 Procedure
-> in/ inout/ out mode(형식 매개변수)
-> return값 X => 형식 매개변수의 out모드.
-> 호출은 statement를 구성
-> 특정 값의 계산이나 동작을 표현.
4. Subprogram 선언
ex)
4.1 일반적인 선언
4.1.1 프로시저
; procedure + 지정어 + 형식 매개변수
4.1.2 함수
; function + 지정어 + 매개변수 선언 + return + 리턴형
-> 지정어 자리에 연산자가 올 수 있음
4.1.2.1 pure function : 순수 함수
-> 같은 매개변수 입력에 같은 값 리턴
-> 함수의 기본값으로 pure(예약어) 생략 가능
4.1.2.2 impure function : 비순수 함수
-> 같은 매개변수 입력에 다른 값 리턴
=> 예 : 현재의 시간을 리턴하는 함수
-> impure(예약어)를 반드시 사용
4.2 Formal parameter(형식매개변수)의 class
- file
=> 입출력 관련 모드 정보 필요X
- constant,signal,variable
=> 사용환경에 의해 결정
4.3 Formal parameter(형식매개변수)의 mode
4.3.1 프로시저
-> in, inout, out
-> in의 기본 클래스 : constant
-> inout, out의 기본 클래스 : variable
4.3.2 함수
-> in
-> 클래스 미지정 시, default는 constant
5. Subprogram Body(본체)
; Signal(신호), shared variable(공유변수) 선언 불가
- ex)
7. 부프로그램 활용 설계 예 : 반가산기
7.1 함수 이용
7.2 프로시저 이용
8. Subprogram overloading(부프로그램 오버로딩)
; 서로 다른 시그니처를 이용, 하나의 지정어를 여러 부프로그램에서 사용 하는 것.[?]
8.1 시그니처(signature)
- 지정어(designator)
- 형식 매개변수의 개수
- 형식 매개변수들의 형과 순서
- 함수인 경우 리턴값의 형
8.2 연산자 오버로딩(operator overloading)
; 함수 선언 시 지정어가 연산자일 경우 => 연산자 오버로딩 이용 가능[?]
8.3 ex)Subprogram overloading 예, Call(호출) 예
9. Resolution function(해결함수)
; 하나의 신호에 여러 개의 소스로부터 값이 입력될 때 최종적으로 하나의 값으로 조정해주는 함수 -> 다중 신호 배정 문제의 해결 방법 제공
ex)
- 연결 논리합(wired-OR), 버스 구조에 많이 사용
- 대표적인 해결 함수 : std_logic_1164패키지의 resolved function
9.1 Resoloved signal(해결된 신호)
; 해결 함수가 선언 된 신호. ex) std_logic
9.2 ex)해결함수
ex2) std_logic신호 정의.
10. Package(패키지)
; 단일 목적을 위한 선언(declaration)들의 모임
-> 공통적으로 사용되는 선언이나 자원을 공유하기 위한 용 도
-> 자주 사용되는 부프로그램들을 패키지로 관리
10.1 패키지의 구조 (선언 +본체)
- 패키지 선언(subprogram declaration)
; 패키지의 가시적인 부분 정의
; 패키지 선언으로 완료되고 본체 부분이 필요 없을 수도 있음
- 패키지 본체(subprogram body)
; 부프로그램의 숨겨진 동작을 처리
- VHDL 표준 라이브러리 제공 패키지
-> standard(자동 선언), textio, env, std_logic_1164, std_logic_arith
, std_logic_signed, std_logic_unsigned, std_logic_textio
, std_logic_misc
10.2 Package declaration(패키지 선언)
- ex)
10.3 Package body(패키지 본체)
10.3.1 패키지 선언 내의 선언
; 본 패키지를 사용하는 모든 설계 단위에서 사용 가능
10.3.2 패키지 본체 내의 선언
; 패키지 본체 내부에서만 사용. 패키지 밖에서는 보이지 않음.
10.3.3 ex)패키지 본체
11. 설계 라이브러리
11.1 VHDL 라이브러리 구조
11.2 Design unit(= 설계 단위)
= 독립적으로 컴파일,관리 되는 서술내용
ex)엔티티 선언, 아키텍처 본체, 구성선언, 패키지 본체 등..
- Design file 형성 (설계 단위 가 1개~ 수십개가 모인 것)
11.3 Design library(= 설계 라이브러리)
= 컴퓨터 파일 시스템 내의 저장 장소
- 컴파일 된 design unit은 design library에 저장 됨.
-> VHDL 문법과 무관
-> VHDL 개발 환경별로 정의
ex) design file의 bnf
11.3.1 library unit(라이브러리 단위)
= 문장 서술 순서에 따라 해석되고 컴파일 완료되는 설계 단위
3.1.1 주 라이브러리 단위 : 독립적으로 해석됨
- entity declaration(=엔티티 선언)
- configuration declaration(=구성 선언)
- package declaration(=패키지 선언)
- context declaration(=정황 선언)
- ex) context declaration
=> 바로 다음의 설계 단위에서 참조할 라이브러리를 연결시키는 작업 수행
- library 절을 먼저 선언한 후 use 절을 이용하여 필요한 패키지를 연결
-> library 절 : 해당 설계 단위에서 참조할 라이브러리의 논리적 이름 정의
-> use 절 : 앞서 선언된 라이브러리 내의 필요 패키지 연결
3.1.2 보조 라이브러리 단위 : 주 라이브러리 단위의 body
- architecture body(= 아키텍처 본체)
- package body(= 패키지 본체)
.3.2 설계 라이브러리의 구분
; work는 하나만 된다.
.2.1 working library(작업 라이브러리)
- 라이브러리 논리적 이름 : work
- 파일 시스템 상의 저장소(생성된 library unit 저장)
- 하나의 library만 working library가 될 수 있다.
.2.2 resource library(자원 라이브러리)
- design unit 해석의 참고를 위한, library unit들을 보유하는 저장소.
- 임의의 개수가 가능
ex) work, std, IEEE....
2.2.1 std library
; standard package, context declaration을
제외한 모든 design unit에 자동적으로 선언 되는 library.
- 암시적 선언 내용
library STD, WORK; use STD.STANDARD.all;
- STD library 내의 package들.
-> standard, textio, env
출처 : http://dasan.sejong.ac.kr/~dihan/vhdl.htm
'전공지식정리 > 디지털시스템설계' 카테고리의 다른 글
VHDL6. 해석 및 정교화, 표현식 (0) | 2020.12.08 |
---|---|
VHDL5. 고급문법(구조 내부의 detail) (0) | 2020.12.08 |
VHDL 3.병렬문 (0) | 2020.12.08 |
VHDL2.순차문 (0) | 2020.12.08 |
VHDL1.개발과정, 특징, 구조, 검증, 엔티티, 설계과정 (0) | 2020.12.08 |