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
PLA(Programmable Logic Array) Programmable AND/OR
PAL(Programmable Array Logic) Programmable AND
A A B B
F
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
by
entity and2 isport(a, b : in bit ; y : out bit );
end and2;
signal mode data type
VHDL 의 기본 설계
entity sample is port ( a : in bit ; b : inout bit ; c : out bit ;
d : buffer bit);end sample;
mode type
architecture
in
inouta
b
out c
dbuffer
Ex) 2 input 2 output 의 entity 선언
VHDL 의 기본 설계 Data types
bit - signal 의 개수가 1 개 bit_vector - signal 의 개수가 여러 개 byte ex) b : in bit_vector(0 to 7)
8 개의 signal b(0), b(1),…..,b(7) 정의 ex) b : in bit_vector(7 downto 0)
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 의 기본 설계 Architecture Body
entity 의 하드웨어 내부회로 연결 동작 표현 하나의 entity 에 하나 이상의 architecture body 존재 가능 Ex) 2 input AND gate 의 architecture body
ab y
architecture behavioral of and2 is begin
y <= a and b; end behavioral ;
VHDL 의 기본 설계 동작적 표현 방식
데이터 흐름 모델링 (data flow modeling) 회로의 여러 신호들의 논리적 연산을 기술하는 방식 회로도를 그리는 것과 유사 회로의 전체 연결 상태를 알아야 표현할 수 있는 방식 병행 처리문에서 주로 사용 , 즉 , 문장의 순서와
무관하게 동시에 수행 Ex) 논리곱 연산기
architecture brhavioral of and2 isbegin result <= a and b ;end behavioral ;
VHDL 의 기본 설계 동작적 모델링 (behavioral modeling)
회로가 어떻게 동작하는지를 기술해 주는 방식 데이터 흐름 모델링보다 효율적임 VHDL 로 설계시 주로 이용되는 방식 형태적으로는 process 명령어가 사용됨 Ex) 논리곱 연산기
architecture brhavioral of and2 isbegin 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 haarchitecture brhavioral of ha isbegin s <= a xor b ; c <= a and b ; 1’ ; end behavioral ;
반가산기 반가산기 Simulation 파형
입 력 출 력신호 이름 키트 이름 핀 번호 신호 이름 키트 이름 핀 번호
aMTP_SW
1p102 c LED0 p2
bMTP_SW
2p101 s LED1 p3
반가산기 Pin 번호
반가산기 동작
- 스위치는 눌렀을 경우 ‘ 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 파형
입 력 출 력신호 이름 키트 이름 핀 번호 신호 이름 키트 이름 핀 번호
a MTP_SW1 p102 cout LED0 p2
b MTP_SW2 p101 s LED1 p3
cin MTP_SW3 p100
전가산기 Pin 번호
architecture brhavioral of full_adder isBegin 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 ;