Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
자료형은 다음과 같은 종류들이 있다.
VHDL은 미리 정의된 자료형(predefined data type)들을 STANDARD 패키지에 가지고 있으므로 선언하지 않아도 된다. 즉, bit, std_logic, integer 등과 같이 자주 쓰이는 자료형들은VHDL에서 미리 선언되어 있으므로 사용자가따로 선언할 필요가 없다.그러나 그 밖의 자료형들은 자료형 선언을 해주어야 한다.
6.자료형(data type)과 객체(object)
59
◦ IEEE 1164 표준 자료형(IEEE 1164 standard type)
◦ 정수형(integer type)
◦ 부울형(Boolean type)
◦ 열거형(enumeration type)
1) 자료형 (data type)
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
6.자료형(data type)과 객체(object)
60
- 자료형의 부분 집합에 해당하는 부자료형(subtype)들은 부자료형 선언(subtype declaration)을 할 수 있다.
- 자료형 선언(data type declaration)
◎ 형식TYPE 자료형_이름 IS 자료형_서술;
◦ 사용 예TYPE Bit_4 IS ('0', '1', 'X', 'Z'); -- enumeration typeSIGNAL A : Bit_4;TYPE Digit IS INTEGER RANGE 0 TO 7; -- user defined typeSIGNAL S : Digit;
~A <= 'Z';S <= 4;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
6.자료형(data type)과 객체(object)
61
• 자료형 선언은 지정어 “TYPE”을 사용한다. TYPE 뒤에 정의하고자 하는 자료형의 ‘자료형_이름’을 쓰고 IS 뒤에 ‘자료형_서술’을 한다. ‘자료형_서술’은 열거형(enumeration type)과 사용자 정의형(user defined type) 형태가 있다.
• 열거 형태로 선언된 자료형의 객체는 ‘자료형_서술’에서 열거한 것 가운데 하나의 값을가져야 한다. 즉 Bit_4 자료형으로 선언된 신호 A는 ‘0’, ‘1’, ‘X’, ‘Z’ 중에서 하나의 값을갖는다. 예에서는 A가 ‘Z’ 값을 갖는다.
• 사용자 정의 형태인 경우 ‘자료형_서술’은 자료형의 기본 자료형(base type)과 표현 범위를 나타낸다.
• 자료형의 기본 자료형은 bit, std_logic, integer 등 VHDL에서 미리 선언된 것들을 사용할수 있고 사용자가 정의한 자료형을 사용한다.
• 표현 범위는 지정어 “RANGE ~ TO~”를 사용한다. 표현 범위를 선언한 자료형의 객체는 표현 범위 중에서 하나의 값을 가진다.
• 자료형 Digit는 기본 자료형으로 정수형(integer)이고 표현 범위는 0에서 7까지이다. 따라서 Digit 자료형으로 선언된 객체인 신호 S는 정수형 0에서 7까지의 하나의 값인 4를갖는다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
부자료형 선언
6.자료형(data type)과 객체(object)
62
◎ 형식
SUBTYPE 부자료형_이름 IS 기본자료형 표현 범위;
◦ 사용 예
TYPE Any_number IS INTEGER RANGE 0 TO 1023;
SUBTYPE Part_number IS Any_number RANGE 0 TO 15;
자료형은 값들의 집합을 정의하나 부자료형의 값들의 부분집합을 정의한다. 부자료형 선언은 지정어 “SUBTYPE”를 사용한다. SUBTYPE 뒤에 정의하고자 하는 부자료형의 ‘부자료형_이름’을 쓰고 IS 뒤에 기본자료형(base type)과 표현범위를 표현한다.
부자료형 BYTE는 기본 자료형이 STD_LOGIC_VECTOR 이고 8비트이다. 부자료형 WORD는 기본 자료형이 STD_LOGIC_VECTO이고 16비트이다.
자료형 Any_number는 기본 자료형이 정수형이고 0에서 1023까지의표현 범위를 가진다. 부자료형 Part_number는 기본 자료형이Any_number 이고 0에서15까지의 표현 범위를 가진다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
1. IEEE 1164 표준 자료형
6.자료형(data type)과 객체(object)
63
BIT/BIT_VECTOR
이들 자료형은 VHDL 표준 IEEE 1076과 IEEE 1164에 미리 정해져 있다.
그러므로 라이브러리는 필요하지 않다.
BIT와 BIT_VECTOR 자료형에는 논리 0인 ‘0’과 논리 1인 ‘1’만 있다. 따라서 이들 자료형들을 가지고는 고임피던스(high impedance) 상태 또는 2가지 상태 값이 충돌하여 어떤 상태인지 알 수 없는상태를 표현할 수가 없다. 다음에 나오는STD_LOGIC과 STD_LOGIC_VECTOR 자료형이 더많은 유통성을 가지고 있어서 이들 자료형들은 현재 잘 사용하지 않는다.
- BIT 객체 : ‘0’ 또는 ‘1’- BIT_VECTOR 객체 : BIT 객체의 배열
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
1. IEEE 1164 표준 자료형
6.자료형(data type)과 객체(object)
64
BIT_VECTOR를 사용하는 신호의 크기는 지정어 “TO” 또는“DOWNTO”를 사용한다.
“TO”는 오름차순을 표현 : 최상위 비트(MSB) TO 최하위 비트(LSB)
만일 C <= “1100”; 이면 C(0) = 1, C(1) = 1, C(2) = 0, C(3) = 0이 된다.
“DOWNTO”는 내림차순을 표현 : 최상위 비트(MSB) DOWNTO 최하위 비트 (LSB)
만일 Byte <= “1100”; 이면 Byte(3) = 1, Byte(2) = 1, Byte(1) = 0, Byte(0) = 0
이 된다.
◦ 사용 예
signal x1 : BIT;signal C : BIT_VECTOR(0 TO 3);signal Byte : BIT_VECTOR(3 DOWNTO 0);
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
1. IEEE 1164 표준 자료형
6.자료형(data type)과 객체(object)
65
STD_LOGIC/STD_LOGIC_VECTOR
이들 자료형은 BIT 자료형보다 더 많은 유통성을 가지는 자료형이다. 이들 자료형은 라이브러리 IEEE에 있는 패키지std_logic_1164에 등록되어 있다. 따라서 이 패키지를 사용하도록 선언하지 않으면 std_logic과 std_logic_vector 자료형은 사용할 수 없다.
- STD_LOGIC 객체 : ‘0’, ‘1’, ‘Z’, ‘-’, ‘L’, ‘H’, ‘U’, ‘X’, ‘W’
- STD_LOGIC_VECTOR 객체 : STD_LOGIC 객체의배열
- 사용되는 라이브러리와 패키지 : library IEEE;use
IEEE.std_logic_1164.all;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
6.자료형(data type)과 객체(object)
66
‘0’은 strong 0을 의미하는데 전원 VSS(0V)에 연결되므로 확실한 논리 0을 나타낸다. ‘1’은 strong 1을 의미하는데 전원 VDD(5V)에 연결되므로 확실한 논리 1을나타낸다.
출력에 풀업(pull-up) 또는 풀다운(pull-down)을 사용하는 경우가 있는데, 이 경우에 전원이 풀업 또는 풀다운에 연결되지 않으면 출력은 불안전한 상태가 되므로 weak로 표현되는 ‘L’과 ‘H’를 사용한다. ‘L’은 weak 0을 의미하는데 풀다운(pull-down)에 연결되는 논리 0을 나타낸다. 그리고 ‘H’은 weak 1을 의미하는데풀업(pull-up)에 연결되는 논리 1을 나타낸다.
‘Z’는 출력신호가 논리 1 또는 논리 0을 나타내지 않는 회로와 끊어진 상태인 고임피던스(high impedance)를 나타낸다.
0 : strong 01 : strong 1Z : high impedance- : don't careL : weak 0H : weak 1U : uninitializedX : unknownW : weak unknown
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
6.자료형(data type)과 객체(object)
67
‘-’ 은 무시항으로서 진리표에서는 ‘×’으로 표시하며 2진 값의 0 또는 1이 될 수 있다는 것을 의미한다.
‘U’는 초기화되지 않은 상태(uninitialized)를 나타낸다. 보통 IC에 전원을 공급하면 출력들이 어떤 상태 값을 갖게 될지 알 수 없다. 즉 정상적인 상태 값이 될 때까지 어느 정도의 시간이 걸리는 그 동안의 값을 나타낼 때 사용된다.
‘X’는 출력을 공통(common)으로 사용하는 경우에 두 가지 형태인 논리 0과 논리 1이 충돌하여 어떤 값을 갖게 될 지 모르는 상태(unknown)를 나타낸다.
‘W’는 풀업 또는 풀다운을 사용하는 출력들이 공통으로 사용되는 경우에 사용되는 weak unknown이다.
◦ 사용 예LIBRARY ieee; USE ieee.std_logic_1164.all;type Bit_4 is ('0', '1', 'X', 'Z');signal A : Bit_4;signal x1 : STD_LOGIC;signal C : STD_LOGIC_VECTOR(1 TO 4)signal Byte : STD_LOGIC_VECTOR(7 DOWNTO 0)
~A <= 'Z';x1 <= '0';C <= "0101";Byte <= "10101010";
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
1. IEEE 1164 표준 자료형
6.자료형(data type)과 객체(object)
68
SIGNED/UNSIGNED
이들 자료형은 산술연산시 사용하며 사용은STD_LOGIC과 동일하다.
- SIGNED 자료형 : 부호 있는 수(signed number) 연산, 음수는 2의 보수로 표시
- UNSIGNED 자료형 : 부호 없는 수(unsigned number) 연산
- 사용되는 라이브러리 : library ieee;
- 사용되는 패키지 : use ieee.std_logic_arith.all;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
1. IEEE 1164 표준 자료형
6.자료형(data type)과 객체(object)
69
-왼쪽에서는 신호 A와 B를 SIGNED 자료형으로 정의하였다. 따라서 A=-7 이고 B=1이 된다.
-오른쪽에서는 A와 B를 UNSIGNED 자료형으로 정의하였다. 따라서 A=9 이고 B=1이 된다.
-사용 예에서 A > B 수행결과는 왼쪽은 C가 ‘0’이 출력되고, 오른쪽은 ‘1’이 출력된다.
◦ 사용 예
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all;
signal A : SIGNED(3 downto 0):="1001";signal B : SIGNED(3 downto 0):="0001";signal C : STD_LOGIC;
~IF A > B THEN C <=
'1';ELSE C <=
'0';
signal A : UNSIGNED(3 downto 0) := "1001";signal B : UNSIGNED(3 downto 0) := "0001";signal C : STD_LOGIC;
~IF A > B THEN C <= '1';ELSE C <= '0';
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
2. 정수형(integer type)
6.자료형(data type)과 객체(object)
70
정수형은 산술 연산자(arithmetic operator)를 가지고 산술 연산에 사용되며, 정수형 신호는 2진수를나타낸다. 정수형은 다음과 같이 미리 정의된 32비트 표현 범위를 갖고있다.
-231 ~ +(231 - 1) = -2,147,483,648 ~ +2,147,483,647
별도로 정의하지 않으면 정수형은 32비트 크기를갖는 연산 회로를 구현하게 된다. 따라서, 필요한표현 범위만 구현하도록, 정수형은 지정어 “RANGE ~ TO ~ ”를 사용하여 미리 정의된 것보다 작은 크기의 비트 표현을 구현한다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
2. 정수형(integer type)
6.자료형(data type)과 객체(object)
71
변수(variable) COUNT는 0에서 3까지의 정수값을 갖는다. 이때 count 값이 3이 되면 자동적으로 0이 된다.
신호(signal) S는 0에서 3까지의 정수값을 갖는다. 이때 count 값이 3이 되면 자동적으로 0이 되지 않는
다.신호 X는 자료형이 정수로 정의되고 32비트 표현 범위를갖는다. 신호 D는 0에서 15까지의 정수값을 갖는 4비트 신호가 되고 정수값은 2진수 형태이므로 0000 ~ 1111이 된다. 따라서 논리회로가 합성될 때 정수형 신호 D의 비트맵은 그림과 같다.
◦ 사용 예 variable COUNT : INTEGER RANGE 0 TO 3;signal S : INTEGER RANGE 0 TO 19;signal X : INTEGER ; -- 32 bit numbersignal D : INTEGER RANGE 0 TO 15; -- 4 bit number
D(3) D(2)
D(1)
D(0)
정수형 신호 D의 비트맵
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
3. 부울형(boolean type)
6.자료형(data type)과 객체(object)
72
부울형은 참(TRUE)과 거짓(FALSE) 값을 가진다
부울 형태로 선언된 자료형의 객체는 두가지 중 하나의값을 갖는데, BOOLEAN 자료형으로 선언된 신호 flag는false인 경우에는 ‘0’이 되고 true인 경우에는 ‘1’이 된다.
TRUE : 1FALSE : 0
◦ 사용 예TYPE BOOLEAN IS (false, true);signal flag : BOOLEAN;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
4. 열거형(enumeration type)
6.자료형(data type)과 객체(object)
73
열거형의 신호는 사용자가 명시한 신호의 가능한 값들 중에서 하나를 가진다.
형식 및 사용 예
◎ 형식 TYPE 열거형_이름 IS (이름 [, 이름]);
◦ 사용 예 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');
~signal X : Bit_3;signal Y : State_type;
~X <= 'Z';Y <= stateC;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
4. 열거형(enumeration type)
6.자료형(data type)과 객체(object)
74
열거형은 괄호 안에 지정어 또는 문자 자료형을 가진다. 지정어는 대문자와 소문자 구별이 없으나 문자 자료형의 경우는 다른 글자가 된다. 즉 ‘Z’와 ‘z’는 다르다. 위의 사용 예를 패키지에 선언한 뒤에 다음과 같이 객체를 선언하기 위해서 사용할 수 있다.
열거형으로 선언된 객체는 자료형 정의에서 열거한 것 가운데 하나의값을 가져야 한다. 즉 신호 X는 Bit_3으로 선언되었으므로 ‘0’, ‘1’, ‘Z’중에서 하나를 값으로 가져야 한다. 신호 Y는 State_type으로 선언되었으므로 stateA, stateB, stateC중에 하나를 값으로 가져야 한다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
4. 열거형(enumeration type)
6.자료형(data type)과 객체(object)
75
미리 정의된 열거형
Boolean은 TRUE와 FALSE로 미리 정의되어 있고 Bit는 ‘0’와 ‘1’로 정의되어 있다. Character는 VHDL 코드 작성에 필요한 대부분의 문자를 제공하고 있다.
TYPE Boolean IS (FALSE, TRUE); -- predefinedTYPE Bit IS ('0', '1'); -- predefinedTYPE Character IS ( -- predefined
NUL, SOH, STX, ETX, EOT, ENQ,… -- …은 생략을 의미함
‘ ’, ‘!’, ……
'a', 'b', 'c', 'd', 'e', ……
);
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
VHDL 코드로 표현되는 객체는 상수(constant), 신호(signal), 변수(variable) 등의 3가지 종류를 가진다.
객체를 사용하기 전에 반드시 객체 선언을 해야 하며, 객체를 선언 후에는 객체에 값을 대입하여 사용할 수 있다.
객체(object)는 4가지 모드(in, out, inout, buffer)를 가진다
6.자료형(data type)과 객체(object)
76
2) 객체(object)
◦ 신호(signal) : 일정한 시간 지연(delay) 이후에 값이 변함→ 외적변수
신호에 값을 대입하기 위해서는 <= 를 사용한다.
◦ 상수(constant) : 값이 변경되지 않음
상수에 값을 대입하기 위해서는 := 를 사용한다.
◦ 변수(variable) : 값의 계산과 동시에 변함→ 내적변수
변수에 값을 대입하기 위해서는 := 를 사용한다..
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
1. 신호(signal)
6.자료형(data type)과 객체(object)
77
신호는 논리회로에서 논리신호(logic signal) 또는 선(wire)을 나타내며 각컴포넌트간의 연결에 사용된다. VHDL에서 신호들이 정의되는 곳은 다음과 같은 3가지 장소이다.
엔티티 선언에서의 신호 선언은 포트문의 신호들을 말한다. 아키텍쳐와패키지에서는 단순히 신호 선언을 의미한다. 따라서 신호는 신호 선언(signal declaration)과 포트신호 선언(port declaration)에서 사용한다.
신호로 선언된 신호_이름에 값을 대입하기 위해서는 <=를 사용한다. <=은 오른쪽에서 왼쪽으로 일정한 지연이 된 값이 대입된다.
엔티티 선언(entity declaration)
아키텍쳐(architecture)의 선언부
패키지(package)의 선언부
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
1. 신호(signal)
6.자료형(data type)과 객체(object)
78
형식 및 사용 예
신호에 값을 할당하기 위해서는 <=를 사용한다. <=는 오른쪽에서 왼쪽으로 일정한 지연이 된 값이 대입된다.
◎ 형식 □ 신호 선언
signal 신호_이름 {, 신호_이름} : 자료형[신호_종류] [:= 초기값]; □ 포트신호 선언
port(포트신호_이름, ... : [모드] 자료형[:= 초기값]); ◦ 사용 예
□ 신호 선언 signal A, B, Y : std_logic; signal S : Integer;
Y <= A or B ; -- 신호 Y에 A or B의 값을 대입 S <= 1; -- 신호 S에 1을 대입
□ 포트신호 선언
port(A, B : in std_logic; Y, S : out std_logic);
Y <= A or B; -- 포트신호 Y에 A or B의 값을 대입 S <= '1'; -- 포트신호 S에 ‘1’을 대입
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
1. 신호(signal)
6.자료형(data type)과 객체(object)
79
신호의 초기화신호의 초기화에서는 다음과 같이 := 를 사용한다.
ALTERA Quartus II에서는 신호의 초기화를 제공하지 않는다. 따라서 다음과 같이 수정하여 사용한다.
SIGNAL ONE_state : std_logic := '1';
SIGNAL ONE_state : std_logic;
.
.
.
ONE_state <= '1';
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
1. 신호(signal)
6.자료형(data type)과 객체(object)
80
예시)
aorb
Y
ONE_state
A
B
C
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY div_logic IS
PORT(A, B, C : IN std_logic; -- 포트신호 선언 : A, B, C, Y 신호선언선언
Y : OUT std_logic);END div_logic;ARCHITECTURE dataflow OF div_logic IS
SIGNAL aorb : std_logic; -- 아키텍쳐선언부 : aorb 신호 선언선언SIGNAL ONE_state : std_logic; -- 아키텍쳐 선언부 : ONE_state 신호
선언선언BEGIN
aorb <= A or B;ONE_state <= '1';Y <= aorb and C and ONE_state;
END dataflow;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
1. 신호(signal)
6.자료형(data type)과 객체(object)
81
포트신호로 입력신호 A, B, C 그리고 출력신호 Y를 선언한다. OR 게이트 출력과 AND 게이트의 한 입력을 연결하는 선을 aORb 신호 그리고 3입력 AND 게이트에서 포트신호가 선언되지 않은 선은ONE_state으로 설정하여 아키텍쳐 선언부(아키텍쳐 몸체 내의ARCHITECTURE와 BEGIN 사이)에 선언한다. ONE_state신호는 1 상태로 초기화한다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 1 / NOT 게이트 설계
6.자료형(data type)과 객체(object)
82
동작적 표현
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY inv IS
PORT(A : in std_logic;Y : out std_logic);
END inv;ARCHITECTURE behav OF inv ISBEGIN
PROCESSBEGIN
IF A = '0' THEN Y <= '1';ELSE Y <= '0';END IF;
END PROCESS;END behav;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 1 / NOT 게이트 설계
6.자료형(data type)과 객체(object)
83
자료흐름적 표현 1 자료흐름적 표현 2
library ieee;use ieee.std_logic_1164.all;ENTITY inv IS
PORT(A : in std_logic;Y : out std_logic);
END inv;ARCHITECTURE dataflow OF inv ISBEGIN
Y <= '1' WHEN A = '0' ELSE '0';END dataflow;
library ieee;use ieee.std_logic_1164.all;ENTITY inv IS
PORT(A : in std_logic;Y : out std_logic);
END inv;ARCHITECTURE dataflow OF inv ISBEGIN
Y <= not A;END dataflow;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 1 / NOT 게이트 설계
6.자료형(data type)과 객체(object)
84
타이밍 시뮬레이션 결과
입력 신호 A가 ‘0’인 경우에는 출력 Y가 ‘1’이 되고 그 외에는 ‘0’이 된다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 1 / NOT 게이트 설계
6.자료형(data type)과 객체(object)
85
HBE-COMBO II 트레이닝 키트에 프로그래밍 하기 위한 정보
입 력 출 력 블록도
핀 이름 핀 번호 입력 장치 핀 이름 핀 번호 출력 장치
A Y10 KeypadA Y AC7 LED8
트레이닝 키트의 초기 상태는 LED8의 불이 켜진 상태이다. A(KeypadA)을 누르면 LED8의 불이 꺼지고 A를 누르지 않으면 LED8이 켜진다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 2 / AND 게이트 설계
6.자료형(data type)과 객체(object)
86
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 2 / AND 게이트 설계
6.자료형(data type)과 객체(object)
87
2입력 AND 게이트(동작적 표현)
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 behav OF and_2 ISBEGIN
PROCESS(A, B)BEGIN
IF A = '1' and B = '1' THEN Y <= '1';
ELSE Y <= '0';
END IF;END PROCESS;
END behav;
3입력 AND 게이트(동작적 표현)
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY and_3 IS
PORT(A, B, C : in std_logic;Y : out std_logic);
END and_3;ARCHITECTURE behav OF and_3 ISBEGIN
PROCESS(A, B, C)BEGIN
IF A = '1' and B = '1' and C = '1' THEN Y <='1';
ELSE Y<= '0';
END IF;END PROCESS;END behav;
IF문은 AND 게이트의 기능을 나타내고 있다. 즉 모든 입력들이 ‘1’인 경우에는출력 Y가 ‘1’이 되고 그 이외에는 ‘0’이 된다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 2 / AND 게이트 설계
6.자료형(data type)과 객체(object)
88
WHEN-ELSE 문은 모든 입력들이 ‘1’인 경우에는 출력 Y가 ‘1’이 되고 그 이외에는 ‘0’이 AND 게이트 기능을 나타낸다.
2입력 AND 게이트(자료흐름적 표현 1) 3입력 AND 게이트(자료흐름적 표현 1)
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 ISBEGIN
Y <= '1' WHEN A = '1' and B = '1'ELSE ‘0';
END dataflow;
LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY and_3 IS
PORT(A, B, C : in std_logic;Y : out std_logic);
END and_3;ARCHITECTURE dataflow OF and_3 ISBEGIN
Y <= '1' WHEN A = '1' and B = '1' and C ='1'
ELSE '0';END dataflow;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 2 / AND 게이트 설계
6.자료형(data type)과 객체(object)
89
AND 연산은 ‘and’ 연산자를 사용한다.
2입력 AND 게이트(자료흐름적 표현 2) 3입력 AND 게이트(자료흐름적 표현 2)
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 ISBEGIN
Y <= A and B;END dataflow;
LIBRARY ieee;use ieee.std_logic_1164.all;ENTITY and_3 IS
PORT(A, B, C : in std_logic;Y : out std_logic);
END and_3;ARCHITECTURE dataflow OF and_3 ISBEGIN
Y <= A and B and C;END dataflow;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 2 / AND 게이트 설계
6.자료형(data type)과 객체(object)
90
타이밍 시뮬레이션 결과
2입력 AND 게이트의 시뮬레이션 결과는 A, B 입력신호 모두가 ‘1’인
경우에 출력 Y가 ‘1’이 되고 그 외에는 ‘0’이 된다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 2 / AND 게이트 설계
6.자료형(data type)과 객체(object)
91
3입력 AND 게이트는 A, B, C 를 동시에 누르면 동시에 LED8의 불이 켜진다.
입 력 출 력 블록도
핀 이름 핀 번호입력 장
치핀 이름
핀 번호출력 장
치
A Y10 KeypadA Y AC7 LED8
B W10 KeypadB
입 력 출 력 블록도
핀 이름 핀 번호 입력 장치 핀 이름 핀 번호출력 장
치
A Y10 KeypadA Y AC7 LED8
B W10 KeypadB
C AA9 KeypadC
HBE-COMBO II 트레이닝 키트에 프로그래밍 하기 위한 정보
2입력 AND 게이트는 A와 B를 동시에 누르면 동시에 LED8의 불이 켜진다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 3 / OR 게이트 설계
6.자료형(data type)과 객체(object)
92
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 3 / OR 게이트 설계
6.자료형(data type)과 객체(object)
93
2입력 OR 게이트(동작적 표현) 3입력 OR 게이트(동작적 표현)
LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY or_2 IS
PORT(A, B : in std_logic;Y : out std_logic);
END or_2;ARCHITECTURE behav OF or_2 ISBEGIN
PROCESS(A, B)BEGIN
IF A = '1' or B = '1' THEN Y<= '1';
ELSE Y<= '0';
END IF;END PROCESS;END behav;
LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY or_3 IS
PORT(A, B, C : in std_logic;Y : out std_logic);
END or_3;ARCHITECTURE behav OF or_3 ISBEGIN
PROCESS(A, B, C)BEGIN
IF A = '1' or B = '1' or C = '1' THEN Y<= '1';
ELSE Y<= '0';
END IF;END PROCESS;
END behav;
IF문은 OR 게이트의 기능을 나타내고 있다. 즉 입력들 중 어느 하나라도 ‘1’인 경우에는출력 Y가 ‘1’이 되고 모든 입력들이 모두 ‘0’인 경우 출력 Y가 ‘0’이 된다
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 3 / OR 게이트 설계
6.자료형(data type)과 객체(object)
94
WHEN-ELSE 문은 입력들 중 어느 하나라도 ‘1’인 경우에는 출력 Y가 ‘1’이 되고 모든입력들이 모두 ‘0’인 경우 출력 Y가 ‘1’이 되는 OR 게이트 기능을 한다.
2입력 OR 게이트(자료흐름적 표현 1) 3입력 OR 게이트(자료흐름적 표현 1)
LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY or_2 IS
PORT(A, B : in std_logic;Y : out std_logic);
END or_2;ARCHITECTURE dataflow OF or_2IS
BEGINY <= '1' WHEN A = '1' or B =
'1'ELSE '0';
END dataflow;
LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY or_3 IS
PORT(A, B, C : in std_logic;Y : out std_logic);
END or_3;ARCHITECTURE dataflow OF or_3 ISBEGIN
Y <= '1‘ WHEN A = '1' or B = '1' or C ='1'
ELSE '0';END dataflow;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 3 / OR 게이트 설계
6.자료형(data type)과 객체(object)
95
OR 연산은 ‘or’ 연산자를 사용한다.
2입력 OR 게이트(자료흐름적 표현 2) 3입력 OR 게이트(자료흐름적 표현 2)
LIBRARY ieee; USEieee.std_logic_1164.all;ENTITY or_2 IS
PORT(A, B : in std_logic;Y : out std_logic);
END or_2;ARCHITECTURE dataflow OF or_2ISBEGIN
Y <= A or B;END dataflow;
LIBRARY ieee; USEieee.std_logic_1164.all;ENTITY or_3 IS
PORT(A, B, C : in std_logic;Y : out std_logic);
END or_3;ARCHITECTURE dataflow OF or_3 ISBEGIN
Y <= A or B or C;END dataflow;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 3 / OR 게이트 설계
6.자료형(data type)과 객체(object)
96
타이밍 시뮬레이션 결과
2입력 OR 게이트의 시뮬레이션 결과는 A, B 입력 신호들 중 어느 하나가 ‘1’일 때 출력 Y가 ‘1’이 되고 모든 입력들이 ‘0’일 때 Y는 ‘0’이 된다. 생략된 3입력 OR 게이트의 시뮬레이션 결과는 A, B, C 입력 신호들 중어느 하나가 ‘1’일 때 출력 Y가 ‘1’이 되고 모든 입력들이 ‘0’일 때 Y는‘0’이 된다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 3 / OR 게이트 설계
6.자료형(data type)과 객체(object)
97
HBE-COMBO II 트레이닝 키트에 프로그래밍 하기 위한 정보
3입력 OR 게이트 : A(KeypadA) 또는 B(KeypadB) 또는 C(KeypadC)를 누르면LED8의 불이 켜진다.
입 력 출 력 블록도
핀 이름
핀 번호 입력 장치 핀 이름 핀 번호출력 장
치
A Y10 KeypadA Y AC7 LED8
B W10 KeypadB
입 력 출 력 블록도
핀 이름
핀 번호 입력 장치 핀 이름 핀 번호출력 장
치
A Y10 KeypadA Y AC7 LED8
B W10 KeypadB
C AA9 KeypadC
2입력 OR 게이트 : A(KeypadA) 또는 B(KeypadB)를 누르면 LED8의 불이 켜진다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 4 / NAND 게이트 설계
6.자료형(data type)과 객체(object)
98
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 4 / NAND 게이트 설계
6.자료형(data type)과 객체(object)
99
2입력 NAND 게이트(동작적 표현) 3입력 NAND 게이트(동작적 표현)
LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY nand_2 IS
PORT(A, B : IN std_logic;Y : OUT std_logic);
END nand_2;ARCHITECTURE behav OF nand_2 ISBEGIN
PROCESS(A, B)BEGIN
IF A = '1' and B = '1' THEN Y <='0';
ELSE Y <='1';
END IF;END PROCESS;
END behav;
LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY nand_3 IS
PORT(A, B, C : IN std_logic;Y : OUT std_logic);
END nand_3;ARCHITECTURE behav OF nand_3 ISBEGIN
PROCESS(A, B, C)BEGIN
IF A = '1' and B = '1' and C = '1' THEN Y<= '0';
ELSE Y<= '1';
END IF;END PROCESS;
END behav;
IF문은 NAND 게이트의 기능을 나타내고 있다. 즉 모든 입력들이 ‘1’인 경우에는 출력 Y가 ‘0’이 되고 그 이외에는 ‘1’이 된다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 4 / NAND 게이트 설계
6.자료형(data type)과 객체(object)
100
2입력 NAND 게이트(자료흐름적 표현1) 3입력 NAND 게이트(자료흐름적 표현1)
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY nand_2 IS
PORT(A, B : IN std_logic;Y : OUT std_logic);
END nand_2;ARCHITECTURE dataflow OF nand_2 ISBEGIN
Y <= '0' WHEN A = '1' and B = '1'ELSE '1';
END dataflow;
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY nand_3 IS
PORT(A, B, C : IN std_logic;Y : OUT std_logic);
END nand_3;ARCHITECTURE dataflow OF nand_3 ISBEGIN
Y <= '0' WHEN A = '1' and B = '1' and C = '1'ELSE '1';
END dataflow;
2입력 NAND 게이트(자료흐름적 표현2) 3입력 NAND 게이트(자료흐름적 표현2)
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY nand_2 IS
PORT(A, B : IN std_logic;Y : OUT std_logic);
END nand_2;ARCHITECTURE dataflow OF nand_2 ISBEGIN
Y <= not(A and B);END dataflow;
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY nand_3 IS
PORT(A, B, C : IN std_logic;Y : OUT std_logic);
END nand_3;ARCHITECTURE dataflow OF nand_3 ISBEGIN
Y <= not(A and B and C);END dataflow;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 4 / NAND 게이트 설계
6.자료형(data type)과 객체(object)
101
타이밍 시뮬레이션 결과
2입력 NAND 게이트의 시뮬레이션 결과는 A, B 두 입력 신호들이 모두 ‘1’일때출력 Y가 ‘0’이 되고 그 이외에서는 Y는 ‘1’이 된다. 생략된 3입력 NAND 게이트의 시뮬레이션 결과는 A, B, C 입력 신호들이 모두‘1’일 때 출력 Y가 ‘0’이 되고 그 이외에서는 Y는 ‘1’이 된다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 4 / NAND 게이트 설계
6.자료형(data type)과 객체(object)
102
HBE-COMBO II 트레이닝 키트에 프로그래밍 하기 위한 정보
2입력 NAND 게이트는 LED8의 불이 켜진 상태에서 A(Keypad1)와 B(Keypad2)를 동시에 누르면LED8의 불이 꺼진다.
3입력 NAND 게이트는 LED8의 불이 켜진 상태에서 A(Keypad1), B(Keypad2), C(Keypad3)를 동시에 누르면 LED8의 불이 꺼진다.
입 력 출 력 블록도
핀 이름 핀 번호 입력 장치 핀 이름 핀 번호 출력 장치
A Y10 KeypadA Y AC7 LED8
B W10 KeypadB
입 력 출 력 블록도
핀 이름 핀 번호 입력 장치 핀 이름 핀 번호 출력 장치
A Y10 KeypadA Y AC7 LED8
B W10 KeypadB
C AA9 KeypadC
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 5 / NOR 게이트 설계
6.자료형(data type)과 객체(object)
103
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 5 / NOR 게이트 설계
6.자료형(data type)과 객체(object)
104
2입력 NOR 게이트(동작적 표현) 3입력 NOR 게이트(동작적 표현3)
LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY nor_2 IS
PORT(A, B : IN std_logic;Y : OUT std_logic );
END nor_2;ARCHITECTURE behav OF nor_2 ISBEGIN
PROCESS(A, B)BEGIN
IF A = '1' or B = '1' THEN Y <='0';
ELSE Y<= '1 ';
END IF;END PROCESS;
END behav;
LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY nor_3 IS
PORT(A, B, C : IN std_logic;Y : OUT std_logic );
END nor_3;ARCHITECTURE behav OF nor_3 ISBEGIN
PROCESS(A, B, C)BEGIN
IF A = '1' or B = '1' or C = '1' THEN Y<= '0';
ELSE Y<= '1';
END IF;END PROCESS;
END behav;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 5 / NOR 게이트 설계
6.자료형(data type)과 객체(object)
105
2입력 NOR 게이트(자료흐름적 표현 1) 3입력 NOR 게이트(자료흐름적 표현 1)
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY nor_2 IS
PORT(A, B : IN std_logic;Y : OUT std_logic);
END nor_2;ARCHITECTURE dataflow OF nor_2 ISBEGIN
Y <= '0' WHEN A = '1' or B = '1'ELSE '1';
END dataflow;
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY nor_3 IS
PORT(A, B, C : IN std_logic;Y : OUT std_logic);
END nor_3;ARCHITECTURE dataflow OF nor_3 ISBEGIN
Y <= '0' WHEN A = '1' or B = '1' or C = '1'ELSE '1';
END dataflow;
2입력 NOR 게이트(자료흐름적 표현 2) 3입력 NOR 게이트(자료흐름적 표현 2)
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY nor_2 IS
PORT(A, B : IN std_logic;Y : OUT std_logic);
END nor_2;ARCHITECTURE dataflow OF nor_2 ISBEGIN
Y <= not(A or B);END dataflow;
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY nor_3 IS
PORT(A, B, C : IN std_logic;Y : OUT std_logic);
END nor_3;ARCHITECTURE dataflow OF nor_3 ISBEGIN
Y <= not(A or B or C) ;END dataflow;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 5 / NOR 게이트 설계
6.자료형(data type)과 객체(object)
106
타이밍 시뮬레이션 결과
2입력 NOR 게이트의 시뮬레이션 결과는 A, B 입력 신호들 중 어느 하나가 1일때출력 Y가 ‘0’이 되고 모든 입력들이 ‘0’일 때 Y는 ‘1’이 된다. 생략된 3입력 NOR 게이트의 시뮬레이션 결과는 A, B, C 입력 신호들 중 어느 하나가 1일 때 Y가 ‘0’이 되고모든 입력들이 ‘0’일 때 Y는 ‘1’이 된다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 5 / NOR 게이트 설계
6.자료형(data type)과 객체(object)
107
HBE-COMBO II 트레이닝 키트에 프로그래밍 하기 위한 정보
2입력 NOR 게이트는 LED8의 불이 켜진 상태에서 A(Keypad1) 또는 B(Keypad2)를 누르면 LED8의 불이 꺼진다.
3입력 NOR 게이트는 LED8의 불이 켜진 상태에서 A(Keypad1), 또는 B(Keypad2), 또는 C(Keypad3) 중어느 하나를 눌러도 LED8의 불이 꺼진다
입 력 출 력 블록도
핀 이름 핀 번호 입력 장치 핀 이름 핀 번호 출력 장치
A Y10 KeypadA Y AC7 LED8
B W10 KeypadB
입 력 출 력 블록도
핀 이름 핀 번호 입력 장치 핀 이름 핀 번호 출력 장치
A Y10 KeypadA Y AC7 LED8
B W10 KeypadB
C AA9 KeypadC
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 6 / XOR, XNOR 게이트 설계
6.자료형(data type)과 객체(object)
108
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 6 / XOR, XNOR 게이트 설계
6.자료형(data type)과 객체(object)
109
XOR 게이트(동작적 표현) XNOR 게이트(동작적 표현)
LIBRARY ieee; USEieee.std_logic_1164.all;ENTITY xor_2 IS
PORT(A, B : IN std_logic;Y : OUT std_logic);
END xor_2;ARCHITECTURE behav OF xor_2 ISBEGIN
PROCESS(A, B)BEGIN
IF (A = '0' and B = '1') or(A = '1' and B = '0') THEN Y <=
'1';ELSE Y <=
'0';END IF;
END PROCESS;END behav;
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY xnor_2 IS
PORT(A, B : IN std_logic;Y : OUT std_logic);
END xnor_2;ARCHITECTURE behav OF xnor_2 ISBEGIN
PROCESS(A, B)BEGIN
IF (A = '0' and B = '0') or(A = '1' and B = '1') THEN Y <= '1';
ELSE Y <='0';
END IF;END PROCESS;
END behav;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 6 / XOR, XNOR 게이트 설계
6.자료형(data type)과 객체(object)
110
XOR 게이트(자료흐름적 표현 1) XNOR 게이트(자료흐름적 표현 1)
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY xor_2 IS
PORT(A, B : IN std_logic;Y : OUT std_logic);
END xor_2;ARCHITECTURE dataflow OF xor_2 ISBEGIN
Y <= '0' WHEN A = B ELSE '1';END dataflow;
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY xnor_2 IS
PORT(A, B : IN std_logic;Y : OUT std_logic);
END xnor_2;ARCHITECTURE dataflow OF xnor_2 ISBEGIN
Y <= '1' WHEN A = B ELSE '0';END dataflow;
XOR 게이트(자료흐름적 표현 2) XNOR 게이트(자료흐름적 표현 2)
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY xor_2 IS
PORT(A, B : IN std_logic;Y : OUT std_logic);
END xor_2;ARCHITECTURE dataflow OF xor_2 ISBEGIN
Y <= A xor B;END dataflow;
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY xnor_2 IS
PORT(A, B : IN std_logic;Y : OUT std_logic);
END xnor_2;ARCHITECTURE dataflow OF xnor_2 ISBEGIN
Y <= A xnor B;END dataflow;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 6 / XOR, XNOR 게이트 설계
6.자료형(data type)과 객체(object)
111
타이밍 시뮬레이션 결과
입력 신호 A와 B가 서로 다른 경우에 출력 신호 Y는 ‘1’이 되고, 서로 같은 경우에는 Y는 ‘0’이 된다.
입력 신호 A와 B가 서로 같은 경우에 출력 신호 Y는 ‘1’이 되고, 서로 다른 경우에는 Y는 ‘0’이 된다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 6 / XOR, XNOR 게이트 설계
6.자료형(data type)과 객체(object)
112
HBE-COMBO II 트레이닝 키트에 프로그래밍 하기 위한 정보
XOR 게이트는 LED8의 불이 꺼진 상태에서 A(Keypad1) 또는 B(Keypad2)를 누르면 LED8의 불이 켜진다. 그러나 A와 B를 같이 누르면 LED8의 불이 꺼진다.
XNOR 게이트는 LED8의 불이 켜진 상태에서 A(Keypad1) 또는 B(Keypad2)를 각각 누르면 LED8의 불이꺼진다. 그러나 A와 B를 같이 누르면 LED8의 불이 켜진다.
입 력 출 력 블록도
핀 이름 핀 번호 입력 장치 핀 이름 핀 번호 출력 장치
A Y10 KeypadA Y AC7 LED8
B W10 KeypadB
입 력 출 력 블록도
핀 이름 핀 번호 입력 장치 핀 이름 핀 번호 출력 장치
A Y10 KeypadA Y AC7 LED8
B W10 KeypadB
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 7 / 버퍼 게이트 설계
6.자료형(data type)과 객체(object)
113
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 7 / 버퍼 게이트 설계
6.자료형(data type)과 객체(object)
114
동작적 표현
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY buf IS
PORT(A : IN std_logic;Y : OUT std_logic);
END buf;ARCHITECTURE behav OF buf ISBEGIN
PROCESSBEGIN
IF A = '0' THEN Y <= '0';ELSE Y <= '1';END IF;
END PROCESS;END behav;
IF문은 버퍼 게이트의 기능을 나타내고 있다. 즉 입력 A가 ‘0’인 경우에는 출력 Y가 ‘0’이 되고그 외에는 ‘1’이 된다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 7 / 버퍼 게이트 설계
6.자료형(data type)과 객체(object)
115
자료흐름적 표현 1에서 WHEN-ELSE 문은 입력 A가 ‘0’인 경우에는 출력 Y가 ‘0’이 되고, 그 외에는 ‘1’이되는 것을 나타낸다.
자료흐름적 표현 1 자료흐름적 표현 2
LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY buf IS
PORT(A : IN std_logic;Y : OUT std_logic);
END buf;ARCHITECTURE dataflow OF buf ISBEGIN
Y <= '0' WHEN A = '0 ELSE '1';END dataflow;
LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY buf IS
PORT(A : IN std_logic;Y : OUT std_logic);
END buf;ARCHITECTURE dataflow OF buf ISBEGIN
Y <= A;END dataflow;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 7 / 버퍼 게이트 설계
6.자료형(data type)과 객체(object)
116
타이밍 시뮬레이션 결과
입력 신호 A가 ‘1’인 경우 출력 Y는 ‘1’이 되고 A가 ‘0’인 경우에는 출력Y가 ‘0’이 된다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 7 / 버퍼 게이트 설계
6.자료형(data type)과 객체(object)
117
HBE-COMBO II 트레이닝 키트에 프로그래밍 하기 위한 정보
트레이닝 키트의 초기상태는 LED8 불이 꺼진 상태이다. A(KeypadA)을 누르면 LED8의 불이 켜지고 A를 누르지 않으면 LED8이 꺼진다.
입 력 출 력 블록도
핀 이름 핀 번호 입력 장치 핀 이름 핀 번호 출력 장치
A Y10 KeypadA Y AC7 LED8
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 8 / 3상태 버퍼 게이트 설계
6.자료형(data type)과 객체(object)
118
3상태 버퍼는 3가지 형태의 출력을 갖는다. 즉 0, 1 출력들과 고 임피던스(high impedance)를 나타내는 Z 출력이 존재한다.
S=0이면 3상태 버퍼는 입력 A와 같은 값을 Y로 출력한다. S=1이면 버퍼 출력은입력 값에 관계없이 고 임피던스가 되어 Y로 Z가 출력된다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 8 / 3상태 버퍼 게이트 설계
6.자료형(data type)과 객체(object)
119
동작적 표현
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY ts_buf IS
PORT(A, S : IN std_logic;Y : OUT std_logic);
END ts_buf;ARCHITECTURE behav OF ts_buf ISBEGIN
PROCESS(A, S)BEGIN
IF S = '0' THENIF A = '1' THEN Y <= '1';ELSE Y <= '0';END IF;
ELSE Y <= 'Z';END IF;
END PROCESS;END behav;
고임피던스(high impedance)를 나타내는 자료형은 반드시 대문자 ‘Z’로 표현해야 한다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 8 / 3상태 버퍼 게이트 설계
6.자료형(data type)과 객체(object)
120
WHEN-ELSE 문은 입력 S가 ‘0’인 경우에는 출력 Y에 입력 A 신호가 전달되고 그 외에는Y는 ‘Z’이 되는 것을 나타낸다.
자료흐름적 표현
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY ts_buf IS
PORT(A, S : IN std_logic;Y : OUT std_logic);
END ts_buf;ARCHITECTURE dataflow OF ts_buf IS
BEGINY <= A WHEN S = '0' ELSE 'Z';
END dataflow;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 8 / 3상태 버퍼 게이트 설계
6.자료형(data type)과 객체(object)
121
입력 신호 S가 ‘1’인 경우에는 입력 신호 A의 값에 관계없이 출력 신호 Y는 ‘Z’가 된다.
S=0이고 입력 신호 A가 ‘1(0)’인 경우 출력 신호 Y는 ‘1(0)’이 된다
타이밍 시뮬레이션 결과
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 8 / 3상태 버퍼 게이트 설계
6.자료형(data type)과 객체(object)
122
HBE-COMBO II 트레이닝 키트에 프로그래밍 하기 위한 정보
S(KeypadB)를 누르지 않은 상태에서 입력 A(KeypadA)를 누르면 LED8의 불이 켜지고, 입력 A를 누르지 않으면 꺼진다. S(KeypadB)를 누른 상태에서는 입력 A에 관계없이 출력은 고임피던스 상태가 된다. 고임피던스 상태는 개방인 상태가 되므로 LED8는 꺼지게 된다.
입 력 출 력 블록도
핀 이름 핀 번호 입력 장치 핀 이름 핀 번호 출력 장치
A Y10 KeypadA Y AC7 LED8
S W10 KeypadB
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 9 / 결합법칙을 이용한 4입력 AND 논리회로 설계
6.자료형(data type)과 객체(object)
123
결합법칙을 이용한 4입력 AND 논리회로 Y=ABCD
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 9 / 결합법칙을 이용한 4입력 AND 논리회로 설계
6.자료형(data type)과 객체(object)
124
그림 (a)의 구조적 표현 : 신호 사용
◦ 컴포넌트 : AND_2.vhd(자료흐름적 표현)
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 ISBEGIN
Y <= A and B;END dataflow;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 9 / 결합법칙을 이용한 4입력 AND 논리회로 설계
6.자료형(data type)과 객체(object)
125
그림(a)의 구조적 표현
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY and_4 IS
PORT(A, B, C, D : IN std_logic;Y : OUT std_logic);
END and_4;ARCHITECTURE structural OF and_4 IS
signal ab, cd : std_logic;component AND_2
port(A, B : in std_logic; Y : out std_logic);end component;BEGIN
ANDG1 : AND_2 port map(A, B, ab);ANDG2 : AND_2 port map(C, D, cd);ANDG3 : AND_2 port map(ab, cd, Y);
END structural;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 9 / 결합법칙을 이용한 4입력 AND 논리회로 설계
6.자료형(data type)과 객체(object)
126
그림(a)의 자료흐름적 표현
그림(a)의 자료흐름적 표현
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY and_4 IS
PORT(A, B, C, D : IN std_logic;Y : OUT std_logic);
END and_4;ARCHITECTURE dataflow OF and_4 ISBEGIN
Y <= '0' WHEN C = '0' or D = '0' ELSE'0' WHEN A = '0' or B = '0' ELSE'1';
END dataflow;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 9 / 결합법칙을 이용한 4입력 AND 논리회로 설계
6.자료형(data type)과 객체(object)
127
그림(b)의 동작적 표현
그림(b)의 동작적 표현
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY and_4 IS
PORT(A, B, C, D : IN std_logic;Y : OUT std_logic);
END and_4;ARCHITECTURE behav OF and_4 ISBEGIN
PROCESS(A, B, C, D)BEGIN
IF A= '1' and B='1' and C='1' and D='1' THEN Y <= '1';ELSE Y <= '0';END IF;
END PROCESS;END behav;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 9 / 결합법칙을 이용한 4입력 AND 논리회로 설계
6.자료형(data type)과 객체(object)
128
그림(c)의 자료흐름적 표현
그림(c)의 자료흐름적 표현
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY and_4 IS
PORT(A, B, C, D : IN std_logic;Y : OUT std_logic);
END and_4;ARCHITECTURE dataflow OF and_4 ISBEGIN
Y <= A and B and C and D;END dataflow;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 9 / 결합법칙을 이용한 4입력 AND 논리회로 설계
6.자료형(data type)과 객체(object)
129
타이밍 시뮬레이션 결과
모든 입력 신호들이 ‘1’인 경우에 출력 신호 Y는 ‘1’이 되고, 입력 신호들 중 어느 1개라도 ‘0’인 경우에는 출력 신호 Y는 ‘0’이 된다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 9 / 결합법칙을 이용한 4입력 AND 논리회로 설계
6.자료형(data type)과 객체(object)
130
HBE-COMBO II 트레이닝 키트에 프로그래밍 하기 위한 정보
입 력 출 력 블록도
핀 이름 핀 번호 입력 장치 핀 이름 핀 번호 출력 장치
A Y10 KeypadA Y AC7 LED8
B W10 KeypadB
C AA9 KeypadC
D V9 KeypadD
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 10 / 분배법칙을 이용한 논리회로 설계
6.자료형(data type)과 객체(object)
131
A
A
B
C
B
C
A
AB
AC
Y= AB+AC
B+C
Y=
A(B+C)=AB+AC
(a) (b)
분배법칙을 이용한 논리회로 Y = AB + AC
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 10 / 분배법칙을 이용한 논리회로 설계
6.자료형(data type)과 객체(object)
132
[자료흐름적 표현]
그림(a)의 자료흐름적 표현 1 그림(b)의 자료흐름적 표현 1
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY div_logic IS
PORT(A, B, C : IN std_logic;Y : OUT std_logic);
END div_logic;ARCHITECTURE dataflow OF div_logic ISBEGIN
Y <= '1' WHEN A = '1' and C = '1' ELSE'1' WHEN A = '1' and B = '1'
ELSE '0';END dataflow;
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY div_logic IS
PORT(A, B, C : IN std_logic;Y : OUT std_logic);
END div_logic;ARCHITECTURE dataflow OF div_logic ISBEGIN
Y <= '0' WHEN A = '0' ELSE'0' WHEN B = '0' and C = '0'
ELSE '1';END dataflow;
그림(a)의 자료흐름적 표현 2 그림(b)의 자료흐름적 표현 2
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY div_logic IS
PORT(A, B, C : IN std_logic;Y : OUT std_logic);
END div_logic;ARCHITECTURE dataflow OF div_logic ISBEGIN
Y <= (A and B) or (A and C);END dataflow;
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY div_logic IS
PORT(A, B, C : IN std_logic;Y : OUT std_logic);
END div_logic;ARCHITECTURE dataflow OF div_logic ISBEGIN
Y <= A and (B or C);END dataflow;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 10 / 분배법칙을 이용한 논리회로 설계
6.자료형(data type)과 객체(object)
133
[자료흐름적 표현]
그림(a)의 자료흐름적 표현 3 그림(b)의 자료흐름적 표현 3
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY div_logic IS
PORT(A, B, C : IN std_logic;Y : OUT std_logic);
END div_logic;ARCHITECTURE dataflow OF div_logic IS
SIGNAL aandb, aandc : std_logic;BEGIN
aandb <= A and B;aandc <= A and C;
Y <= aandb or aandc;END dataflow;
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY div_logic IS
PORT(A, B, C : IN std_logic;Y : OUT std_logic);
END div_logic;ARCHITECTURE dataflow OF div_logic IS
SIGNAL borc : std_logic;BEGIN
borc <= B or C;Y <= borc and A;
END dataflow;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 10 / 분배법칙을 이용한 논리회로 설계
6.자료형(data type)과 객체(object)
134
[구조적 표현]
컴포넌트 : and_2.vhd(동작적 표현)
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 behav OF and_2 ISBEGIN
PROCESS(A, B)BEGIN
IF A = '1' and B = '1' THEN Y <= '1';
ELSE Y <= '0';
END IF;END PROCESS;
END behav;
컴포넌트 : or_2.vhd(동작적 표현)
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY or_2 IS
PORT(A, B : in std_logic;Y : out std_logic);
END or_2;ARCHITECTURE behav OF or_2 ISBEGIN
PROCESS(A, B)BEGIN
IF A = '1' or B = '1' THEN Y <= '1';ELSE Y <= '0';END IF;
END PROCESS;END behav;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 10 / 분배법칙을 이용한 논리회로 설계
6.자료형(data type)과 객체(object)
135
[구조적 표현]
그림(a)의 구조적 표현그림 그림 (b)의 구조적 표현
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY div_logic IS
PORT(A, B, C : IN std_logic;Y : OUT std_logic);
END div_logic;ARCHITECTURE structure OF div_logic IS
signal ab, ac : std_logic;component AND_2
port(A, B : in std_logic; Y : out std_logic);end component;component OR_2
port(A, B : in std_logic; Y : out std_logic);end component;
BEGINANDG1 : AND_2 port map(A, B, ab);ANDG2 : AND_2 port map(A, C, ac);
ORG : OR_2 port map(ab, ac, Y);END structure;
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY div_logic IS
PORT(A, B, C : IN std_logic;Y : OUT std_logic);
END div_logic;ARCHITECTURE structure OF div_logic IS
signal borc : std_logic;component AND_2
port(A, B : in std_logic; Y : out std_logic);end component;component OR_2
port(A, B : in std_logic; Y : out std_logic);end component;
BEGINORG : OR_2 port map(B, C, borc);ANDG : AND_2 port map(borc, A, Y);
END structure;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 10 / 분배법칙을 이용한 논리회로 설계
6.자료형(data type)과 객체(object)
136
타이밍 시뮬레이션 결과
입력 신호 A와 B가 동시에 ‘1’인 경우 또는 A와 C가 동시에 ‘1’인 경우출력 신호 Y는 ‘1’이 된다. 그 이외는 출력 신호 Y는 ‘0’이 된다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 10 / 분배법칙을 이용한 논리회로 설계
6.자료형(data type)과 객체(object)
137
HBE-COMBO II 트레이닝 키트에 프로그래밍 하기 위한 정보
LED8의 불이 꺼진 상태에서 A(KeypadA)과 B(KeypadB) 또는 A(KeypadA)과 C(KeypadC)를 동시에 누르면LED8의 불이 켜진다.
입 력 출 력 블록도
핀 이름 핀 번호 입력 장치 핀 이름 핀 번호 출력 장치
A Y10 KeypadA Y AC7 LED8
B W10 KeypadB
C AA9 KeypadC
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 11 / 마스크 시스템(mask system) 설계
6.자료형(data type)과 객체(object)
139
선택신호(sel)가 0이면 홀수 비트들을 마스크하고 1이면 짝수 비트들을마스크 하는 마스크 시스템을 설계
data3
data2
data1
data0
sel
data_m3
data_m2
data_m1
data_m0
(a)개념도 (b)심볼 (c)논리회로
sel
data
mask0
mask1
data_m
=
=
=
=
=
0
d3d2d1d0
0 1 0 1
0 d2 0 d0
1
d3d2d1d0
1 0 1 0
d3 0 d1 0
and
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 11 / 마스크 시스템(mask system) 설계
6.자료형(data type)과 객체(object)
140
동작적 표현
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY mask_system IS
PORT(data : IN std_logic_vector(3 downto 0);sel : IN std_logic;
data_m : OUT std_logic_vector(3 downto 0));END mask_system;ARCHITECTURE behav OF mask_system IS
CONSTANT mask0 : std_logic_vector := "0101";CONSTANT mask1 : std_logic_vector := "1010";
BEGINPROCESS(data, sel)BEGIN
IF sel = '0' THEN data_m <= data and mask0;ELSE data_m <= data and mask1;END IF;
END PROCESS;END behav;
동작적 표현에서 상수 mask0와 mask1을 ARCHITURE와 BEGIN 사이의 아키텍쳐 선언부에선언하였다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 11 / 마스크 시스템(mask system) 설계
6.자료형(data type)과 객체(object)
142
타이밍 시뮬레이션 결과
sel=0이면 홀수비트들(data[1], data[3])이 마스크 되어 출력신호data_m[1]과 data_m[3]는 ‘0’이 된다. sel=1이면 짝수비트들(data0, data2)이 마스크 되어 출력신호 data_m[0]와 data_m[2]는 ‘0’이 된다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 11 / 마스크 시스템(mask system) 설계
6.자료형(data type)과 객체(object)
143
HBE-COMBO II 트레이닝 키트에 프로그래밍 하기 위한 정보
sel(KeypadE)을 누르지 않으면 data[2](KeypadB)와 data[0](keyoadD) 입력이 출력으로 전달되고 sel(KeypadE) 을 누르면 data[3](Keypad1)와data[1](keyoad3) 입력이 출력으로 전달된다.
입 력 출 력 블록도
핀 이름 핀 번호 입력 장치 핀 이름 핀 번호 출력 장치
data[3] Y10 KeypadA data_m[3] AF6 LED5
data[2] W10 KeypadB data_m[2] AE6 LED6
data[1] AA9 KeypadC data_m[1] AD7 LED7
data[0] V9 KeypadD data_m[0] AC7 LED8
sel AE9 KeypadE
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 11 / 마스크 시스템(mask system) 설계
6.자료형(data type)과 객체(object)
144
③ 변수(variable)
변수는 신호 사용이 불가능한 논리회로의 기능을 설명하기 위해서사용된다.
변수는 계산의 결과를 가질 때 사용되므로 계산의 결과를 임시 저장하는 역할을 한다.
변수는 프로세스 문 또는 부 프로그램 선언부에서 선언한다.
변수로 선언된 변수_이름에 값을 대입하기 위해서는 :=를
사용하며 오른쪽에서 왼쪽으로 값이 즉시 대입된다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 11 / 마스크 시스템(mask system) 설계
6.자료형(data type)과 객체(object)
145
형식 및 사용 예
변수로 선언된 변수_이름에 값을 할당하기 위해서는 :=를 사용한다.
:=은 오른쪽에서 왼쪽으로 값이 즉시 할당된다.
■ 형식variable 변수_이름 {, 변수_이름} : 자료형[:= 초기값];
◦ 사용 예 variable VALUE1 : Integer;variable VALUE2 : std_logic;variable ARRAY_VALUE : std_logic_vector(0 to 7);
~
VALUE1 := 15; -- 변수 VALUE1에 15를 대입
VALUE2 := '1'; -- 변수 VALUE2에 ‘1’을 대입
ARRAY_VALUE := “01001000”; -- 변수 ARRAY_VALUE에 “01001000” 을 대입
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 12 / 4입력 NAND 게이트 설계
6.자료형(data type)과 객체(object)
146
X(0)
X(1)
X(3)
X(2)
Y
tmp
tmp
tmp
tmp
변수 tmp는 프로세스 문의 변수 선언부인 PROCESS와 BEGIN 사이에서 선언되고 값을 할당하면 값이 즉시 할당된다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 12 / 4입력 NAND 게이트 설계
6.자료형(data type)과 객체(object)
147
동작적 표현 1 동작적 표현 2
LIBRARY IEEE; USE IEEE.std_logic_1164.all;ENTITY nand_4 IS
PORT(X : in std_logic_vector(3 downto 0);Y : out std_logic);
END nand_4;ARCHITECTURE behav OF nand_4 ISBEGIN
PROCESS(X)VARIABLE tmp : STD_LOGIC;
BEGINtmp := X(0);tmp := X(1) AND tmp;tmp := X(2) AND tmp;tmp := X(3) AND tmp;Y <= not tmp;
END PROCESS;END behav;
LIBRARY IEEE; USE IEEE.std_logic_1164.all;ENTITY nand_4 IS
PORT(X : in std_logic_vector(3 downto 0);Y : out std_logic);
END nand_4;ARCHITECTURE behav OF nand_4 ISBEGIN
PROCESS(X)VARIABLE tmp : STD_LOGIC;
BEGINtmp := X(0);ANDX : FOR i IN 1 TO 3 LOOP
tmp := X(i) AND tmp;END LOOP ANDX;Y <= not tmp;
END PROCESS;END behav;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 12 / 4입력 NAND 게이트 설계
6.자료형(data type)과 객체(object)
148
타이밍 시뮬레이션 결과
입력 신호가 F(1111)일 때만 출력 Y는 0이 되고 나머지 상태에서는 1이 된다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 12 / 4입력 NAND 게이트 설계
6.자료형(data type)과 객체(object)
149
HBE-COMBO II 트레이닝 키트에 프로그래밍 하기 위한 정보
입 력 출 력 블록도
핀 이름 핀 번호 입력 장치 핀 이름 핀 번호 출력 장치
X[3] Y10 KeypadA Y AC7 LED8
X[2] W10 KeypadB
X[1] AA9 KeypadC
X[0] V9 KeypadD
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 12 / 4입력 NAND 게이트 설계
6.자료형(data type)과 객체(object)
150
3)속성(attribute)
• 속성(attribute)이란 자료형에 대한 동작이나 상태 표현을 위한 특성이다.
• 객체는 어떤 순간에 단 하나의 값만 갖지만 여러 가지의 속성을 가질 수 있다.
• 형식
• 속성_이름에는 low, high, left, right, pos, val, succ, pred, leftof, rightof, active, last_active, event, last_event, last_value, delayed, quit, stable, transaction등 여러 가지가 있다. 여기서는 논리회로설계에서 많이 사용되는 event 속성만 설명하기로 한다.
신호_이름'속성_이름
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 12 / 4입력 NAND 게이트 설계
6.자료형(data type)과 객체(object)
151
• event 속성
• 논리회로 설계에서 클록 신호를 나타낼 때 클록의 상승 에지(rising edge) 또는 하강 에지(falling edge)에서 동작 즉, 클록 신호의 에지 상태에 따라 동작하는 경우에 event 속성을 사용할 수 있다.
◎ 형식CLK'EVENT -- CLK 클록에 event가 발생하면참값
◦ 사용 예CLK'EVENT and CLK = '1' -- CLK 클록이상승에지(rising edge)인지를확인
CLK'EVENT and CLK = '0' -- CLK 클록이하강에지(falling edge)인지를확인
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 13 / JK 플립플롭 설계
6.자료형(data type)과 객체(object)
152
J K Q(t+1)
0 0 Q
0 1 0
1 0 1
1 1 Q´
Q(t+1)=JQ’+K’Q
J=K=‘0’일 때, 출력은 변하지 않고 현재상태를 유지한다. J=‘1’이고 K=‘0’일 때 출력은 1로 세트된다.
K=‘1’이고 J=‘0’일 때 출력은 0으로 세트된다.
J=K=‘1’인 조건은 출력을 보수로 토글시킨다.즉, Q(t)=‘0’이면 Q(t+1)=‘1’이고, Q(t)=‘1’이면 Q(t+1)=‘0’이 된다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 13 / JK 플립플롭 설계
6.자료형(data type)과 객체(object)
153
동작적 표현
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY jk_ff IS
PORT(J, K, CL : IN std_logic;Q : BUFFER std_logic);
END jk_ff;ARCHITECTURE behav OF jk_ff ISBEGIN
PROCESS(J, K, CL)BEGIN
IF CL'EVENT and CL = '1' THENIF J = '1' and K = '0' THEN Q <= '1';ELSIF J = '0' and K = '1' THEN Q <= '0';ELSIF J = '1' and K = '1' THEN Q <= not Q;END IF;
END IF;END PROCESS;
END behav;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 13 / JK 플립플롭 설계
6.자료형(data type)과 객체(object)
154
타이밍 시뮬레이션 결과
입력 신호 J와 K와 입력 신호 CL의 상승 에지에 동기되어 출력 신호값이 변한다.J=K=0에서 Q는 현재상태를 유지한다.J=0이고 K=1에서는 Q는 리세트(‘0’ 상태)가 되고, J=1이고 K=0에서는 Q는 세트(‘1’ 상태)된다. J=K=1에서는 Q는 토글되어 현재상태와 반대 상태로 바뀐다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 13 / JK 플립플롭 설계
6.자료형(data type)과 객체(object)
155
HBE-COMBO II 트레이닝 키트에 프로그래밍 하기 위한 정보
LED8의 불이 꺼진 상태에서 J(KeypadA)을 누르고 CL(KeypadC)을 누르면 LED1의 불이 켜지고, K(KeypadB) 를누르고 CL을 누르면 LED8의 불이 꺼지며 J와 K를 동시에 누르고 CL을 누르면 LED8은 그 이전의 상태와 반대가 된다.
입 력 출 력 블록도
핀 이름 핀 번호 입력 장치 핀 이름 핀 번호 출력 장치
J Y10 KeypadA Q AC7 LED8
K W10 KeypadB
CL AA9 KeypadC
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 14 / T 플립플롭 설계
6.자료형(data type)과 객체(object)
156
T Q(t+1)
0 Q
1 Q´
Q(t+1) = TQ’ + T’Q
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 14 / T 플립플롭 설계
6.자료형(data type)과 객체(object)
157
동작적 표현
LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY t_ff IS
PORT(T, CL : IN std_logic;Q : BUFFER std_logic);
END t_ff;ARCHITECTURE behav OF t_ff ISBEGIN
PROCESS(T, CL)BEGIN
IF CL'EVENT and CL = '1' THENIF T = '1' THEN Q <= not Q;
END IF;END IF;
END PROCESS;END behav;
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 14 / T 플립플롭 설계
6.자료형(data type)과 객체(object)
158
타이밍 시뮬레이션 결과
입력 신호 T는 입력 신호 CL의 상승 에지에 동기되어 출력 신호값이 변한다. T=0에서 Q는 현재상태를 유지한다. T=1에서는 Q는 토글되어 현재상태와 반대 상태로 바뀐다.
ALTERA Quartus II Web Edition 8.0sp1의 VHDLVHDL 표현
실습 14 / T 플립플롭 설계
6.자료형(data type)과 객체(object)
159
HBE-COMBO II 트레이닝 키트에 프로그래밍 하기 위한 정보
T(KeypadA)를 누른 상태에서 CL(KeypadB)를 눌렀다 떼면 LED8은 이전 상태와 반대로 된다.
입 력 출 력 블록도
핀 이름 핀 번호 입력 장치 핀 이름 핀 번호 출력 장치
T Y10 KeypadA Q AC7 LED8
CL W10 KeypadB