1 / 165

4. VHDL 문법

4. VHDL 문법. 1. VHDL 의 어휘 요소. 1.1 식별어 (identifier) 설계자 또는 개발자가 정의하는 이름 공백을 갖지 않는 문자열 (string) 미리 정해져 있는 지정어 (reserved word) 는 식별어로 사용 불가 식별어의 기본 법칙 길이의 제한은 없다 . 반드시 영문자로 시작되어야 함 식별어에 사용 가능한 문자 영어 대문자 : A~Z 영어 소문자 : a~z 숫자 밑줄 문자 : _

tucker-webb
Download Presentation

4. VHDL 문법

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 4. VHDL 문법

  2. 1. VHDL의 어휘 요소 1.1 식별어(identifier) • 설계자또는 개발자가 정의하는 이름 • 공백을 갖지 않는 문자열 (string) • 미리정해져 있는 지정어(reservedword)는식별어로 사용 불가 • 식별어의 기본 법칙 • 길이의 제한은 없다. • 반드시 영문자로 시작되어야 함 • 식별어에 사용 가능한 문자 • 영어 대문자 : A~Z • 영어소문자: a~z • 숫자 • 밑줄 문자: _ • 밑줄 문자로 시작 불가, 밑줄 문자 연속 사용불가, 밑줄 문자 이외의 특수문자 사용불가 • 가능하면 의미 있는 문자를 사용하는 것이 설계에 유리

  3. 식별어의 올바른 표현 • or_gate • fft1 • test_circuit_number_9 • counter • A • 식별어의잘못된 표현 • 8Or_gate:식별어는반드시 영문자로 시작해야 한다. • _fft1:식별어는 밑줄로 시작할 수 없다. • fft1_:식별어는밑줄로 끝날 수 없다. • test_ _circuit_number_9:식별어에밑줄을 연속으로 사용할 수 없다. • counter_A$fft: 식별어에는밑줄을 제외한 특수 문자를 사용할 수 없다. • VHDL은 영어의 소문자, 대문자를 구별하지 않는다. • ENTITY, Entity, entity, EnTity • AND_GATE, And_Gate, and_gate, AND_gate

  4. entityand_gateis port( pin1, pin2 : instd_logic; pin3 : outstd_logic); endentity and_gate; architecture dataflow ofand_gateis begin pin3 <= pin1 and pin2; endarchitecture dataflow; 그림 4.2 식별어 표기의 예

  5. 1.2 지정어(reservedword) • VHDL 언어에서 구문을 위해 미리 정의되어 있는 문자열 • 대소문자의 구별이 없다. • 식별어로 사용 불가능.

  6. 1.3 리터럴(literals) • 하드웨어를 기술하는데 직접적으로 표현하는 값들과 문자를 의미 • 숫자 리터럴(numberliteral), 문자리터럴(characterliteral), 문자열 리터럴(stringliteral), 비트문자열리터럴(bitstring literal), 특수기호 (special symbol) • 숫자 리터럴-정수, 실수, 진수 표현 • 숫자의 표기 • 정수 리터럴:소수점이 없는 10진수 • 205, 34, 0 • 23_123_456 • 실수 리터럴:소수점을 가진 10진수 • 23.5, 0.34, 54.4E-5 • 23.123_456

  7. 진수표기: 10진수 외에 2진수, 8진수, 16진수를 표기 가능함 • 진수 표기 • 진수는 제일 앞에 표시 • 진수 다음에 # 문자로데이터의 앞과 뒤를 나타낸다. • 2진수 리터럴(binaryliteral):0과 1로 구성된 숫자 • 2#1001# • 2#1000_1111# • 8진수 리터럴(octalliteral):0에서 7까지 범위로 구성된 숫자 • 8#2345# • 8#1233_4567# • 16진수 리터럴(hexadecimalliteral):숫자 0~9와 영문자 A~F까지의 범위로 구성 • 16#2FED#

  8. 문자리터럴-설계자가 시스템의 이해를 쉽게 하도록 의미를 부여한 문자 • 작은 따옴표 (singlequotation mart, ‘ ‘)를이용해서 표기 • 작은 따옴표 사이에 문자를 넣는다. • 문자 리터럴 사용 예 • Z: 대문자 • z: 소문자 • 표기 예 Ifpin1 = ‘1’ OR pin2=‘1’ then pin3 <=‘1’; Else pin3 <=‘0’; End if;

  9. 문자열 리터럴 • 단일 문자들이 여러 개 모인 집합체 • 문자열 표기 • 표기 방법 • 이중 따옴표 “ “ 를 사용하여 표시 • 이중 따옴표 사이에 필요한 문자열을 넣음 • 한 줄에 넣기 어려울 때는 결합 연산자 ‘&’를사용 • 결합 연산자 ‘&’ 사용예 “VHDL stands for BHSIC (very high speed integrated circuit)” & “ hardware description language” • 문자열 리터럴 사용 예 • “string literal”, “AAAA”, “1234567” • “01100100”

  10. 비트 문자열 (bit string) • 비트(bit)들의집합 • 비트 벡터의 값을 표기할 때 사용 • 진수 리터럴과 비슷하게 사용 • 이중 따옴표를 사용 • 진수 표시를 위해 특별한 의미를 갖는 문자 B, O, X 를사용 • 표기 방법 -이중따옴표인 “ “ 를 사용하여 표기 -이중따옴표 사이에 필요한 값을 넣음 -진수 표기를 위해 다음과 같은 문자 사용 -2진수 표기 문자: B 또는 b b”110001” 또는 B”110001” -8진수 표기 문자: O 또는 o O”123” 또는 o”123” -16진수 표기 문자: X 또는 x X”123AB” 또는 x”123AB”

  11. 특수기호 (special symbol) • 연산자표기 • 우선 순위와 같은 언어의 구분 한계를 정하거나 문자의 끝을 표기 하기 위해 사용

  12. 2. 엔티티와 아키텍처 • 엔티티 (entity) :하드웨어의입출력 인터페이스 정의 • 아키텍처 (architecture): 하드웨어내부회로의 연결 및 동작, 구조 등을 기술 • “외부 인터페이스의 명세와 내부회로의 동작 및 구조 표현의 구현으로 분리한다.회로설계에 있어 원하는 동작을 구현하는 방법이 다양하기 때문이다. • VHDL에 의한 회로 설계 단계 정리 • 1단계 (인터페이스 정의): 엔티티 선언 • 하드웨어 외부 입출력 인터페이스 정의 • 하드웨어 블록의 이름과 입출력 포트를 선언 • 2단계 (구조 설계):아키텍처 선언 • 하드웨어 내부 기술 • 내부회로의 연결 및 동작 또는 구조를 기술

  13. 2.1 엔티티 • 게이트, ALU, 마이크로프로세서 등과 같은 하드웨어 설계 대상체를 의미 • 설계 대상회로의 이름, 입출력 인터페이스, 하드웨어 검사 및 동작에 필요한 설계 매개변수를 정의하는 가장 기본이 되는 블록 • 엔티티 표현 형식 • entity 최소 선언의 예

  14. 1. 엔티티 헤더 • 외부와의 연결이나 설계 인테티를 매개변수화 시키기 위해 사용되는 개체를 정의하기 위한 부분 • 범용문 (generic)과포트 (port) 등이포함 • 범용문은 포트문보다 앞에서 정의 되어야 함 • 포트 (port) 문-외부와의 연결을 의미, 하드웨어 구성의 핀 (pin) 또는연결된 핀 그룹 (bus)를표현 • port 문의 형식 [port(포트이름 { ,포트_이름): [모드] 자료형[:= 표현] {; 포트이름 ( ,포트_이름): [모드] 자료형[:= 표현] });] 포트 이름:외부 입출력 신호선의 이름을 정의 모드:신호 흐름의 방향 및 성격을 나타냄

  15. 포트 모드의 종류

  16. 엔티티에서 포트 선언의 예 entity entity_name is port( a: instd_logic ; -- 입력포트를정의 b: instd_logic:= ‘1’; --초기값을 정의 c: outstd_logic; --출력 포트를 정의 d: inoutstd_logic; --입출력포트를 정의 e: bufferstd_logic); --버퍼포트를 정의 end entity entity_name;

  17. 범용문 (generic) • generic 표현 형식 [generic(범용문_이름{, 범용문_이름} : 자료형[:=표현]{ 범용문_이름 {, 범용문_이름}; 자료형[:= 표현]});] • 범용문: 설계 엔티티를 매개 변수화 시키는 작업 • 회로의 특정 크기나 개수에 국한 시키지 않고 설계 매개변수 (parameter)에의해 결정하도록 일반화하기 위해 사용 • 지연, 타이밍, 비트 수, 부 컴포넌트 수 등을 회로 내에 전달 • 컴포넌트 내에서도 선언 • 사용되는 매개 변수로 사용되는 객체는 상수, 기본적으로 입력모드인 in으로 되어 있어 명시할 필요 없음

  18. 엔티티에서 선언 예 • COMPONENT에서 선언 예

  19. 2. 엔티티 선언문 • 아키텍처에서 사용할 객체(object) 및부프로그램 등을 선언하여 사용 • 하나의 엔티티에 여러 개의 아키텍처가 존재 가능공통으로 사용하는 것을 각기 따로 선언하는 것보다 이 부분에서 선언함으로써 모든 아키텍처에서 사용하는 것이 효과적 • 엔티티 선언문에서 사용 가능한 문장. • alias :객체에대한 이름을 재정의 • attribute :객체에대한 추가적인 정보를 부여 • constant :값에이름을 부여 • disconnection :보호된신호의 단절을 위한 시간 지연 • file :file을 제한 • signal :특별한형태의 신호를 정의 • sub-program :function이나 procedure를 정의 • subtype :명확한이름을 부여하거나 제한 • type :자료형을정의 • use :라이브러리나패키지에 정의된 내용을 가시화

  20. 3. 엔티티 문장 • 회로 내에서 사용되는 신호의 setup/hold, 펄스폭 등의 검사 및 감시와 결과문의 출력을 위해 사용 • 엔티티 선언문과 통일하게 한 번의 선언에 여러 개의 아키텍처에서 공용으로 사용 • 엔티티 문에서 사용 가능한 문장 • concurrentassert 문 • concurrentprocedure call • passive process • 엔티티문의 사용 예

  21. 2.2 아키텍처(architecture) • 하드웨어내부의 동작 및 각 부품들 간의 연결구조를 기술 • 하드웨어 설계를 하는 곳 • 엔티티와 아키텍처는 서로 독립적 • 아키텍처 선언 형식 architecturearchitecture_nameofentity_name is {architecture_declaration_part} begin {architecture_statement_part} end [architecture][architecture_name]; • architectureEx_And_behavof And_gate is : 아키텍처이름이 ex_end_behav이고 이것을 And_gate라는 엔티티와 결합 시킴

  22. 1. 아키텍처 선언부 • architecture외 begin 사이에 선언부를 기술 • 아키텍처에 사용할 신호, 상수, 변수 자료형, 컴포넌트 등을 선언 • 하드웨어를 기술하기 위한 내부 문장에서 사용 • 아키텍처 선언문에서 사용 가능한 선언 문장 • alias :객체에대한 이름을 재 정의 • attribute :객체에대한 추가적인 정보를 부여 • constant :값에이름을 부여 • disconnection :보호된 신호와 단절을 위한 시간지연 • file :file을제한 • signal :특별한형태의 신호를 정의 • sub-program :function 이나 procedure를정의 • subtype :명확한이름을 부여하거나 제한 • type :자료형을정의 • use :라이브러리나패키지에 대한 정의된 내용을 가시화 • group :목록들을그룹으로 정의 • function :새로운수학적, 논리적 함수 정의

  23. 아키텍처 선언의 예 architectureex-logic of logic is signal w, x: std_logic; --신호의 선언 begin w<= a or b; x<=b and c; …. end architecture;

  24. 2. 아키텍처 문장 부분 • 아키텍처 문장은 begin과 end 사이에 위치 • 하드웨어 내부 동작, 연결 구조 등을 기술 • 문장을 순차적 처리를 위한 프로세스 (process) 문, 자료의 흐름적 표현을 위한 병행 할당문 (concurrentassignment statement), 구조적표현을 위한 컴포넌트 문 (componentstatement), 일반구조나 조건 구조를 생성하기 위한 생성문 (generationstatement) • 문장 수행에 의한 분류 • 병행문(concurrent statement) • 순차문 (sequentialstatement) • 내부 표현에의한 분류 • 동작적 표현 (behavioralrepresentation style) • 자료 흐름적 표현 (dataflow representation style) • 구조적표현 (structuralrepresentation style) • 혼합적표현 (mixedrepresentation style)

  25. 문장수행에 의한 분류 • 순차적으로 수행하는 순차문, 병행적으로 수행되는 병행문 • 병행문:실제 디지털회로의 모든 구성요소들이 동식에 동작하는 하드웨어 특성을 반영 • 순차문:일반 프로그램 언어와 같이 순차적 특성, 병행문인 프로세스 내에서만 기술 가능

  26. 순차문(sequentialstatement)의예 --전 가산기에 대한 병행문 기술

  27. 병행문(concurrentstatement)의예

  28. 내부 표현에 의한 분류 • 동작적 표현 방법:회로 구조와 상관없이 일반 프로그램 언어를 사용해 알고리듬을 표현하는 것과 유사한 형태의 기술 방법 • 구조적 표현 방법:회로 구조의 연결 상태를 기술한 기술 방법 • 자료 흐름적 표현 방법:연산자나 함수 등을 이용하여 RTL (register transfer level)의 신호 흐름을 기술한 방법

  29. 동작적 표현 방법 • 인간의 생각과 가깝게 하드웨어를 기술하는 방법 • 추상적 표현 방식-가장 상위 레벨에 속함 • 컴퓨터 프로그램과 같은 방법으로 하드웨어 설계, 수학적인 알고리듬을 이용 • 주로 프로세스 문을 사용 • 설계초기 단계에서 알고리듬의 검증또는 하드웨어에 다한 지식이 없는 개발자가 사용

  30. 자료흐름적 표현 • 동작적 표현 보다는 하드웨어에 근접하게 표현 • 부울대수, 레지스터 전송언어, 연산자 등을 상용하여 입력으로부터 출력까지 경로에 대한 표현 • 순차동작이 아닌 병행 동작 • 신호 할당문을 통해 자료의 흐름을 기술

  31. 구조적 표현 방법 • 가장 하드웨어에 가까운 하위단계를 표현 • 게이트 수준 설계 가능 • 컴포넌트와 이들과의 상호 연결관계를 잘 기술 • 컴포넌트를 불러서 사용하드웨어 각 기능을 블록으로 구분하여 컴포넌트로 표현, 상호간인터페이스 정의 후 시스템 설계 가능

  32. 혼합적 표현 • 앞의 세가지 표현을 혼합하여 작성 2.3 구성 (configuration) • 설계엔티티와 아키텍처의 연결관계, 즉, 결합 정보를 기술하는 곳 • 탑 다운 설계 방법에 유익 • 구성선언과 구성명세로 이루어 짐 1. 구성 선언 • 부품의 라이브러리화나 그룹 선언 및 아키텍처를 지정하여 명세화하드웨어 설계의 변경 및 재사용 시에 아키텍처 변경 없이 수정 • 구성선언-설계를 계층적 (hierarchical)으로 구현

  33. 구성 선언 형식

  34. 구성 사용 예

  35. 2. 구성 명세 (configurationspecification) • 부품의인스턴스 대신에 사용되는 엔티티나 아키텍처를 정의 • 단일 부품의 범용문장과 포트의 형 (type)과 이름의 차이을 규정하기 위해 사용 • 구성 명세 선언 형식 forinstance_label :component_name [use entity library_name.entity_name (architecture_name); | use configuration library_name.configuration)name;] [GenericMap] [PortMap]; • 구성명세의 선언 위치 architecture~ is <configuration_spec declaration> begin~end; block<configuration_spec declaration> begin~end; generate <configuration_spec declaration>begin~end;

  36. 구성 명세의 사용

  37. 2.4 패키지 (package) • package:VHDL소스 코드 저장 장소 • VHDL에서 공동으로 사용할 수 잇는 자료형, 함수, 프로시저, 부품 등을 따로 저장해서 모아 둔 것 • 자주 사용되는 것을 아키텍처에서 매번 정의하지 않고, 단 한번의 기술로 여러 설계에서 공통으로 사용할 수 있게 한 것. • 패키지는 정의된 라이브러리에 저장 • use 문을이용해 설계에 포함 시킴 • 패키지 사용형식 uselibrary_name.package_name.ALL;

  38. 패키지의 구성

  39. 1. 패키지 선언 • 외부와의 인터페이스 역할, • 자료형, 함수, 프로시저, 부 프로그램, 컴포넌트 등의 내용을 외부에서 접근, 사용 • 패키지 표현 형식 packagepackage_nameis {package-declaration_item) end [package][package_name]; • 패키지는패키지 이름으로 구분되며, use를 통해 접근 • 사용하는 패키지가 현재 작업 디렉터리에 있으면 라이브러리는 work가 된다. usework.package_name.all; • 패키지선언 목록 • subprogram-- function 또는 procedure • type, subtype • constant, signal, file • alias, component • attribute • disconnection • use, clause • group

  40. 패키지 선언의 예

More Related