ASIC의 개요 ASIC(Application Specific Integrated Circuit) 특정 용도 주문형 집적회로 넓은 의미 : Memory와 일반 표준 논리 IC를 제외한 각 시스템 별 전용 IC 좁은 의미 : Standard Cell, Gate Array, PLD 특징 특정 용도 집적 회로 주문형 시스템
ASIC의 분류
완전 주문형(Full Custom) IC 완전 주문형 IC 특정 고객의 명세나 규격에 맞추어 제조되는 특별 주문의 IC 개발 기간이 길고 개발 비용도 많이 소요됨 다량 생산의 경우라야 하며, 수십만개 이상의 주문 생산에 적합
반 주문형(Semi Custom) 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) F 모든 논리 함수는 곱항(AND)의 합(OR)으로 표현될 수 있음을 기본 개념으로 하는 소자 예: F = AB + AB PLA(Programmable Logic Array) Programmable AND/OR PAL(Programmable Array Logic) Programmable AND A 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 선언 entity and2 is port(a, b : in bit ; y : out bit ); end and2; signal mode data type
VHDL의 기본 설계 Ex) 2 input 2 output의 entity 선언 entity sample is port ( a : in bit ; b : inout bit ; c : out bit ; d : buffer bit); end sample; mode type
VHDL의 기본 설계 Data types 8개의 signal b(0), b(1),…..,b(7) 정의 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 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) 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
전가산기 전가산기 Pin 번호 전가산기 - simulation 파형 입 력 출 력 신호 이름 키트 이름 핀 번호 a 입 력 출 력 신호 이름 키트 이름 핀 번호 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 ;