티스토리 뷰

VHDL

[VHDL] Signal, Variable, Constant

그냥이 2010. 7. 3. 22:10


1. signal

 signal은 VHDL 합성시에 선(wire)으로 구현되며, 각 부품(component)의 연결에 사용되는 외적 변수이다. 객체에 값을 대입하기 위해서는 대입기호 '<='를 사용하고, '<='의 오른쪽에서 왼쪽으로 대입된다.

그리고 대입기호 '<='는 값이 즉시 대입되는 것이 아니라 VHDL문에서 필요한 어떤 시점에서 대입된다. 예를 들면 임의의 process문 내에 대입기호 '<='를 사용하였다면, 그 시점에서 값이 바로 대입되지 않고, end process를 만나야만 대입이 완료되어 값이 확정된다. signal의 초기화에서는 값을 즉시 대입하여야 하는데, 이 경우 '<='를 사용하지 않고 ':='를 사용한다.

signal로 선언하는 방법과 port로 선언하는 다음의 2가지 방법이 있다. signal의 선언위치를 알아보면 port signal인 경우 entity내에 port로 선언하는 경우가 있으며, 그 외 signal의 선언은 architecture와 begin 사이에 선언한다.

 

* signal로 선언

  선언방식 : signal signal_이름 : 자료형 [ := 초기값 ]; -- 초기값은 선택적
    ex)  signal a, b, : std_logic;     -- a, b를 signal로 선언
               a <= '1';            -- signal a에 '1'를 대입
               a <= b;             -- signal a에 b를 대입
         signal count : std_logic_vector(3 downto 0) := "1100";
         -- signal count(3), count(2), count(1), count(0) 로 구성된 4비트 버스로 선언하고 초기값 대입


2. variable 

variable은 process나 부프로그램(function과 procedure)에서만 사용되며, variable이 지니는 값도 process나 부프로그램 내에서만 유효한 내적 변수이다. variable은 signal과 같이 VHDL 합성시에 선으로 구현되는 것이 아니며, 중간 연산단계에 주로 이용된다.

variable에서 사용하는 대입기호 ':='의 뜻은 즉시라는 의미를 갖는다.

선언방식 : variable temp1, temp2 : std_logic;

ex)  temp1 := '1';
      temp2 := a or b;    -- a, b는 signal
      k <= temp1;        -- temp1은 variable, k는 signal

 

주의 : process내에서 variable은 값이 즉시 대입되어 연산의 중간결과가 보관되긴 하지만 process를 빠져 나오면 그 값을 잊어버리게 된다. 따라서 최종 variable의 값이 보존되기 위해서는 process를 빠져 나오기 전에 signal에 variable의 최종 값을 대입시켜야 한다. variable의 선언은 process와 begin 사이에 위치한다.


3. constant 
 

constant는 초기에 선언한 상수의 값을 유지하는데 사용하며, VHDL의 문장 작성에 도움을 주어 쉽게 수정하거나 확장하는데 주로 이용된다.

constant의 대입기호는 ':='를 사용하고,  초기값은 즉시 대입되며, 한 번 대입된 값은 바꿀 수 없다.

 선언방식 : constant delay : integer := 5ns; 

           constant size : integer := 512;


'VHDL' 카테고리의 다른 글

4bit Carry Lookahead Adder (CLA)  (0) 2010.07.03
VHDL이란 무엇인가?  (0) 2010.06.22
VHDL 세미나를 위해서 만들었던 자료  (0) 2010.06.22
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함