Download presentation
Presentation is loading. Please wait.
1
VHDL
2
VHDL이란? 1. HDL(Hardware Descrption Language)의 필요성 2. VHDL의 유래
대형회로를 설계시 기존의 설계 방법 비효율성 (시간/비용 증가) 복잡한 하드웨어를 쉽게 기술하기 위하여 언어를 사용하는 방법 연구 프로그래밍 언어 : 회로의 지연처리, 합성등의 문제점 HDL : VHDL, VerilogHDL ,AHPL,IDL등이 연구, 사용 2. VHDL의 유래 VHSIC(Very High Speed Integrated Circuit Hardware) Description Language 미국 국방성에서 직접회로 관련 업체들 상호간에 개발을 위한 정보 교환 및 문서화를 위하여 제작 1987년 IEEE 로 불리는 IEEE 표준 HDL탄생 1993년 IEEE 으로 불리는 IEEE 표준 HDL new version 탄생 3. VHDL의 응용 분야 Documentation : 회로의 문서화 Simulation : 시물레이션을 통한 검증 Synthesis : 합성과정을 통해 실제 하드웨어로 제작 VHDL이란?
3
회로도를 이용한 설계와 VHDL을 이용한 설계 의 특징
4
VHDL의 구성 하드웨어 표현의 최소단위 : Design entity Design entity
Entity Declaration Architecture Body VHDL의 구성
5
VHDL 문법 Library 및 use문 (library / package 선언부) Entity declaration
Library ieee; Use ieee.std_logic_1164.all; Entity name is Port ( a : in std_logic_vector(2 downto 0); b, c, d : in std_logic; x, y : out std_logic); End name; Architecture arch of name is Signal u1, u2 : std_logic; Begin u1 <= c and b; u2 <= u1 when a = “001” else d; x <= u1; y <= not u2; End arch; Library 및 use문 (library / package 선언부) Entity declaration (interface 선언부) Architecture declarative section Architecture body (회로의 동작 기술) VHDL 문법
6
VHDL 표현방법 동작적 모델링 자료흐름 모델링 구조적 모델링 가장 높은 레벨의 추상적인 표현
기능적 또는 수학적인 알고리즘을 사용해 시스템의 동작 을 기술하는 것 자료흐름 모델링 자료의 흐름 즉, 신호 및 제어의 흐름 주로 부울대수, 함수, RTL 또는 연산자를 사용하여 입력 으로부터 출력까지의 경로 표현을 위주로 함 동작적 모델링과 구조적 모델링의 중간적 모델링 구조적 모델링 하드웨어에 가장 가까운 하위레벨의 표현 컴포넌트와 게이트들과의 연결상태를 나타냄 VHDL 표현방법
7
알고있어야 할 사항 모든 알파벳 문자는 소문자와 대문자를 구별하 지 않고 똑같이 취급
주석은 마이너스 두 개(--)로 시작되며, 그 줄 끝까지 유효 한 문장은 세미콜론(;)으로 끝남 알고있어야 할 사항
8
Library 및 Package library ieee; --라이브러리 ieee를 사용한다고 선언
VHDL에서 사용하는 라이브러리 및 패키지 라이브러리는 패키지를 묶은 집합 패키지는 표준 VHDL에서 제공하지 않는 기능, 형, 연산자들을 사용할 수 있게 함 사용방법 library 라이브러리 이름; use 라이브러리.패키지 이름.all; 사용 예 library ieee; --라이브러리 ieee를 사용한다고 선언 use ieee.std_logic_1164.all; -- 라이브러리 ieee안에 있는 -- std_logic_1164패키지에 선언된 것들을 사용 Library 및 Package
9
Library 및 Package ieee.std_logic_1164 패키지
VHDL이 기본으로 제공하는 형은 bit, bit_vector인데 이는 0 과 1밖에 표현 할 수 없다. 실제 신호는 하이 임피던스, 약한 신 호 0과 1, 초기 설정되지 않은 값 등 여러 상태로 있을 수 있기 때문에 ieee에서 이 패키지 안에 이들을 표현 할 수 있는 형들 을 제공한다. std_logic : 0, 1, Z등을 표현 std_logic_vector : std_logic의 벡터(배열)형 Library 및 Package
10
Entity Declaration Entity 선언 Entity는 크게 두가지로 나누어 짐 Syntax
기능이 아닌, 설계를 위한 입,출력 인터페이스, 동작에 필 요한 매개변수 목록 정의 Entity는 크게 두가지로 나누어 짐 Port와 Generic Port : 입·출력을 선언 Generic : 하드웨어에 필요한 파라미터를 선언 Syntax entity [entity name] is port ([input port name] : in [data type]; [output port name] : out [data type]); end [entity name]; Entity Declaration
11
Entity Declaration Entity 선언의 예 Entity and2 is
port( A, B : in std_logic; C : out std_logic); end and2; 주의할 점! Entity의 시작을 설정해줘야 한다. (ex : and2) End명령어로 끝을 표시해야 한다. (ex : end and2;) Entity의 시작과 끝의 이름이 같아야 한다. (ex : and2) 이름 앞에 숫자를 표기 할 수 없다. (ex : 2and) 이름에 공백이 있어서는 안 된다. (ex : and 2) Entity Declaration
12
Port 선언 Port의 종류 In Out Inout Buffer Entity로의 입력단자, 단방향 데이터 입력
양방향 신호를 사용, 내부 피드백 허용 다른 모든 포트를 대치할 수 있음 Buffer Out포트와 비슷하나 피드백을 허용함 Entity 외부에서의 포트 구동을 허용하지 않음 Port 선언
13
Port 선언 Port Type Vector Type Std_logic Std_logic_vector
Std_unlogic Std_unlogic_vector Bit Bit_vector Vector Type Ex) 8bit의 경우 Std_logic_vector(7 downto 0) MSB LSB Std_logic_vector(0 to 7) A(7) A(6) A(5) A(4) A(3) A(2) A(1) A(0) A(0) A(1) A(2) A(3) A(4) A(5) A(6) A(7) Port 선언
14
Entity내에 기술하며, Generic의 매개변수를 Entity에 전달함으로써 회로의 개수나 입출력의 크기가 매개변수에 의해 결정되게 하는 것
Ex) Generic(size : integer := 8); Generic의 사용은 사용할 Component의 Entity에 먼저 선언을 하고 다음 Component를 사용하는 Logic System에서 이를 이용한다. Generic(일반화)
15
객체(Object) 상수(Constant) 신호(Signal) Architecture 와 Begin 사이에 선언
한번 정해진 값은 바꿀 수 없다. 사용 예 Constant width : integer := 8; 신호(Signal) 선(wire)을 나타낼 수 있음 구성요소들을 서로 연결할 때 사용 Signal에 값을 대입할 때는 ‘<=‘을 사용 Signal count : bit_vector ( 3 downto 0); 객체(Object)
16
객체(Object) 변수(Variable) 파일(File) 프로세스문과 부프로그램 내에서 사용
신호(Signal)와는 달리 선이나 메모리 요소를 나타내지 못함 계산 목적으로 흔히 쓰임 한 순간에 1개의 값만 가짐 변수할당과 초기화 기호 ‘:=‘은 즉시 할당을 나타냄 Process 와 Begin 사이에 선언 사용 예 Variable result : std_logic := ‘0’; 파일(File) 객체 선언과 동시에 파일을 open 할 수 도 있고, 객체를 선언한 후에 파일 open/close를 procedure call로 별도로 할 수도 있다. File infile : text open READ_MODE is in “sample.dat”; 객체(Object)
17
Signal과 Variable의 차이 Signal Variable Wire로 구현
Component에 연결에 사용되는 외적 변수 객체 대입 방법 : ‘<=‘를 사용 VHDL에서 필요시 되는 시점에서 대입 초기값 선언에는 ‘:=‘를 사용(즉시 대입) 중간 연산단계에서 주로 이용 Variabe 값은 내적 변수로 사용 대입기호 : ‘:=‘ Signal과는 달리 값이 바로 대입 Signal과 Variable의 차이
18
Architecture Body Architecture Body Syntax
사용자가 설계하고자 하는 시스템 내부의 동작을 세부적으 로 정의하는 부분 Entity와 Architecture는 각각 독립적인 구성요소 Syntax architecture [architecture name] of [entity name] is begin architecture statement end [architecture name]; Architecture Body
19
Architecture Body Architecture Body의 예 Architecture rtl of and2 is
Begin c <= a and b; End and2_a; Architecture Body
20
Architecture Body Architecture Body 설계 시 주의할 점
Architecture의 시작과 끝은 begin과 end이다. Entity이름은 앞에 선언된 Entity이름과 같아야 한 다. (ex : and2) Architecture의 이름을 선언해야 한다. (ex : sample, rtl) Architecture Body
21
기본적인 연산자 기본적인 연산자 <= : 신호 대입문 논리 연산자 A<= ‘1’; -- A에 논리 ‘1’을 전달
<= : 신호 대입문 A<= ‘1’; -- A에 논리 ‘1’을 전달 B<=“0101” -- B에 4비트 “0101”을 전달 논리 연산자 기본적인 연산자
22
If 문 조건에 맞게 실행 Architecture rtl of if_1 is Begin Process(clk, a1, a2)
if(clk=‘1’) then y <= ‘1’; else y <= ‘0’; end if; end process End rtl; If 문
23
다중 If 문 조건이 여러 개 일 때 주의할 점! Architecture rtl of if_2 is Begin
Process(a1, a2, a3, clk1, clk2) begin if (clk1=‘1’) then z <= a1; elsif(clk2=‘1’) then z <= a2; else z <= a3; end if end process; End rtl; 주의할 점! Elseif(X) → elsif(O) 다중 If 문
24
Else가 없을 때는 if 문이 거짓일 때 수행되어지는 명령이 없으므 로 전에 작성되어 있던 값을 그대로 출력하여야 함(기억소자가 필요)
대표적인 예 : Latch, Flip-Flop Architecture rtl of if_4 is Signal qtmp : std_logic; Begin Process(reset_n, j, k, clk) begin if reset_n = ‘0’ then qtmp <= ‘0’; elsif clk’ event and clk=‘1’ then if(j=‘1’ and k=‘0’) then qtmp <= ‘1’; elsif(j=‘0’ and k=‘1’) then qtmp <= ‘0’; elsif(j=‘1’ and k=‘1’) then qtmp <= not qtmp; end if; end process; q <= qtmp; End rtl; Else가 없는 if 문
25
Case 문 수식 값에 따라 문장을 선택 수식 값이 when의 값과 일치하면 그 문장 수행
Architecture rtl of ex3 is begin Process (sel, a0, a1, a2, a3) case sel is when “00” => y <= a0; when “01” => y <= a1; when “10” => y <= a2; when others => y <= a3; end case; end process; End rtl; Case 문
26
Loop 문 순차 처리문이며 반복 처리문 Loop For-loop While-loop 순차처리문; End loop;
For 루프변수 in 변수범위 loop While-loop While 조건 loop Loop 문
Similar presentations