1 / 26

ASIC 의 개요

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

Download Presentation

ASIC 의 개요

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. ASIC의 분류

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

  4. 반 주문형(Semi Custom) IC • 반주문형 IC • 표준화된 설계를 일부에 사용하는 주문형 IC • 완전 주문형 IC에 비해 개발 기간이 짧고 개발 비용이 적음 • Gate Array / Standard Cell • Gate Array : TR이 공통으로 배열되어 있어 고객이 원하 는 사양에 따라 배선만을 주문 설계 • Standard Cell : 사전에 설계되어 있는 기능 블록 등을 조합하여 주문형 IC를 제조 <Standard Cell>

  5. PLD • PLD(Programmable Logic Device) • 칩으로 설계되어 판매되는 프로그램 가능한 소자 • 개발 기간의 개념이 없음 -> 빠르게 회로 구현 가능 • 적은 비용과 최단기간 프로토타입 제작 / 기능 검증 가능 • 장점/단점 • 장점 • 즉시 프로그램하여 사용 가능 • 적은 비용으로 소량의 ASIC 제작 가능 • 오류 발생시 재프로그램 가능 • 단점 • 개별 단가가 큼 • 한정된 gate 수

  6. B A A B F SPLD • SPLD(Simple PLD) • 모든 논리 함수는 곱항(AND)의 합(OR)으로 표현될 수 있음을 기본 개념으로 하는 소자 • 예: F = AB + AB • PLA(Programmable Logic Array) • Programmable AND/OR • PAL(Programmable Array Logic) • Programmable AND

  7. CPLD • CPLD(Complex PLD) • 입력 수가 커짐에 따라 프로그래밍되는 평면 증가로 개발 • 단일 칩에 여러 개의 SPLD 블록을 포함 • SPLD 내부 및 블록 간의 연결을 프로그래밍하여 실현 • 다수의 입력으로 복잡한 형태의 조합 논리 회로 구현시 적합

  8. FPGA • FPGA(Field Programmable Gate Array) • FF이 많은 순차 회로 구현에 적합 • 다수의 논리 블록(LC)을 가지고 연결됨 • LC 연결을 프로그래밍하는 방법 • 안티퓨즈 방식 • 고전압을 사용하여 필요한 곳을 연결시킴 • 한번만 사용 가능 • SRAM 방식 • 프로그램 정보를 SRAM에 저장해 두는 방석 • 여러 번 사용 가능

  9. ASIC 설계 방식의 비교

  10. ASIC 설계 흐름도

  11. VHDL • VHDL(Very High Speed Integrated Circuit Hardware Description Language) • 등장배경 • 이전의 하드웨어 설계에서는 주로 레이아웃 편집기 (layout editor)나 스키메틱 편집기(schematic editor)를 이용해 작은 블록을 설계하고 이것을 이용해 큰 블록을 설계하는 상향식 설계(bottom-up) • 설계해야 할 회로의 규모가 커지고 복잡도가 증가함에 따라 이러한 방법은 한계에 도달 • 알고리즘이나 기능 레벨에서 설계가 가능하도록 하는 HDL이 출현, 하향식(top-down)설계 방식

  12. VHDL의 기본 설계 • Entity와 Architecture Body로 구성 • 기본설계 2단계 • 1단계 : entity 선언 • 하드웨어 외부 입출력 Interface를 정의 • 하드웨어 블록의 이름과 입출력 Port를 선언 • 2단계 : architecture body 표현 • 하드웨어 내부를 표현 • 내부회로의 연결, 동작 또는 구조 등을 표현

  13. 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; data type signal mode

  14. entity sample is port ( a : in bit ; b : inout bit ; c : out bit ; d : buffer bit); end sample; mode type VHDL의 기본 설계 • Ex) 2 input 2 output의 entity 선언

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

  16. 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;

  17. VHDL의 기본 설계 • 동작적 표현 방식 • 데이터 흐름 모델링(data flow modeling) • 회로의 여러 신호들의 논리적 연산을 기술하는 방식 • 회로도를 그리는 것과 유사 • 회로의 전체 연결 상태를 알아야 표현할 수 있는 방식 • 병행 처리문에서 주로 사용, 즉, 문장의 순서와 무관하게 동시에 수행 • Ex) 논리곱 연산기 architecture brhavioral of and2 is begin result <= a and b ; end behavioral ;

  18. 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 ;

  19. 반가산기 • 반가산기(Half Adder) • 2개의 input(A, B), 2개의 output(S, C) • 진리표 및 논리 회로도

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

  21. 반가산기 반가산기 Simulation 파형 반가산기 Pin 번호 • 반가산기 동작 - 스위치는 눌렀을 경우 ‘0’이 되고 누르지 않았을 경우 ‘1’이 된다. - 출력 LED는 그 값이 ‘1’이 되었을 때 불이 켜진다.

  22. 전가산기 • 전가산기(Full Adder) • 3개의 input(A, B, Cin), 2개의 output(S, Cout) • 진리표 및 논리 회로도

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

  24. 전가산기 전가산기 - simulation 파형 전가산기 Pin 번호

  25. 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 ;

More Related