FPGA (Field Programmable Gate Array)는 디지털 회로를 마치 프로그램하듯이 설계할 수 있게 만들어진 반도체 칩입니다.
FPGA는 비어 있는 회로판과 같이, 그 자체로 아무것도 할 수 없습니다. 디자이너는 FPGA에 대해 비트 파일이라고 하는 구성 파일을 작성해야 합니다. 일단 로드되면 FPGA는 설계한 디지털 회로처럼 동작합니다.
FPGA는 정말 대단한 이유중 하나는 ASIC과 달리 회로 설계가 설정되어 있지 않고 디자이너가 원하는대로 FPGA를 몇 번을 다시 구성할 수 있습니다. ASIC을 만들면 잠재적으로 수백만 달러의 비용이 발생하고 몇 주 또는 몇 달이 걸릴 수 있습니다.
FPGA 대 마이크로 컨트롤러
FPGA와 마이크로 컨트롤러를 비교해보면, 그것들이 매우 다른 장치라는 것을 이해해야 합니다. 마이크로 컨트롤러를 사용하기 위해서는 원하는 프로그램을 보통 C 또는 C++로 소프트웨어를 작성하고 이를 마이크로 컨트롤러에 로드할 수 있게 16진수 파일로 컴파일해야 합니다. 이 16진수 프로그램이 플래시 메모리에 저장되고, 실행시키면 원하는 기능을 실행하게 할 수 있습니다.
그러나 FPGA는 다릅니다. FPGA를 게이트와 같은 단순한 것으로 구성하거나 멀티 코어 프로세서만큼 복잡한 것으로 구성할 수 있습니다. 원하는 설계를 만들려면 몇가지 HDL (Hardware Description Language)를 사용할 수 있는데, HDL은 마치 소프트웨어와 비슷하게 하드웨어를 구성할 수 있게 해주는 언어입니다. 가장 인기있는 2가지 HDL은 Verilog 및 VHDL입니다. 그런 다음 FPGA를 구성하는데 사용할 수 있는 비트 파일로 변환시켜 FPGA를 구성하게 하면 됩니다.
일반적인 마이크로 프로세서의 경우 특정 기능을 위한 전용 핀이 있습니다. 예를 들어 직렬 포트로 사용되는 일부 마이크로 프로세서에는 핀이 2개만 있을 것입니다. FPGA를 사용하면 원하는 만큼 많은 직렬 포트를 생성할 수 있습니다. FPGA의 유일한 한계는 물리적인 I/O 핀의 갯수와 FPGA의 크기입니다.