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

VHDL 문법(미완)

TimeSave 2020. 12. 8. 23:18

1. 사용가능한 문자

1.1 도형문자(graphic code)
; 191개의 도형문자

191개의 도형문자

1.1.1 주 문자 세트

주 문자 세트

1.1.2보조 문자 세트


1.2 포멧 제어 문자(format effector)
HT[ =horizontal tab(수평 탭)] , VT[=vertical tab(수직 탭)]
, CR[=carriage return(복귀 부호)], LF[=line feed(줄먹임 문자)]
FF[=form feed(용지 먹임 문자)]

1.3 주석
-- 기호, /* */, 한글도 컴파일러가 무시한다.



2. 문장 구성 요소 분류
 2.1 분리어(seperator) 문장 요소들을 서로 분리시키는 역할

->  공백 문자(space), 포맷 제어 문자(format effector), 라인 종단 문자 (End of line)로 구성
-> 라인의 끝은 항상 분리어로 끝남
-> 분리어의 종류는 무관, 연속 사용 가능 

2.2 구분어(delimiter)
; 특수 문자로 문자열을 서로 다른 문장 요소로 분리/ 구분

- 단일 구분어(single delimiter) ,복합 구분어(compound delimiter)

단일구분어

복합구분어



 2.3 예약어(reserved word) ; keyword라고 생각해도 좋다.
- 총 115개(2008 버전)
- 대소문자 구분 없음 

2.4 식별어(identifier) ; 우리가 이름 짓는 것들.
- entity, architecture, signal, variable 등등
- 예약어도 식별어 규칙으로 미리 생성한 것.
- 식별어 BNF(Backus Naur Form) 명명 규칙

BNF식별어 규칙

- 식별어 주의사항 
 9X : 숫자가 제일 앞에 올 수 없음   => X9
 _carry_out : 밑줄이 제일 앞에 올 수 없음 => carry_out
ADD__A_B : 밑줄이 연이어 두개 올 수 없음 => ADD_A_B 
DCT_ : 밑줄이 마지막에 올 수 없음 =>  DCT

 2.5 리터럴(literal); 상수 선언 때 대입되는 상수 값
- ex)

 => 512 , B"1111_1111_1111" , X"FFF" , 15.0,  -15.0




2.5.1) 리터럴 분류
- 추상 리터럴(abstract literal)
- 수형 분류 [ 실수형(real literal), 정수형(integer literal) ] 
- 진법  분류[십진수 리터럴(decimal literal), 진수(based literal) ]
=>  자리수와 가독성을 위해 숫자 앞에 '0' 추가 가능 
=> 밑줄 사용 가능

리터럴 분류

BNF표기법 of decimal literal

BNF표기법 of based literal

BNF표기법 of character literal, 191개의 도형문자만 가능.

BNF표기법 of String literal (한줄표기 or &로 연결)

BNF표기법 of bit string literal -> 자세한건 출처를 통해 공부할 것.

2.6 주석 (comment) ; 가독성 증가 용
- 한줄주석('--') : 포멧제어문자(VT,CR,LF,FF)만 안오면 됨.
- 범위주석 (/* */) : 포멧제어문자 사용 가능. 

ex) 구분해보기

 S : 식별어 
<= : 구분어 
A : 식별어 
xor : 예약어 
B : 식별어 
; : 구분어 
-- calcu… : 주석

3. 연산자(operator)
; 표현식(expression)에 사용되어 식의 값을 결정

3.1 분류
- 8개의 클래스, 우선 순위가 높은 연산자가 먼저 계산 
- 같은 순위는 왼쪽부터 계산
==> 괄호 쓰자.

연산자 분류(8개의 클래스)

3.2 조건 연산자 (condition operator)
 단항 연산자(unary operator)
 IEEE Standard 1076-2008 버전부터 추가된 연산자

bit 형을 boolean 형으로 변환하는 용도
 ‘1’인 경우 TRUE를 리턴
 ‘0’인 경우 FALSE를 리턴

3.3 논리 연산자 (logical operator)
 bit, boolean 형에 대해서 연산이 정의(standard 패키지)
 nand, nor 연산자가 연이어 올 때는 괄호가 필요

3.4 관계 연산자(relational operator)
 두 피연산자의 동일성 여부 검출
 두 피연산자의 순서를 테스트
 관계 연산자의 분류
 관계 연산자
 두 피연산자의 관계를 비교한 후 b l oo ean 값을 리턴
 정합 관계 연산자(matching relational operator
)  두 피연산자의 관계를 비교한 후 피연산자와 같은 형을 리턴
 IEEE Standard 1076-2008 버전부터 추가

3.5 자리 이동 연산자 (shift operator)
 bit, boolean 형의 일차원 배열에 대해서 연산이 정의
 피연산자의 정수 부분이 음수일 경우에는 방향이 바뀜
 자리 이동 연산자의 기능 정의

3.6 덧셈 연산자(adding operator)
 +, - : 수학적인 산술 연산 수행
 & : 배열형을 서로 접합하여 큰 배열형을 생성
 이항 연산자
 덧셈 연산자의 기능 정의

3.7 부호 연산자(sign operator)
 +, - : 수학적인 산술 연산과 같은 동작
 수치형에 대해서 정의됨
 단항 연산자

3.8 곱셈 연산자 (multiplying operator)
 *, / : 수학적인 정의와 같은 동작
 mod : 정수형, 물리형에 대해서 정의됨
 rem : 정수형, 물리형에 대해서 정의됨

3.9 기타 연산자(miscellaneous operator)

 ** : 지수 연산자(exponentiating operator)
 수학적인 정의와 같은 동작
 정수형, 실수형에 대해서만 정의, 지수부(exponent)에는 정수형만 옴
 지수부가 음수일 때는 지수부가 양수일 때의 값의 역수
 abs : 절대값 연산자 , 단항 연산자, 수치형에 대해서 정의
 not :   단항 연산자, bit, boolean형에 대해서 정의





4. 형(type)
4.1 객체(object) in vhdl
 4.2 형(type)