vhdl 기본문법

Mokwon Univ 2008. 8. 16. 17:13
VHDL 배워보기를 시작하며
   이 곳에서 설명 할 내용은 VHDL의 기술에대한 방법에 대해서 간단한 설명을 합니다.  따라서 VHDL을 처음 접하는 분들에게 이해를 돕고자 마련된 곳 입니다. 혹 부족한 설명이나 잘 못된 설명이 있다면 Q/A란을 통하여 질문해 주시면 성의 껏 답변 드리겠습니다.
 
 
1. VHDL의 기본
   VHDL을 시작하기 전에 기본적인 내용을 설명합니다.
 
1-1. Identifier(식별어)
   VHDL의 식별어(identofier)란 설계자가 임의로 정의할 수 있는 문자열로 entity 이름(회로이름), architecture body, port, 함수 등의 이름을 정의하기 위하여 사용되며, 규칙은 다음과 같다.
  • VHDL에서는 대소문자 구분을 하지 않습니다.
  • 두개의 대쉬("--")는 주석으로 처리합니다.
  • 식별어는 알파벳(a~z,A~Z), 숫자(0~9), 밑줄("_")를 사용할 수 있으며, 첫 문자는 반드시 알파벳 문자로 시작하여야 된다.
  • 하나의 식별어내에 2개의 밑줄("_")을 사용 또는 식별어 마직막 문자로 밑줄을사용하지 않는것이 좋다.
  • 식별어 내에 공백(Spaces)은 허용되지 않는다.
  • Object 이름은 받드시 하나만 있어야 한다. 예) signal 이름 A 와 bus 이름 A(7 downto 0)를 같은 이름으로 사용될 수 없다.
1-2. Reserved Keywords(지정어)
   VHDL의 지정어(Reserved keywords)란 VHDL 구문을 위해서 미리 지정된 문자열이며, 사용자가 식별어로 사용할 수 없다.
다음은 지정어 리스트 이다.
  abs downto library postponed subtype
  access else linkage procedure then
  after elsif literal process to
  alias end loop pure transport
  all entity map range type
  and exit mod record unaffected
  architecture file nand register units
  array for new reject until
  assert function next rem use
  attribute generate nor report variable
  begin generic not return wait
  block group null rol when
  body guarded of ror while
  buffer if on select with
  bus impure open severity xnor
  case in or shared xor
  component inertial others signal  
  configuration inout out sla  
  constant is package sra  
  disconnect label port srl  
 
 
 
 
 
 
 
2. Design Unit
    VHDL을 이용하여 하드웨어를 설계하기 위한 기본 구성으로 여러 개의 Design Unit가 있다. 그 중 최소의 하드웨어를 기술하기 위해서는 entity declaration 과 architecture body 두 개의 Design Unit가 있어야 한다.
그 이외에 package( package declaration, package body), configuration
declaration 등의 Design Unit가 있다.
 
2-1. Entity Declaration
    Entity 선언은 회로의 이름과 함께 인터페이스(in/out port)등 설계할 회 로와 외부와의 연결을 설정하는 부분이다.
library ieee;
use ieee.std_logic_1164.all;
entity D_FF is                         -- 회로이름이 D_FF
    port ( data, clk : in std_logic;   -- 입력으로 data , clk 사용
           q : out  std_logic);         -- 출력으로 q 사용
end D_FF;                        
         -- 회로의 외부연결끝
 
 
 
 
 
 
 
 
* 진한 글씨는 점유어(Reserved kwywords)이고 그 이외의 것은 식별어(identifier) 이다.
 
2-1-1. Port
  입,출력 port의 이름(data, clk, q)과 port signal의 방향(in, out)
그리고 data type(std_logic)을 기술한다.
 
2-1-2. 기타
  Entity Unit에는 위에서 설명한 port 이 외에
Design parameter를 회로에 전달하기 위한 generic 이 올 수 있으며,
선언문을 통하여 여러 architecture body에서 선언할 것을 한 번만
선언해서 사용할 수 있도록 할 수 있다.
 
2-2. Architecture Body
   Architecture Body는 회로의 동작 및 내부 연결상태를 기술하는 부분이다.
library ieee;
use ieee.std_logic_1164.all;
entity D_FF is
    port ( data, clk : in std_logic;
           q : out  std_logic);
end D_FF;

architecture behav of D_FF is
begin
process (clk)                                          -- sensitivity list --> clk
begin
     if (clk'event and clk= '1') then          -- 클럭의 Rising event
         q <= data;                                       -- 회로의 동작과 연결
     end if;                                               -- if문의 끝
end process;                                         -- process의 끝
end behav;                                              -- architecture의 끝.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
* D_FF는 entity 이름(회로이름)이며, behav는 architecture 이름으로  사용자가 정의하는 식별어 이다.

2-2-1. process 문
  architecture body내의 회로의 동작을 기술한 문장으로 순차적으로 수행된다. 그러나 process문이 여러개인 경우 process 문들은 기술된 문장 순서대로 동작되는 것이 아니라 동시수행(Concurrent)된다.
sensitivity list는 signal의 이름이며, 이 값이 변해야만 process
문이 수행된다.
 
 
 
 
3.  Design Library
    Library는 이미 VHDL을 이용하여 설계된 것으로 반복설계를 피하고 공유할 목적으로 만들어진 저장장소이다.
ex)
liibrary IEEE                       -- IEEE 라는 Library 저장장소의
use IEEE.std_logic_1164.all;  -- std_logic.1164라는 Package 사용
 
 
 
 
 
 
4. Data Type & Object
    VHDL에서 signal(신호), variable(변수), constant(상수)등을 Object라 하며, 모든 Object는 data type(데이타형)을 가진다.
 signal  net_a : std_logic;      -- signal net_a 는 9가지 표준논리상태를
    A       B           C               갖는 표준 Data Type 이다.
    A : Object의 종류가 신호(signal)임.
    B : Object의 이름은 net_a
    C : Object의 data type은 bit 형태의 표준 data type
 
 
 
 
 
 
 
 
 
VHDL에서는 여러형태의 Data Type을 가지고 있으며, 사용자로 하여금 임의의 data type도 정의하여 사용할 수 있다. 여기에선 IEEE 1164 표준 Data Type만 설명하고자 한다.
 
 
 
 
4-1-1.  IEEE 1164 표준 Data Type
   특정 시스템에 종속되지않는 표준화된 논리상태로서 9개의 상태값을 가지고 있다.
다음은 표준화된 9개의 논리값과 이를 사용하기 위한 Package 형태이다
 Package 형태
표준화된 9개의 논리값.
liibrary IEEE                      
use IEEE.std_logic_1164.all
'U'   -- Uninitialized
'X'   -- Strong Unknown
'0'   -- Strong  Logic 0
'1'   -- Strong  Logic 1
'Z'   -- High Impedance
'W'  -- Weak Unknown
'L'   -- Weak Logic 0
'H'  -- Weak Logic 1
'-'   -- Don't Care
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Posted by 용학도리
,