많은 디자인은 인스턴트-온 프로그래머블 로직과 고속을 요한다. 이는 CPLD를 큰 시장으로 이끈다. 이 기사는 CPLD의 정의, 애플리케이션, 설계 방법과 CPLD를 선택 시 고려되는 요인들을 다룬다.
CPLD의 설계
글│고든 핸즈, 래티스 반도체
CPLD는 무엇인가?
FPGA 비해 CPLD를 정의하는 여러 특징들이 있다. 많은 디자이너들은 CPLD는 빠르게 부트 하도록 싱글칩에 비 휘발성 메모리를 임베디드한 디바이스라는 것에 대해 인식한다. 추가로 핀-투-핀 타이밍은 5ns이내로 아주 빠르다. 이에 다른 기준은 CPLD의 구조에 대해 재검토함으로 완벽하게 이해할 수 있다.
전통적으로 CPLD는 프로덕트-텀(PTs)으로 불리는 많은 AND의 모음에 OR기능을 하는 형상으로 있는 것이다. 각 OR는 전형적으로 레지스터, 레지스터의 조합과 관련된다. OR 게이트와 그에 연관된 PTs는 보통 마크로 셀이 참조한다. 이런 구조의 전형적인 예는 래티스 ispMACH4000 CPLD에서 찾아볼 수 있다. 이런 특징적인 구조는 빠른 로직과 간편한 타이밍 분석 등을 제공한다.
지난 수년 동안, 향상된 실리콘 공정 기술과 진보된 디자인 소프트웨어 툴은 새로운 LUT(Look Up Table)기반의 CPLD를 낳았다. LUT기반의 디바이스는 과거 PT기반의 구조로 만의 구조보다 확실한 속도와 타이밍을 제공할 수 있게 되었다. LUT기반의 디바이스는 전형적인 4입력 LUT로써 기본 로직 형태와 레지스터의 조합으로 되어 있다. 이런 구조의 예는 래티스 MachXO에서 찾아볼 수 있다.
전형적인 CPLD 애플리케이션
CPLD 디바이스는 많은 다양한 애플리케이션에 무수한 기능으로 구현할 수 있다. 아래 네 가지는 CPLD 디바이스에 적합한 가장 보편적인 애플리케이션이다.
리셋 로직
대부분의 시스템은 안전한 전원이 입력될 때까지 여러 디지털 컴포넌트들을 위한 로직을 가지고 있다. 전원이 안정화 된 후, 이 로직은 많은 디바이스의 리셋을 제어한다. 이런 애플리케이션은 파워-온후 빠르게 리셋 로직이 필요한 부분이다. 빠르게 적합한 리셋의 실패는 비정상적인 시스템 동작, 데이터 상실 등을 초래할 수 있다.
FPGA와 ASIC/ASSP 규정
이런 리셋 로직의 애플리케이션의 확장으로 FPGA와ASIC/ASSP 이 있다. 이런 애플리케이션에서, 시스템 동작 이전에 확실한 디바이스 컨피규어가 필요하다. 전형적으로 ASIC/ASSP안의 레지스터 설정과 플래시 메모리에서 FPGA로 로딩은 반드시 이루어져야 한다.
전원 트랜스레이션
All 모든 새로운 CPLD 제품군은 멀티 I/O표준을 지원한다. 이런 I/O 융통성, 작은 사이즈, 저가와 고속의 기능은 시스템에 다른 I/O인터페이스 사이에서 전원 수용을 할 수 있게끔 CPLD가 적당하다.
I/O 확장
종종 ASIC, 마이크로 프로세서, FPGA의 경우 애플리케이션에서 요구하는 I/O의 수를 제공하지 않는다. CPLD는 이런 디바이스 사이에서 간단한 버스구현으로 저가의 방법으로 알맞은 I/O구현으로 사용된다.
CPLD설계 접근
근본적인 구조에 의해, 디자인은 다양하게 CPLD에 접근할 수 있다. PT 기반의 디바이스를 위해, 디자이너는 ABEL과 같은 간단한 언어를 선택할 수 있으며, 좀더 복잡한 VHDL 또는 Verilog 같은 복잡한 언어도 선택할 수있다. 몇몇 디자이너는 과거 경력과 간편함으로 ABEL을 선호 한다. 그러나, Verilog와 VHDL은 좀더 복잡한 구조 등에 타겟할 수 있기에 선호가 높다. LUT기반 구조를 사용하는 디자이너를 위해, VHDL 또는 Verilog는 거의 독점적으로 사용된다. 가끔 탑-레벨 디자인을 위해 스키메틱 에디터가 제공된다.
근본적으로 다른 결과를 얻을 수 있게끔 디자인 접근은 타이밍 옵션과 플로우 플래닝이다. PT 기반의 구조에선 적은 플로우 플래닝과 제한적인 타이밍 옵션이 필요하다. 이는 디자인 설계시 이큐에이션을 통해 제어될 수 있다. LUT기반의 디바이스는 많은 라우팅 딜레이와 로직을 위치할 수 있는 다양한 방법들로 인해, 플로우 플래닝과 옵션이 상당히 중요시 된다.
그림 1. PT 기반의 CPLD 구조
당신의 디자인은 어디에 해당하는가?
그래서, 당신이 차기 디자인 설계 시에, 가장 적합한 부분의 선택이 필요하다. 하지만 PT기반의 디바이스인지 또는 LUT기반의 디바이스인지를 결정 하기 위한 몇 가지 질문이 있다.
그림 2. LUT 기반의 CPLD구조
얼마나 많은 로직이 필요한지
경험상으로 보아, 하나의 마크로셀은 두개의 LUTs 또는 25ASIC 게이트와 같다. 현재 128마크로셀 또는 3000ASIC 게이트 이하의 LUT기반 CPLD는 없다. 128마크로셀/256LUT는 대략 비슷한 가격이며, 128마크로셀 이상은 LUT기반 로직이 일반적으로 단일 로직 대비 저렴하다.
기능은 얼마의 폭인지
일반적으로, PT기반의 디바이스는 고속에서 매우 넓은 폭의 기능 구현에 적합하다. 예를 들면, 하나의 AND텀에 32비트 디코더를 구현할 수 있다. LUT는 좁은 기능에서 고속으로 될 수 있으나, 넓은 폭의 기능구현을 위해선 많은 LUT가 필요하며, 낮은 성능을 초래한다.
디터미니스틱 타이밍은 얼마나 중요한지
몇 애플리케이션은 시간 안에 타이트한 제어가 요구된다. 예를 들어, 디바이스가 인터페이스 변환을 위해 내부 레지스터링 없이 각 패스에 동일한 딜레이를 요구하는 경우로 사용될 때이다. 이런 기능은, PT기반에서 쉽게 할 수 있다. 동시에 디자인이 많은 레지스터와 당신이 타이밍 옵션에 익숙하다면 LUT기반의 디바이스를 사용할수 있다.
당신 디자인에서 레지스터 비율이 얼마인지
LUT기반의 구조는 PT구조와 비교해서 게이트당 두 배 이상의 레지스터를 가지고 있다. 디자인이 많은 레지스터를 필요로 하면, LUT구조를 사용하는 것이 좀더 효율적이다. 이런 일반적인 고려사항을 넘어, CPLD를 선택할 경우에는 패키지, I/O표준, 파워 소모 등 다른 요구사항들이 고려될 수 있다.
그림 3. CPLD 디자인