260 likes | 929 Views
ASIC 의 개요. ASIC(Application Specific Integrated Circuit) 특정 용도 주문형 집적회로 사용자가 요구하는 특정 기능을 갖추도록 설계 , 제작된 IC 넓은 의미 : Memory 와 일반 표준 논리 IC 를 제외한 각 시스템 별 전용 IC 좁은 의미 : Standard Cell, Gate Array, PLD 특징 특정 용도 집적 회로 주문형 시스템. ASIC 의 분류. 완전 주문형 (Full Custom) IC.
E N D
ASIC의 개요 • ASIC(Application Specific Integrated Circuit) • 특정 용도 주문형 집적회로 • 사용자가 요구하는 특정 기능을 갖추도록 설계, 제작된 IC • 넓은 의미 : Memory와 일반 표준 논리 IC를 제외한 각 시스템 별 전용 IC • 좁은 의미 : Standard Cell, Gate Array, PLD • 특징 • 특정 용도 집적 회로 • 주문형 시스템
완전 주문형(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 수
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
CPLD • CPLD(Complex PLD) • 입력 수가 커짐에 따라 프로그래밍되는 평면 증가로 개발 • 단일 칩에 여러 개의 SPLD 블록을 포함 • SPLD 내부 및 블록 간의 연결을 프로그래밍하여 실현 • 다수의 입력으로 복잡한 형태의 조합 논리 회로 구현시 적합
FPGA • FPGA(Field Programmable Gate Array) • FF이 많은 순차 회로 구현에 적합 • 다수의 논리 블록(LC)을 가지고 연결됨 • LC 연결을 프로그래밍하는 방법 • 안티퓨즈 방식 • 고전압을 사용하여 필요한 곳을 연결시킴 • 한번만 사용 가능 • SRAM 방식 • 프로그램 정보를 SRAM에 저장해 두는 방석 • 여러 번 사용 가능
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; data type signal mode
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 선언
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 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 번호 • 반가산기 동작 - 스위치는 눌렀을 경우 ‘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 번호
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 ;