Ch2-2. VHDL Basic VHDL lexical element VHDL description

Slides:



Advertisements
Similar presentations
Copyright © 2006 The McGraw-Hill Companies, Inc. 프로그래밍 언어론 2nd edition Tucker and Noonan 5 장 타입 “ 타입은 컴퓨터 프로그래밍의 효소이다 ; 프로그래밍은 타입을 통해 소화할만한 것이 된다.” 로빈.
Advertisements


제 4 장 변수, 영역, 수명 변수 바인딩 영역 기억장소 할당과 수명 변수와 그 환경 변수 초기화 상수와 변수.
VISUAL BASIC 양 계 탁.
Introduction 2007년 2학기.
VHDL Package & Subprogram
Copyright SangSangDom, All Rights Reserved.
VHDL 프로그램은 비동기 Reset을 갖는 D 플립플롭을 구현한 것이다
Dept. of Electronics & Info. Eng. Prof. Jongbok Lee
ASIC의 개요 ASIC(Application Specific Integrated Circuit) 특정 용도 주문형 집적회로
디지털 시계 설계.
C++ Espresso 제1장 기초 사항.
Design of Digital Clock (디지털 시계의 설계)
Computer System Architecture
제 7 장 문장 구조화 제어문 지정문 조건문 반복문 GOTO 문 비결정적문.
순차로직 개요.
디지털 산술과 연산회로.
가산기 설계.
제 6 장 데이터 타입 6.1 데이터 타입 및 타입 정보 6.2 타입의 용도 6.3 타입 구성자 6.4 사례 연구
Ruby 프로그래밍 1 문자열 입출력 제어구조 looping 함수 정의
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
Multiplexer 설계.
VHDL의 기본 Lecture #5.
Verilog HDL 이론.
디지털 시스템 설계(3).
4장: 자료형과 수식.
VHDL Description D-latch C=1 일 때 Q 는 D의 입력 값 이 전달된다.
신호등 제어기 차량의 흐름에 따라 신호등의 신호를 제어하는 장치 신호등 제어기의 입출력 신호
PXA255-FPGA 장비 개요 및 실습 Lecture #9.
COMPUTER ARCHITECTIRE
PXA255-FPGA 장비 계요 및 실습 Lecture #9.
VHDL Package and Sub program
Chap. 18 라인 트레이서의 설계 라인 트레이서 바닥에 그려진 선을 따라가는 로봇을 의미 라인 트레이서 구성도
II. VHDL 설계부 4장. VHDL 개요 5장. VHDL 설계 구성 6장. VHDL 객체 및 타입 7장. VHDL 모델링
존슨카운터의 동작을 설명·설계할 수 있다 링카운터의 동작을 설명·설계할 수 있다
변수와 자료형.
1장. 디지털 논리 회로 다루는 내용 논리 게이트 부울 대수 조합 논리회로 순차 논리회로.
VHDL의 기본 Lecture #4.
Data type and Object 자료형 변환 함수들은 std_logic_arith 패키지에 정의되어 있음.
디지털 시스템 설계(2).
DataScience Lab. 박사과정 김희찬 (월)
FSM 설계.
제 2 장 변수와 상수.
Flip-Flop 설계.
Section 02 덧셈 회로 BCD 덧셈 회로 BCD 코드에서 십진수 (16)BCD =
오브젝트 하드웨어 기술 언어 IT CookBook, VHDL을 이용한 디지털 회로 입문.
Programmable Logic Device
4주차: Data Types and Functions
VHDL Mealy and Moore model
프로그래밍 보고서 작성법 순천향대학교 컴퓨터공학과 하 상 호.
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
Java의 정석 제 2 장 변수(Variable) Java 정석 남궁성 강의
프로그래밍 원리 Chapter 04 자료 처리와 연산자 신한대학교 IT융합공학부 박 호 균.
4장 - PHP의 표현식과 흐름 제어-.
VHDL 디지털시계 2.
제 5장 변수, 바인딩, 식 및 제어문 5.1 변수 5.6 표현식 5.2 바인딩 5.7 조건문 5.3 선언 5.8 반복문
가산기 설계.
Chapter 4 변수 및 바인딩.
디 지 털 공 학 한국폴리텍V대학.
4. 어휘 분석(Lexical analysis)
디지털 시계 설계 장성락 전영진 임종엽 전보현 이형준.
Signature, Strong Typing
Signature, Strong Typing
LCD.
Signature, Strong Typing
이번 시간에는... 지난 시간까지 2회차에 걸쳐 WML의 택스트 포맷, 이미지 처리, 페이지 이동, 태스크 수행과 이벤트 처리 및 WML 사용자 Input 처리 태그 등, WML 개발에 대해서 알아보았습니다. 이번 시간에는 2회차에 걸쳐, WML 스크립트 개발에 대해서.
3주차: Control Flow and Others
DataScience Lab. 박사과정 김희찬 (화)
VHDL 응용 Lecture #10.
Presentation transcript:

Ch2-2. VHDL Basic VHDL lexical element VHDL description VHDL data type and object HDL attribute VHDL operator VHDL statement (1)

VHDL 어휘 요소 1-1.주석문 (comment) 프로그램의 부가적인 설명을 위한 문장으로 프로그램의 동작 에는 영향이 없다. 주석문은 연자부호(-)를 연속적으로 2개 사용 “- -” 하여 프로그램과 분리한 후 문장을 기술한다. 예) Entity AND_OR is -- Entity declaration port( A, B, C : in std_logic; -- input port Y : out std_logic ); -- output port End AND_OR;

VHDL 어휘 요소 1-2. 식별어 (identifier) 사용자가 지정하는 이름으로, 신호이름, 변수이름, 엔티티 이름 사용자가 지정하는 이름으로, 신호이름, 변수이름, 엔티티 이름 등을 말하고, 프로그램상의 지정어와 구분된다. 예) entity andg is -- black character is identifier Generic( tphz, tplz : time :=3 ns; default_value: integer: =1); port(a, b : in bit; z : out bit); end andg; 식별어는 영문자(a~z, A~Z), 숫자(0~9), 그리고 밑줄(_)로 구성한다. 반드시 영문자로 시작한다. 식별어는 밑줄(_)로 시작 하거나 끝이 나면 안된다. 연속적으로 밑줄을 포함해서는 안된다. 공백을 가지지 않으며 대소문자 구별은 없다.

VHDL 어휘 요소 1-3. 지정어 (reserved word, keywords) 지정어의 종류> ABS, ACCESS, AFTER, ALIAS, ALL, AND, ARCHITECTURE, ARRAY, ASSERT, ATTRIBUTE, BEGIN, BLOCK, BODY, BUFFER, BUS, CASE, COMPONENT, CONFIGURATION, CONSTANT, DISCONNECT, DOWNTO, ELSE, ELSEIF, END, ENTITY, EXIT, FILE, FOR, FUNCTION, GENERATE, GENERIC, GUARDED, IF, IN, INOUT, IS, LABEL, LIBRARY, LINKAGE, LOOP, MAP, MOD, NAND, NEW, NEXT, NOR, NOT, NULL, OF, ON, OPEN, OR, OTHERS, OUT, PACKAGE, PORT, PROCEDUR, PROCESS, RANGE, RECORD, REGISTER, REM, REPORT, RETURN, SELECT, SEVERITY, SIGNAL, SUBTYPE, THEN, TO, TRANSPORT, TYPE, UNITS, UNTIL, USE, VARIABLE, WAIT, WHEN, WHILE, WITH, XNOR, XOR

VHDL 어휘 요소 1-4. 리터럴 (literal) 수치값을 표현하기 위해 사용하며 정수(integer)과 실수(real) 리터럴이 있다. 또한 2진수, 8진수, 16진수도 표현 가능하다. “_” 밑줄기호를 사용하여 긴 숫자를 구분할 수 있다. 예) 정수리터럴 > 0, 234, 3445 실수리터럴 > 0.0, 32.45, 235.2445 2진수 > 2#101023#, 2#100001# 8진수 > 8# 23525#, 8#34247# 16진수 > 16#AD324#, 16#14AB3# 314245235423 > 314_245_235_423 2#100100011110# > 2#1001_0001_1110# - 진수의 표현에는 #의 기호를 사용하며 #기호를 수의 앞,뒤에 두고 # 기호 앞에는 진수의 종류를 표시한다.

VHDL 어휘 요소 1-5. 문자, 문자열, 비트문자열 문자(Characters) : 문자열(Strings) 하나의 문자로 표현하며 단일 인용부호 ‘ ‘ 를 사용 예) ‘A’, ‘c’, ‘0’, ‘1’ 문자열(Strings) 2개 이상의 문자들로 구성된 문자 배열로 이중 인용부호“ “사용 예) “string s”, “111000”, “234 ABC” 비트 문자열(Bit Strings) 비트열을 2/8/16 진수 형태의 문자열로 표현하며 ”비트열”앞에 진수표시 문자(b/o/x)을 지정하고 사용한다. 예) b”001_0000”, o”67432”, x”A3D”

VHDL Description 2. Entity and Architecture description - Entity : 회로의 Input, Output 등을 선언 - Architecture : 회로의 동작 및 상호 연결을 기술 (VHDL description) - Entity와 Architecture는 쌍으로 표현한다. 상위 묘듈과 이에 포함된 하위의 모듈들을 표현할 때, 상위모듈도 Entity-Architecture 쌍으로, 하위 모듈들도 Entity-Architecture쌍으로 표현하여 준다.

VHDL Description Entity : 1. 회로블록의 이름을 정의, I/O 인터페이스 정의 디자인 파라미터의 전달 3. Generic 선언 형식 4. Port 선언 형식 ENTITY 엔티티_이름 IS GENERIC (파라미터_리스트 ); PORT(포트_리스트); END 엔티티_이름; GENERIC ( 신호_이름,.. : [모드] 자료형[:=표현] ; … ); PORT ( 신호_이름,.. : [모드] 자료형[:=표현] ; … );

Entity and Architecture Entity description 예) entity andg is Generic( tphz, tplz : time :=3 ns; -- tphz, tplz에 상수값 지정 default_value: integer: =1); -- default_value 에 상수값 지정 port(a, b : in bit; -- in 은 모드, bit는 a, b의 자료형 z : out bit); -- out 은 모드, bit는 z의 자료형 end andg; A Z B

VHDL Description Mode의 종류: In, Out, Inout, buffer TYPE (data type) : 모든 신호는 자료형을 가져야 한다. 신호가 1개인 경우 : bit, std_logic 으로 표현 신호가 2개 이상인 경우 : bit_vector, std_logic_vector 로 표현 예) 4비트 표현 : bit_vector(0 to 3), bit_vector(3 downto 0) * std_logic 표현을 사용하기 위해서는 다음의 문장을 entity 이전에 표현 해 주어야 한다. Library ieee; Use ieee.std_logic_1164.all;

Entity and Architecture 4-bit 전 덧셈기 Entity Adder4 is port (A, B : in bit_vector(3 down to 0); Co : in bit; -- input S: out bit_vector(3 down to 0); Cj : out bit ); --output End Adder4 ;

Entity and Architecture 내부동작, 연결, 구조를 기술 2. architecture 선언형식 ARCHITECTURE 아키텍쳐_이름 OF 엔티티_이름 IS { 선언부 } BEGIN { 병행문 } END 아키텍쳐_이름; Architecture 예) architecture sample of andg is begin z <= a and b; end sample;

Entity and Architecture 선언부 : 문장부에서 사용하는 신호, 변수, 상수 등을 정의하는 영역 1. 자료형 선언(Data type declaration) 2. 상수 선언(constant declaration) 3. 신호 선언(signal declaration) 4. 컴포넌트 선언(component declaration) 병행문 : 논리회로의 내부 동작이나 구조를 묘사한 병행 문장을 포함하는 영역 1. 컴포넌트 사례화문 (component instantiation statement) 2. 병행 할당문 (concurrent assignment statement) 3. 생성문 (generate statement) 4. 프로세스문 (process statement)

Entity and Architecture Entity Adder4 is port (A, B : in bit_vector(3 down to 0); Ci : in bit; -- input S: out bit_vector(3 down to 0); Co : out bit ); --output End Adder4 ; Architecture structure of Adder 4 is component Fulladder -- component declaration port (x, y, cin : in bit ; -- input cout, sum : out bit) ; -- output end component ; signal C : bit_vector (3 down to 1) ; -- signal declaration Begin -- component instantiation statement FA0 : Fulladder port map (A(0), B(0), Ci, C(1), S(0) ); FA1 : Fulladder port map (A(1), B(1), C(1), C(2), S(1) ); FA2 : Fulladder port map (A(2), B(2), C(2), C(3), S(2) ); FA3 : Fulladder port map (A(3), B(3), C(3), Co, S(3) ); End Structure ;

Entity and Architecture

Entity and Architecture 다음은 어떤 gate 를 나타내는 VHDL 구문인가 ? OR gate에 대하여 VHDL 구문을 완성하라. Library ieee; Use ieee.std_logic_1164.all; Entity and_2 is port( a, b : in std_logic; y : out std_logic ); end and_2; Architecture dataflow of and_2 is begin y <= a and b; end dataflow;

Entity and Architecture MAX-PLUSII 실행결과

Entity and Architecture Sequential statement (순차문) 문장들이 하나씩 차례로 수행되는 문 문장들이 순차적으로 수행되기 위해서 process statement 사용 Process statement의 begin ~ end 내부에서 순차적으로 한 문장씩 수행 Concurrent statement (동시진행문, 병행문) 문장들이 프로그램내의 순서에 상관없이 동시에 병행적으로 수행되는 문 Process statement 자체는 동시 진행문으로서 여러 개의 process 문이 있으면 동시에 수행 예) A, B, C, D 의 초기값이 1,2,3,0 인 경우 10ns 후 D가 4로 변한다. A <= B ; B <= C ; C <= D ; Time A B C D 0 1 2 3 0 10 1 2 3 4 10 1 2 4 4 10 1 4 4 4

Data type and Object 3.1 Data type (자료형) : 신호, 변수, 상수의 형식 Scalar Type 정수형(integer type) : 부울형(Boolean type) 열거형(enumeration type) IEEE 1164 표준 자료형(IEEE 1164 standard type) 부동 소수점 형 Composition Type 배열형 레코드형

Data type and Object Data type 의 지정 : TYPE 자료형_이름 IS 자료형_서술; SUBTYPE 부자료형_이름 IS 기본자료형 표현범위; 예) TYPE Bit_3 IS (‘0’, ‘1’, ‘Z’); -- 열거형 자료 선언 TYPE Digit IS (Integer range 0 to 7); -- 사용자 지정형 선언 TYPE A_NUMBER IS (integer range 0 to 287); --사용자 지정형 선언 TYPE boolean is (false, true); --부울형 선언 TYPE state_type is (S0, S1, S2, S3, S4); --열거형 선언 SUBTYPE WORD IS STD_LOGIC_VECTOR(15 DOWNTO 0); SUBTYPE BYTE is STD_LOGIC_VECTOR(7 DOWNTO 0); SUBTYPE Part_number is A_number range 0 to 15;

Data type and Object Integer type (정수형) 32 비트 크기의 정수를 표현 -231 ~ +(231-1) = -2147483648 ~ + 2147483947 음의 정수는 2의 보수로써 표현 Boolean type (부울형) 참(True) : 1, 거짓(False) : 0 의 두 가지 값을 가진다 Enumeration type (열거형) 신호, 변수등이 가질수 있는 값을 나열하여 정의 TYPE State_type IS (stateA, stateB, stateC); TYPE Bit_2 IS (‘0’, ‘1’); TYPE Bit_3 IS (‘0’, ‘1’, ‘Z’); TYPE Bit_4 IS (‘0’, ‘1’, ‘X’, ‘Z’ ); Floating Type (부동소수점형) standard: -1.0E38 to 1.0E38 의 수 표현

Data type and Object IEEE 1164 Standard Data Types Bit, Bit_vector Bit object : ‘0’ 또는 ‘1’ Bit_vector object : Bit object의 배열 ‘0’과 ‘1’만으로 표현하므로 high impedance 표현을 하지 못함. Std_logic, std_logic_vector IEEE 1164에 이미 정의된 자료형 Std_logic object : ‘0’, ’1’, ’Z’, ’-’, ’L’, ’H’, ’U’, ‘X’, ‘W’ Std_logic_vector object : std_logic object의 배열 Signed, unsigned (부호형,비부호형) Signed 자료형 : signed number 연산 Unsigned 자료형 : unsigned number 연산 library package : library ieee; use ieee_std_logic_arith.all;

Data type and Object Std_logic object 의 종류 : ‘0’ : Strong Logic 0 ‘L’ : Weak Logic 0 ‘H’ : Weak Logic 1 ‘Z’ : High Impedance ‘X’ : Strong Unknown ‘W’ : Weak Unknown ‘U’ : Un-initialized ‘-’ : Don’t Care 사용예) type Bit_4 is (‘0’, ‘1’, ‘X’, ‘Z’ ); signal A : bit_4; A <= ‘Z’

Data type and Object signal : 시간에 따라 값이 변하는 변수, 외적변수 Object : signal, variable, constant 와 같이 어떤 값을 가지고 있는 것을 객체 (object)라고 한다. Object는 각각의 형식 (data type) 을 가진다 signal : 시간에 따라 값이 변하는 변수, 외적변수 variable : 계산 결과에 따라 값이 변하는 변수, 내적 변수 constant : 값이 시간과 계산결과에 상관 없이 값은 일정

Data type and Object Signal : 논리회로에서 신호 또는 선 (wire)를 나타내며, 각 컴포넌트간의 연결에 사용되는 외적 변수이다. 신호의 할당은 “<=“ (할당 연산자)를 사용하고 신호가 정의는 entity 선언부, architecture의 선언부, package의 선언부에서 모두 가능하다. 예) signal A, B, C : bit signal D : bit_4 signal X : stand_logic signal Y : stand_logic_vector (1 to 4) signal Z : stand_logic_vector (7 downto 0) A <= ‘1’;, D <=‘1’;, X <=‘0’;, Y <= “1001”;, Z<=“1001001”;

Data type and Object Variable : 임의의 계산에서 결과를 가질 때 사용하므로, 결과를 임시 저장하는 역할을 한다. 이 변수는 프로세스문 또는 부 프로그램 내에서만 유효한 내적 변수이다. Variable에 값을 주기 위한 할당 연산자는 “:=“ 이다. 예1) variable A : integer; variable B : std_logic; variable C : std_logic_vector(7 to 0); ~ A := 3;, B := ‘1’;, C := “0100_1000”; 예2) process (x) variable ABC : std_logic; begin ABC := x(0); ABC := x(1) and ABC; ABC := x(2) and ABC; ABC := x(3) and ABC; Y <= not(ABC); end process;

Data type and Object Constant : 값이 변하지 않는 객체, 초기에 선언한 값을 유지하는데 사용한다. 상수의 초기값은 즉시 대입되며, 한번 대입되면 이후 변경이 불가능하다. Constant 에 값을 주기 위한 할당자로는 Variable과 마찬가지로 “:=“를 사용한다. 예) constant Weight : integer := 256; constant sig2 : std_logic_vector:=“0000_0000”; constant dealy1 : time:= 5 ns; Data type으로 time 을 자정할 수 있는 데 이때 값은 fs, ps, ns, ms, sec, min, hr을 단위로 하는 정수이다.