설계 가능 논리 소자

**PLD**(Programmable Logic Device)는 제조 후 사용자가 내부 논리 회로의 구조를 변경할 수 있는 집적 회로이다. 초기에는 사전에 프로그래밍되어 양산에 제공되어서 회로를 변경하지 않아도 되는 것이 일반적이었다. 최근에는 동작 중 회로의 정의를 다시 할 수 있어서 재설정 가능 논리 소자(Reconfigurable Logic Device)라고도 불린다. 는 설계시 사양이나 기능이 정해져서 제조되기 때문에 나중에 회로 구성을 변경할 수 없는 일반 집적 회로와 달리 회로가 정의되지 않은 채 출하되어 사용자가 임의의 회로를 기록해 동작시킬 수 있다. 일반 집적 회로는 대량으로 제조하는 경우 ASIC를 사용하지만 개발에 걸리는 기술 자산과 설비, IP 등 초기 개발비가 들며 설계 자산을 다른 곳에 쓸 수 없고 설계하는 데 많은 시간이 들며 조금의 실수도 용납되지 않아 개발자에게 부담이 될 수 있다. 하지만 설계 가능 논리 소자의 경우 초기 개발비가 필요없고 회로를 여러 번 고쳐 쓸 수 있기 때문에 오늘날 많은 사람들의 지지를 받아 개발품부터 양산품까지 폭넓게 쓰이고 있다. 일반적으로 PAL(Programmable Array Logic), GAL(Generic Array Logic)의 총칭으로 쓰이는 말이지만 CPLD와 FPGA까지 포함한 총칭으로 쓰이기도 한다.
# 걸어온 길
초기의 프로그래머블 장치는 회로 정보의 보관으로 미세한 휴즈를 사용하는 PAL이었다. 그 후, EEPROM의 기능을 이용한 GAL, 두 가지 구조를 복합적으로 만들어서 용량을 확대한 CPLD 이르게 되었다. 이러한 장치들은 기존의 LSI를 서로 연결하는 부가 로직에 사용되었다. 한편, 기본 구조가 게이트 어레이인 EEPROM형 FPGA와 LUT인 SRAM형 FPGA가 등장하게 된다. 이것은 회로의 용량이 크게 개선되어서 단순한 부가 로직가 아닌 기존의 LSI의 기능을 넣어서 SoC(System On Chip) 디자인 자체를 탑재하기에 이르렀다.
# 쓰임
PLD가 고가이던 시기에는 ASIC의 프로토타입과 슈퍼 컴퓨터 가속기 등에 사용되었다.(리컨퓨규어블 컴퓨터 참조) 제조사의 경쟁이 치열해지면서 양산 효과에 의해 가격이 저렴해졌고, 일반적인 개인용 컴퓨터에도 사용되었다. 점차적으로 ASIC를 사용하지 않고, 호스트 버스 인터페이스 기능과 FPGA의 논리 회로 설정 펌웨어를 저장한 환경 설정 ROM에서 PLD로 업로드 하는 방식의 FPGA 사용이 퍼졌다. 새로운 펌웨어를 저장한 환경 설정 ROM의 사용으로 기능향상 및 버그 수정을 할 수 있기 때문에, 전체적으로 보면 ASIC를 사용했을 때보다 저비용으로 제품을 만들 수 있게 되었다. 인터넷에 의한 급격한 대역증가는 기존의 소프트웨어에 의한 라우팅은 한계에 부딪혔다. 고성능 CPU의 사용은 전체적인 가격 상승, 소비 전력 증가, 냉각등 문제로 인하여 비현실적인 대책이었다. 한때 ASIC로 구성하는 시기도 있었지만, 처리해야할 프로토콜이 증가되거나 규격이 변경되면 장치가 낡아져서 더 이상 사용할 수 없게되는 문제가 발생됐다. 그리하여 자유롭게 회로 구성을 변경할 수 있는 FPGA에 의한 라우팅 엔진을 구성하고, 새로운 규격에도 대응할 수 있는 설계가 일반화되었다. 디지털 방송은 플랫폼이 변경될 때마다 전송 방식부터 시작해서 각종 수신기에 이르기까지 모든 규격이 변화했다. 2000년에 방송을 시작한 BS디지털 방송은 미리 CS디지털 방송이나 지상파 디지털 방송이라고 하는 새로운 규격에 대한 준비를 해야했고, BS디지털 방송에서도 수신기의 성능에 따라서 송신기 사양을 변경해야하는 혼란에 빠졌다. 그렇게 때문에 방송 기기는 난처한 상황에 대응할 수 있도록 FPGA 기반으로 만들어졌다. 수신기의 일부도 FPGA로 만들어서 간단한 펌웨어 업데이트만으로 새로운 규격을 지원하는 제품도 있었다. 웹 서버나 가속기에서도 PLD를 응용한 제품이 있다. 서버에 있어서 부하가 큰 CGI 실행 결과 등을 캐시하거나 필터링 처리를 가상의 하드웨어로 구현하는 것이다. 이러한 기기는 기존의 기기와 비교해 엄청난 시간당 트랙잭션수(TPS)를 자랑한다. 가속기는 특히 부하가 높은 Secure Socket Layer(SSL)을 가속화하는 데 사용되었다. SSL은 암호화 방식이 변경되거나 추가될 가능성이 있기 때문에 ASIC로는 구현하기 힘든 기능이다. PLD는 논리 회로 변경만으로 암호화 방식을 추가할 수 있기 때문이다.
# 현장 프로그래머블 게이트 어레이 (FPGA)
현장 프로그래머블 게이트 어레이 사용자가 독자적인 논리 회로를 구성할 수 있는 게이트 어레이의 일종이다. FPGA의 정의는 명확하지 않고, 사용자나 제조사에서 독자적으로 규정해서 부르고 있지만, 대체로 1,000 논리 구성체(약 20,000 게이트) 이상의 것을 FPGA라고 부르는 경우가 많다.
## SRAM식 소자
내부에 다수의 LUT(Look Up Table), D-FF, 라우팅 자원을 탑재하고 있어서, 이것들을 조합하여 회로를 구성하는 형식이 대부분이다. LUT의 내용, D-FF의 동작 모드, 라우팅의 정보는 SRAM에 저장된다. 즉 전원을 끄면 회로 정보가 휘발돼버리기 때문에 외부의 ROM을 연결해 전원이 들어올 때 회로 정보를 로드하고 나서 사용되는 형식이 일반적이다. 최근에는 컴팩트플래시에 회로 정보 파일을 저장해서, FPGA에 전송하여 LSI가 초기화되는 경우도 있다. 내부에 다수의 LUT(Look Up Table), D-FF, 라우팅 자원뿐만 아니라 최근에는 이것이 조합된 S-RAM 블록, 곱셈기, PLL, 클럭 드라이버등을 탑재하여 복잡한 응용에 적용할 수 있는 것도 있다. 뿐만 아니라, 입출력의 TTL 레벨, CMOS 레벨, 차분 신호등 다양한 입출력 신호를 용도에 맞추어 설정할 수 있다. SRAM형 FPGA의 IP도 풍부해져서 CPU, 연산기, 주변 회로에 적용이 가능하다. CPU에 이런 기능을 포함시킨 소자도 있다.
## EEPROM식 소자
그리고 회로의 정보를 내부의 EEPROM을 이용하는 장치도 있다. 이것은 전원이 꺼져도 회로 정보를 보관할 수 있기 때문에 전원 공급후 신속하게 사용할 수 있고 설계의 기술이 누출될 위험이 없는 장점이 있다.
# 복합 프로그래머블 논리 소자 (CPLD)
복합 프로그래머블 논리 소자 PAL, GAL보다 규모가 큰 PLD로서 수백 개의 논리 구성체가 있고, 대부분 EEPROM의 구조로 구성되어 있다. 표시 방식 * 플래시 ROM * EEPROM,EPROM * Antifuse
# 소규모 품목
* PAL: AND어레이가 기록 가능하고, OR어레이는 고정됨. * PLA: AND어레이와 OR어레이 모두 기록 가능함. * GAL, PLD: AND어레이가 기록가능하고, OR어레이는 고정됨. OR어레이의 출력을 AND어레이의 입력에 연결된 형태.