CPLD란?
CPLD는 프로그램 재구성이 가능한 논리회로 소자 중 비교적 복잡한 회로 구성의 제품을 말합니다.
‘Complex Programmable Logic Device’의 약자로, CPLD를 통해 제품 개발이 이전과 비교하여 저비용으로 원활하게 이루어질 수 있게 되었습니다.
CPLD의 사용 용도
CPLD는 민생용품부터 산업기기까지 제어기판 내부 등에 광범위하게 사용되고 있으며, CPLD의 구체적인 사용 용도는 다음과 같습니다.
- 디지털 카메라 및 복합기
- 스마트폰
- 차량용 제어장치 및 내비게이션 장치
- 게임기
CPLD는 제어 회로 중에서도 특히 전원 회로 관리 등에 사용됩니다. 회로에 전원을 투입하는 순서 관리나 전압 선택 회로 등의 기능을 담당하는 경우가 많습니다.
CPLD의 원리
CPLD는 여러 개의 프로그래머블 논리 회로가 집적된 블록과 다른 블록을 연결하는 배선 영역으로 구성됩니다. 블록을 구성하는 것은 AND-OR 게이트 구조를 가진 매크로셀과 1비트 정보를 0/1로 저장하기 위한 D형 플립플롭, 입출력을 위한 I/O 핀의 세 가지입니다.
매크로 셀은 Input 핀에서 디지털 신호를 입력받아 사용자가 프로그래밍한 논리회로로 Output 핀으로 신호를 출력합니다. 내부 1차 데이터는 플립플롭으로 저장합니다.
배선 영역은 블록 간을 연결하는 부분으로, 하나 또는 여러 개의 블록을 통해 데이터를 출력합니다.
CPLD의 기타 정보
1. CPLD와 FPGA의 차이점
CPLD와 유사한 논리회로 소자로는 FPGA가 있는데, FPGA는 휘발성 메모리를 이용하기 때문에 전원을 끄면 회로 데이터가 손실됩니다.
반면 CPLD는 EEPROM이나 플래시 메모리와 같은 비휘발성 메모리를 이용하기 때문에 회로 데이터가 유지된다는 차이가 있습니다. 또한, 양자는 규모에 있어서도 차이가 있습니다.
FPGA가 수만 개의 게이트를 가지고 있는 반면, CPLD는 수천 개 정도의 게이트만 가지고 있습니다. 따라서 대규모 로직 회로는 FPGA에 맡기고, 전원을 켤 때 CPLD가 FPGA에 설계 데이터를 주는 방식으로 사용합니다.
또한, 로직 블록이 배치된 위치에 따라 지연 시간이 다르기 때문에 FPGA는 지연 시간을 예측하기 어렵습니다. 반면, CPLD는 경유하는 매크로 셀의 개수가 정해져 있기 때문에 예측이 용이합니다.
2. CPLD의 역사
CPLD는 약 30년 전 TTL과 CMOS 로직 소자를 대체할 목적으로 개발되었습니다. 당시에는 NOT와 AND만 기능을 가진 범용 로직 IC를 기판 위에 조합하여 회로를 구성했습니다.
텍사스 인스트루먼트(TI)사의 7400 시리즈가 유명한데, 당시 기술자들은 수백 개가 넘는 디바이스를 거의 암기하고 있었다고 합니다. 회로가 복잡해지면 수십에서 수백 개의 범용 로직 IC가 필요하기 때문에 기판 크기가 커지는 문제가 있었습니다.
트랜지스터의 미세화가 진행되면서 수천, 수만 개의 범용 로직 IC를 몇 개의 LSI로 구현할 수 있게 되면서 CPLD의 개발이 가속화되었습니다.
3. CPLD 개발 프로세스
CPLD 설계의 개발 프로세스는 논리 설계, 논리 합성, 배치 배선, 타이밍 검증, 프로그래밍 단계로 구분됩니다.
논리 설계
Verilog, VHDL과 같은 하드웨어 설명 언어를 사용하여 회로 설계를 수행하며, RTL 설계라고도 합니다.
논리 합성
하드웨어 기술 언어로 표현한 회로를 CPLD에서 구현할 수 있는 게이트 회로(넷리스트)로 변환합니다. 회로 설명을 해석하여 NOT, AND 등의 논리식으로 변환합니다. 이때 회로 동작 속도 향상과 칩 면적 절감을 위한 최적화 작업도 함께 이루어집니다.
배치 배선
게이트 회로(넷리스트)의 내용을 CPLD 내부에서 어떻게 배치할 것인지를 결정합니다. 조합 회로 부분의 출력이 안정화될 때까지의 시간을 계산하거나, 신호 간 출력 타이밍이 너무 차이가 나지 않도록 조정합니다.
타이밍 검증
CPLD 내부 소자에 대한 지연 시간을 정의하고 시뮬레이션을 수행합니다.
프로그래밍
최종 설계를 바탕으로 개발 툴에서 생성된 데이터를 CPLD에 입력합니다.