Professional Documents
Culture Documents
VHDL 구조 및 문법 정리
VHDL 구조 및 문법 정리
Entity:
- Define Extenal Interface(port: Input Port, Output Port, InOutput Port)
2. Architecture
- Entity의 내부 동작 또는 부품 간의 연결 구조 명세
- Entity -- N개 Architecture 가능
3. process(sensitive list)
- Process 내부는 순차 실행
- sensitive list: process 실행 트리거 신호(Signal), 신호 또는 변수의 변화를 야기하는 이벤트
- 하나의 Architecture에 여러 개의 Process문이 있다면, 이 각각의 Process 문은 병렬로 동작
4. Component
4. Configuration
- 하나의 Entity가 여러 Architecture를 가지고 있을 때, 특정 Architecture를 지목하여 연결 또는
특정 Entity와 Component Instances를 연결
- 테스트 벤치와 같은 것을 작성할 때 유용
5. Package
- 여러 설계에서 사용할 수 있는 전역 데이터형(Type), 부품개체(Component), 함수(Function) 및
프로시저(Procedure) 선언 및 구현
- 여러 설계에서 중복하여 정의하지 않고 공통으로 사용할 수 있도록 만들어 놓은 코드
5. Function 및 Procedure
- 주로 Package에 포함되어 사용되는 서브프로그램
- 예제) Package에 입력 X와 Y를 논리연산 OR를 하여 그 결과를 돌려(Return)주는 Function을 기
술한다고 가정하여 설계하면 다음과 같다.
- Package에 정의된 함수를 사용하여 논리연산 OR를 수행하는 동작을 VHDL 코드로 작성하면 다
음과 같다.
- Procedure에서는 매개변수 목록에 입력 변수와 출력 변수를 모두 포함
- Procedure는 매개변수의 모드로서 in, out, inout을 사용할 수 있음
- 특별히 지정하지 않는 경우에는 in으로 인식함.
- 주의: 몇몇 시뮬레이션 툴에서는 Procedure의 signal 매개변수의 사용이 지원되지 않는 경우도
있음. 이러한 경우에는 Procedure 선언 시 signal 매개변수 대신에 variable 매개변수 사용함..
- 순차처리 문은 항상 Process 문, 함수, 프로시저에서 쓰여짐.
6. 변수(Variable)와 신호(Signal)
- 변수는 프로세스 또는 함수, 프로시저와 같은 서브프로그램 내에서만 선언 가능
- 변수는 값의 할당과 동시에 즉시 값이 갱신
- 신호는 Entity, Architecture, Package, Block에서만 선언 되며, 값의 할당 시에는 일정 지연
후에 값이 갱신됨.
참고: Variable과 Signal의 할당은 VHDL 루프문 내에 모두 사용할 수 있다. 그러나 다음과 같은
이유로 루프 내에는 변수를 사용하도록 하는 것이 좋다.
․ 시뮬레이션이 빨라짐.
․ 합성결과로 생성된 회로를 쉽게 예측할 수 있음.
7. 동기회로
8. 신호 지연
13. RAM
- 8bit address, 8bit 입력 데이터버스, 8bit 출력데이터 버스, 메모리크기는 8 × 256bit
- WRITE_ENABLE 쓰기 가능 신호로서 논리 ‘1’이고 클록이 상승 엣지이면 ADDRESS가 가리키는
주소에 데이터를 쓰고, 논리 ‘0’이고 클록이 상승 엣지이면 ADDRESS가 가리키는 주소의 데이터를
OUT으로 출력.
- 동기적 RAM을 VHDL로 모델링하면 다음과 같음.
- 메모리 워드의 비트열를 subtype에서 정의
- 전체 Addressing 가능한 주소영역으로 이 비트열을 확장시켜 메모리 배열을 만듦
- 그 데이터형을 type문을 사용하여 RAM_TABLE이라는 이름으로 정의
- 데이터의 입력 및 출력이 클록 상승 엣지에서 동작
14. ROM
- 7bit 데이터워드에 100개의 Address가 있는 ROM을 구현한 VHDL 코드
- 메모리의 데이터가 이미 정해져 있는 ROM이므로 실제로 ROM_TABLE 형으로 정의되는 것
은 signal이 아닌 constant로 정의됨.
- 또한 ROM 내부에 저장되는 값은 초기치 할당 연산자인 “:=”로 정의되어 있음.
15. 레코드(Record)
- 구조체
- 레코드 필드 전체가 피연산자에 사용되는 예제
16. 실수형(Floating Point Type)
- 실수형은 합성을 위한 회로에서는 사용해서는 안되고 다만 상위 레벨의 동작 모델링에서만 사
용
- 부동소수점에서는 정의된 실수값이 한정된 비트로 환산되어 근사값으로 표현됨.
- 표현범위는 -1.0×1038에서 1.0×1038까지