요즘 디지털 회로 구현에 있어 SoC(System On Chip)가 많이 활용되고 있다.
약 10년 전까지만 해도 FPGA가 주류였으나 외부 인터페이스와 손쉬운 연동, 신호처리 등을 위해 SoC(MCU + FPGA) 형태의 디지털 회로 구현 소자가 많이 출시되었고 Xilinx 사의 경우 Zynq라는 이름의 SoC를 출시해서 FPGA 영역을 PL(Programmable Logic), MCU 영역을 PS(Processing Subsystem) 표현하고 있다.
SoC를 활용하여 디지털 회로 구현 시 FPGA와 MCU의 차이를 알게 되면 임베디드 시스템 설계 시 도움이 될 것 같아 다음과 같이 간략히 정리해 보았다.
1. FPGA 뭐지?
- Field-Programmable Gate Array의 약어
- 원하는 제어의 내용을 Digital 회로로 구현하는 것
- FPGA 내부에 작은 Logic Unit 들이 빽빽하게 형성되어 있음
- 사용자가 설계(주로 HDL 활용)한 내용에 따라 Logic Unit들이 할당되고 상호 간 연결되어 디지털회로를 구현하게 됨.
- 가장 큰 특징은 FPGA에 구현된 모든 기능들이 Clock에 따라 동시에 구동가능한 구조(병렬처리)를 가지고 있음.
- 병렬처리 가능으로 FPGA는 주로 동작 속도가 빠른 Application에 활용됨.
- 모든 회로의 구조와 전달지연시간 등 설계자가 예측하고 관리할 수 있어 세밀한 설계가 가능하지만 더욱 정밀하게 관리해야 하므로 하드웨어(전자회로)에 대한 지식을 어느 정도 가지고 있어야 정확한 설계가 가능.
- FPGA는 설계자가 Low Level까지 제어 가능해서 응용할 수 있는 영역이 넓어 보통 MCU에 비해 부품 가격이 높음
2. MCU(MICOM) 뭐지?
- Micro Controller Unit의 약어 (MICOM이라고도 불려짐)
- MCU의 내부는 ALU(Arithmetic Logic Unit)라는 덧셈, 뺄셈용 산술 연산 전용 Library와 정해진 입출력 Pin, 규정된 수만큼의 Memory 그리고 이들을 연결해 주는 Data BUS, Address BUS, Conrol BUS가 포함된 고정된 구조를 가짐.
- 고정된 구조로 정해진 형태의 Regitster 제어를 통해 Port , Timmer 등을 설정하게 됨.
- MCU는 모든 동작을 Address BUS와 Data BUS를 통해서 한 번에 하나씩 동작하므로 FPGA와 동일한 처리를 함에 있어 더 많은 Clock Cycle이 요구됨.(처리속도가 느림)
- 각 포트 별 정해진 지연시간 및 Fanout 등이 지정되어 있어 Datasheet에 제시된 기준 치를 넘지 않는 선에서 손쉽게 구현 가능
- 요즘은 어셈블리 보다 C언어로 대부분 구현이 가능하므로 하드웨어 지식이 적어도 SW구현 지식이 있으면 구현 가능 따라서 MCU로 구현되는 프로그램을 Software 같으면서 Hardware반도체에 구현된다고 해서 Firmware라고 부름.
- MCU는 FPGA에 비해 제한된 기능을 보유하므로 대체적으로 부품 가격이 FPGA에 비해 낮음.
3. FPGA, MCU 중 어떤 걸 선택하면 좋을 까?
- 다수의 데이터를 실시간으로 처리해야 되는 상황 → [FPGA]
단, 제어 주기(Period)가 MCU에서 제공하는 최소 제어 주기보다 길어 실시간 제어가 가능한 경우 [MCU] 적용 가능 - 하드웨어 특성(FAN out, Glitch 등) 고려를 줄이고 손쉽게 구현하기 원하는 경우 → [MCU]
- 정밀한 제어를 하기 위해 Low Level까지 접근하고 고속 신호 처리/전송을 해야 되는 경우 → [FPGA]
SoC를 활용해서 임베디드 시스템 구현 시 PL영역(FPGA)와 PS영역(MCU)의 특징을 고려하여 올바르게 기능 할당한다면 좀 더 좋은 시스템이 될 것으로 예상된다.
Ref. Digital 회로설계 실무, 변형구.안규철.구인모