26
ASIC 의 의의 ASIC(Application Specific Integrated Ci rcuit) 특특 특특 특특특 특특특특 특특특특 특특특특 특특 특특특 특특특특 특특 , 특특특 IC 특특 특특 : Memory 특 특특 특특 특특 IC 특 특특특 특 특특특 특 특특 IC 특특 특특 : Standard Cell, Gate Array, PLD 특특 특특 특특 특특 특특 특특특 특특특

ASIC 의 개요

Embed Size (px)

DESCRIPTION

ASIC 의 개요. ASIC(Application Specific Integrated Circuit) 특정 용도 주문형 집적회로 사용자가 요구하는 특정 기능을 갖추도록 설계 , 제작된 IC 넓은 의미 : Memory 와 일반 표준 논리 IC 를 제외한 각 시스템 별 전용 IC 좁은 의미 : Standard Cell, Gate Array, PLD 특징 특정 용도 집적 회로 주문형 시스템. ASIC 의 분류. 완전 주문형 (Full Custom) IC. - PowerPoint PPT Presentation

Citation preview

Page 1: ASIC 의 개요

ASIC 의 개요 ASIC(Application Specific Integrated Circuit)

특정 용도 주문형 집적회로 사용자가 요구하는 특정 기능을 갖추도록 설계 , 제작된 IC

넓은 의미 : Memory 와 일반 표준 논리 IC 를 제외한 각

시스템 별 전용 IC 좁은 의미 : Standard Cell, Gate Array, PLD

특징 특정 용도 집적 회로 주문형 시스템

Page 2: ASIC 의 개요

ASIC 의 분류

Page 3: ASIC 의 개요

완전 주문형 (Full Custom) IC 완전 주문형 IC

특정 고객의 명세나 규격에 맞추어 제조되는 특별 주문의 IC 개발 기간이 길고 개발 비용도 많이 소요됨 다량 생산의 경우라야 하며 , 수십만개 이상의 주문 생산에

적합

Page 4: ASIC 의 개요

반 주문형 (Semi Custom) IC 반주문형 IC

표준화된 설계를 일부에 사용하는 주문형 IC 완전 주문형 IC 에 비해 개발 기간이 짧고 개발 비용이 적음 Gate Array / Standard Cell

Gate Array : TR 이 공통으로 배열되어 있어 고객이 원하 는 사양에 따라 배선만을 주문 설계 Standard Cell : 사전에 설계되어 있는 기능 블록 등을 조합하여 주문형 IC 를 제조

<Standard Cell>

Page 5: ASIC 의 개요

PLD PLD(Programmable Logic Device)

칩으로 설계되어 판매되는 프로그램 가능한 소자 개발 기간의 개념이 없음 -> 빠르게 회로 구현 가능 적은 비용과 최단기간 프로토타입 제작 / 기능 검증 가능

장점 / 단점 장점

즉시 프로그램하여 사용 가능 적은 비용으로 소량의 ASIC 제작 가능 오류 발생시 재프로그램 가능

단점 개별 단가가 큼 한정된 gate 수

Page 6: ASIC 의 개요

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

Page 7: ASIC 의 개요

CPLD CPLD(Complex PLD)

입력 수가 커짐에 따라 프로그래밍되는 평면 증가로 개발 단일 칩에 여러 개의 SPLD 블록을 포함

SPLD 내부 및 블록 간의 연결을 프로그래밍하여 실현 다수의 입력으로 복잡한 형태의 조합 논리 회로 구현시

적합

Page 8: ASIC 의 개요

FPGA FPGA(Field Programmable Gate Array)

FF 이 많은 순차 회로 구현에 적합 다수의 논리 블록 (LC) 을 가지고 연결됨 LC 연결을 프로그래밍하는 방법

안티퓨즈 방식 고전압을 사용하여 필요한 곳을 연결시킴 한번만 사용 가능

SRAM 방식 프로그램 정보를 SRAM 에 저장해 두는 방석 여러 번 사용 가능

Page 9: ASIC 의 개요
Page 10: ASIC 의 개요

ASIC 설계 방식의 비교

Page 11: ASIC 의 개요

ASIC 설계 흐름도

Page 12: ASIC 의 개요

VHDL

VHDL(Very High Speed Integrated Circuit Hardware Description Language)

등장배경 이전의 하드웨어 설계에서는 주로 레이아웃 편집기 (layout

editor) 나 스키메틱 편집기 (schematic editor) 를 이용해 작은

블록을 설계하고 이것을 이용해 큰 블록을 설계하는 상향식 설계 (bottom-up)

설계해야 할 회로의 규모가 커지고 복잡도가 증가함에 따라 이러한 방법은 한계에 도달

알고리즘이나 기능 레벨에서 설계가 가능하도록 하는 HDL 이 출현 , 하향식 (top-down) 설계 방식

Page 13: ASIC 의 개요

VHDL 의 기본 설계 Entity 와 Architecture Body 로 구성 기본설계 2 단계

1 단계 : entity 선언 하드웨어 외부 입출력 Interface 를 정의 하드웨어 블록의 이름과 입출력 Port 를 선언

2 단계 : architecture body 표현 하드웨어 내부를 표현 내부회로의 연결 , 동작 또는 구조 등을 표현

Page 14: ASIC 의 개요

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

Page 15: ASIC 의 개요

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 선언

Page 16: ASIC 의 개요

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; 을 사용

Page 17: ASIC 의 개요

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 ;

Page 18: ASIC 의 개요

VHDL 의 기본 설계 동작적 표현 방식

데이터 흐름 모델링 (data flow modeling) 회로의 여러 신호들의 논리적 연산을 기술하는 방식 회로도를 그리는 것과 유사 회로의 전체 연결 상태를 알아야 표현할 수 있는 방식 병행 처리문에서 주로 사용 , 즉 , 문장의 순서와

무관하게 동시에 수행 Ex) 논리곱 연산기

architecture brhavioral of and2 isbegin result <= a and b ;end behavioral ;

Page 19: ASIC 의 개요

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 ;

Page 20: ASIC 의 개요

반가산기 반가산기 (Half Adder)

2 개의 input(A, B), 2 개의 output(S, C) 진리표 및 논리 회로도

Page 21: ASIC 의 개요

반가산기 반가산기의 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 ;

Page 22: ASIC 의 개요

반가산기 반가산기 Simulation 파형

입 력 출 력신호 이름 키트 이름 핀 번호 신호 이름 키트 이름 핀 번호

aMTP_SW

1p102 c LED0 p2

bMTP_SW

2p101 s LED1 p3

반가산기 Pin 번호

반가산기 동작

- 스위치는 눌렀을 경우 ‘ 0’ 이 되고 누르지 않았을 경우 ‘ 1’ 이 된다 .

- 출력 LED 는 그 값이 ‘ 1’ 이 되었을 때 불이 켜진다 .

Page 23: ASIC 의 개요

전가산기 전가산기 (Full Adder)

3 개의 input(A, B, Cin), 2 개의 output(S, Cout) 진리표 및 논리 회로도

Page 24: ASIC 의 개요

전가산기 전가산기의 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

Page 25: ASIC 의 개요

전가산기전가산기 - simulation 파형

입 력 출 력신호 이름 키트 이름 핀 번호 신호 이름 키트 이름 핀 번호

a MTP_SW1 p102 cout LED0 p2

b MTP_SW2 p101 s LED1 p3

cin MTP_SW3 p100      

전가산기 Pin 번호

Page 26: ASIC 의 개요

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 ;