VHDL의 동작적 표현방식

Download Report

Transcript VHDL의 동작적 표현방식

ASIC의 개요

ASIC(Application Specific Integrated Circuit)

특정 용도 주문형 집적회로

사용자가 요구하는 특정 기능을 갖추도록 설계, 제작된 IC

넓은 의미 : Memory와 일반 표준 논리 IC를 제외한 각
시스템 별 전용 IC


좁은 의미 : Standard Cell, Gate Array, PLD
특징

특정 용도 집적 회로

주문형 시스템
ASIC의 분류
완전 주문형(Full Custom) IC

완전 주문형 IC



특정 고객의 명세나 규격에 맞추어 제조되는 특별 주문의 IC
개발 기간이 길고 개발 비용도 많이 소요됨
다량 생산의 경우라야 하며, 수십만개 이상의 주문 생산에
적합
반 주문형(Semi Custom) IC

반주문형 IC



표준화된 설계를 일부에 사용하는 주문형 IC
완전 주문형 IC에 비해 개발 기간이 짧고 개발 비용이 적음
Gate Array / Standard Cell
 Gate Array : TR이 공통으로 배열되어 있어 고객이 원하
는 사양에 따라 배선만을 주문 설계
 Standard Cell : 사전에 설계되어 있는 기능 블록 등을
조합하여 주문형 IC를 제조
<Standard Cell>
PLD

PLD(Programmable Logic Device)




칩으로 설계되어 판매되는 프로그램 가능한 소자
개발 기간의 개념이 없음 -> 빠르게 회로 구현 가능
적은 비용과 최단기간 프로토타입 제작 / 기능 검증 가능
장점/단점


장점
 즉시 프로그램하여 사용 가능
 적은 비용으로 소량의 ASIC 제작 가능
 오류 발생시 재프로그램 가능
단점
 개별 단가가 큼
 한정된 gate 수
SPLD

SPLD(Simple PLD)

모든 논리 함수는 곱항(AND)의 합(OR)으로 표현될 수 있
음을 기본 개념으로 하는 소자
 예: F = AB + AB
A
A
B
B
F


PLA(Programmable Logic Array)
 Programmable AND/OR
PAL(Programmable Array Logic)
 Programmable AND
CPLD

CPLD(Complex PLD)


입력 수가 커짐에 따라 프로그래밍되는 평면 증가로 개발
단일 칩에 여러 개의 SPLD 블록을 포함
 SPLD 내부 및 블록 간의 연결을 프로그래밍하여 실현
 다수의 입력으로 복잡한 형태의 조합 논리 회로 구현시
적합
FPGA

FPGA(Field Programmable Gate Array)



FF이 많은 순차 회로 구현에 적합
다수의 논리 블록(LC)을 가지고 연결됨
LC 연결을 프로그래밍하는 방법
 안티퓨즈 방식
 고전압을 사용하여 필요한 곳을 연결시킴
 한번만 사용 가능
 SRAM 방식
 프로그램 정보를 SRAM에 저장해 두는 방석
 여러 번 사용 가능
ASIC 설계 방식의 비교
ASIC 설계 흐름도
VHDL

VHDL(Very High Speed Integrated Circuit Hardware
Description Language)

등장배경

이전의 하드웨어 설계에서는 주로 레이아웃 편집기 (layout
editor)나 스키메틱 편집기(schematic editor)를 이용해 작은
블록을 설계하고 이것을 이용해 큰 블록을 설계하는 상향식 설계
(bottom-up)

설계해야 할 회로의 규모가 커지고 복잡도가 증가함에 따라 이
러한 방법은 한계에 도달

알고리즘이나 기능 레벨에서 설계가 가능하도록 하는 HDL이 출현,
하향식(top-down)설계 방식
VHDL의 기본 설계

Entity와 Architecture Body로 구성

기본설계 2단계


1단계 : entity 선언

하드웨어 외부 입출력 Interface를 정의

하드웨어 블록의 이름과 입출력 Port를 선언
2단계 : architecture body 표현

하드웨어 내부를 표현

내부회로의 연결, 동작 또는 구조 등을 표현
VHDL의 기본 설계

Entity 선언

하드웨어 블록 정의 : entity 이름 선언

외부와의 인터페이스 규정 : 외부와 연결되는 입출력 정의



외부 입출력 신호원인 signal 선언
입출력 방향(mode) 지정
자료형(data type) 지정
Ex) 2 input AND Gate의 entity 선언

a
b
y
entity and2 is
port(a, b : in
y : out
end and2;
bit ;
bit );
signal mode data type
VHDL의 기본 설계

Ex) 2 input 2 output의 entity 선언
in
a
b
out
c
inout
buffer
architecture
entity sample is
port ( a : in
b : inout
c : out
d : buffer
bit ;
bit ;
bit ;
bit);
end sample;
mode
type
d
VHDL의 기본 설계

Data types




bit - signal의 개수가 1개
bit_vector - signal의 개수가 여러 개
byte
ex) b : in bit_vector(0 to 7)


ex) b : in bit_vector(7 downto 0)


8개의 signal b(0), b(1),…..,b(7) 정의
b(7), b(6), ….., b(0) 정의
IEEE 1164 표준



bit -> std_logic
bit_vector -> std_logic_vector
Ex) std_logic, std_logic_vector 사용시
library ieee;
use ieee.std_logic_1164.all; 을 사용
VHDL의 기본 설계

a
b
Architecture Body

entity의 하드웨어 내부회로 연결 동작 표현

하나의 entity에 하나 이상의 architecture body 존재 가능

Ex) 2 input AND gate의 architecture body
y
architecture behavioral of and2 is
begin
y <= a and b;
end behavioral ;
VHDL의 기본 설계

동작적 표현 방식

데이터 흐름 모델링(data flow modeling)

회로의 여러 신호들의 논리적 연산을 기술하는 방식
 회로도를 그리는 것과 유사
 회로의 전체 연결 상태를 알아야 표현할 수 있는 방식
 병행 처리문에서 주로 사용, 즉, 문장의 순서와 무관하게
동시에 수행
Ex) 논리곱 연산기

architecture brhavioral of and2 is
begin
result <= a and b ;
end behavioral ;
VHDL의 기본 설계

동작적 모델링(behavioral modeling)





회로가 어떻게 동작하는지를 기술해 주는 방식
데이터 흐름 모델링보다 효율적임
VHDL로 설계시 주로 이용되는 방식
형태적으로는 process 명령어가 사용됨
Ex) 논리곱 연산기
architecture brhavioral of and2 is
begin
process(a, b)
begin
if a = ‘0’ and b=‘0’ then result <= ‘0’ ;
elsif a = ‘0’ and b=‘1’ then result <= ‘0’ ;
elsif a = ‘1’ and b=‘0’ then result <= ‘0’ ;
else result <= ‘1’ ;
end process ;
end behavioral ;
반가산기

반가산기(Half Adder)


2개의 input(A, B), 2개의 output(S, C)
진리표 및 논리 회로도
반가산기

반가산기의 VHDL 모델링
library IEEE ;
use IEEE.STD_LOGIC_1164.ALL ;
use IEEE.STD_LOGIC_ARITH.ALL ;
use IEEE.STD_LOGIC_UNSIGNED.ALL ;
entity ha is
Port ( a : in std_logic ;
b : in std_logic ;
s : out std_logic ;
c : out std_logic ) ;
end ha
architecture brhavioral of ha is
begin
s <= a xor b ;
c <= a and b ; 1’ ;
end behavioral ;
반가산기
반가산기 Simulation 파형
반가산기 Pin 번호
입
력
출
력
신호 이름
키트 이름
핀 번호
신호 이름
키트 이름
핀 번호
a
MTP_SW1
p102
c
LED0
p2
b
MTP_SW2
p101
s
LED1
p3
 반가산기 동작
- 스위치는 눌렀을 경우 ‘0’이 되고 누르지 않았을 경우 ‘1’이 된다.
- 출력 LED는 그 값이 ‘1’이 되었을 때 불이 켜진다.
전가산기

전가산기(Full Adder)


3개의 input(A, B, Cin), 2개의 output(S, Cout)
진리표 및 논리 회로도
전가산기

전가산기의 VHDL 모델링
library IEEE ;
use IEEE.STD_LOGIC_1164.ALL ;
use IEEE.STD_LOGIC_ARITH.ALL ;
use IEEE.STD_LOGIC_UNSIGNED.ALL ;
entity full_adder is
Port ( a : in std_logic ;
b : in std_logic ;
cin : in std_logic ;
s : out std_logic ;
cout : out std_logic ) ;
end full_adder
전가산기
전가산기 - simulation 파형
전가산기 Pin 번호
입
력
출
력
신호 이름
키트 이름
핀 번호
신호 이름
키트 이름
핀 번호
a
MTP_SW1
p102
cout
LED0
p2
b
MTP_SW2
p101
s
LED1
p3
cin
MTP_SW3
p100
architecture brhavioral of full_adder is
Begin
process(a, b, cin)
begin
if a=‘0’ and b=‘0’ and cin=‘0’ then s <= ‘0’; cout <=‘0’;
elsif a=‘0’ and b=‘0’ and cin=‘1’ then s <= ‘1’; cout <=‘0’;
elsif a=‘0’ and b=‘1’ and cin=‘0’ then s <= ‘1’; cout <=‘0’;
elsif a=‘0’ and b=‘1’ and cin=‘1’ then s <= ‘0’; cout <=‘1’;
elsif a=‘1’ and b=‘0’ and cin=‘0’ then s <= ‘1’; cout <=‘0’;
elsif a=‘1’ and b=‘0’ and cin=‘1’ then s <= ‘0’; cout <=‘1’;
elsif a=‘1’ and b=‘1’ and cin=‘0’ then s <= ‘0’; cout <=‘1’;
else s <= ‘1’; cout <=‘1’;
end process ;
end behavioral ;