SoC(System on Chip)는 현대 전자 시스템의 핵심 구성 요소로, 하나의 칩에 전체 시스템 기능을 통합한다. 스마트폰부터 자동차 제어 장치, 산업용 로봇까지 다양한 분야에서 활용되며, 제품의 소형화, 저전력화, 고신뢰성 구현에 기여한다.
1. SoC 기본 아키텍처
SoC는 다음과 같은 주요 블록으로 구성된다.
1.1 프로세서 코어
SoC의 중앙 처리 장치로, 단일 코어 또는 다중 코어 구조를 가진다. 예를 들어 STM32MP1은 Cortex-A7(애플리케이션 처리)과 Cortex-M4(실시간 제어)를 결합한 이종 멀티코어 구조를 채택했다.
1.2 메모리 서브시스템
내장 SRAM/ROM과 외부 DDR 또는 플래시 메모리 인터페이스를 포함한다. 내장 메모리는 부팅 코드나 실시간 데이터 저장에 사용되며, 대용량 데이터는 외부 메모리에 저장된다.
1.3 주변장치 인터페이스
GPIO, UART, SPI, I2C, USB, CAN, 이더넷 등 다양한 통신 인터페이스와 ADC, PWM, 타이머 등을 통합한다. 자동차용 NXP i.MX 시리즈는 최대 8개의 CAN FD 인터페이스를 제공해 차량 네트워크에 적합하다.
1.4 내부 버스 구조
AHB, APB, AXI 등의 버스 프로토콜을 통해 내부 모듈 간 데이터 전송이 이루어진다. 고속 모듈은 AXI와 연결하고, 저속 주변기는 APB에 연결해 전력 효율을 높인다.
1.5 전원 관리 유닛(PMU)
작동 부하에 따라 클럭 주파수와 전압을 동적으로 조절(DVFS), 유휴 모듈의 클럭을 차단(클록 게이팅), 또는 전원을 완전히 차단(파워 게이팅)하여 정적 및 동적 전력을 절감한다.
2. SoC 설계 프로세스
SoC 개발은 체계적인 단계를 거친다.
2.1 요구사항 정의
응용 분야(예: 스마트 스피커)에 따라 오디오 처리 성능, 무선 연결 방식(WiFi/BLE), 대기 전력 등을 명확히 한다.
2.2 아키텍처 설계
코어 선택, 메모리 용량, 인터페이스 수, 버스 구조 등을 결정하며, 성능·전력·비용 사이의 균형을 찾는다.
2.3 RTL 구현 및 검증
Verilog/VHDL로 레지스터 전송 레벨(RTL) 코드를 작성하고, 시뮬레이션을 통해 기능을 검증한다.
2.4 물리적 구현
논리 합성, 플로어플래닝, 라우팅, 타이밍 분석을 수행해 실제 반도체 레이아웃을 생성한다.
2.5 테이프아웃 및 검증
팹(Fab)에 제작을 의뢰한 후, 샘플 칩을 테스트해 사양을 충족하는지 확인한다. 이 단계의 비용이 가장 크므로 사전 검증이 매우 중요하다.
3. 주요 응용 분야
3.1 소비자 전자기기
ESP32는 듀얼 코어 Xtensa 프로세서에 WiFi/BLE를 통합한 저가형 IoT SoC이다. 다음은 FreeRTOS 기반의 잠금 제어 예제이다:
#include "freertos/FreeRTOS.h"
#include "driver/gpio.h"
#define DOOR_LOCK_PIN GPIO_NUM_5
void lock_control_task(void *arg) {
gpio_set_direction(DOOR_LOCK_PIN, GPIO_MODE_OUTPUT);
while (1) {
gpio_set_level(DOOR_LOCK_PIN, 1); // Unlock
vTaskDelay(pdMS_TO_TICKS(3000));
gpio_set_level(DOOR_LOCK_PIN, 0); // Lock
vTaskDelay(pdMS_TO_TICKS(1000));
}
}
void app_main() {
xTaskCreate(lock_control_task, "lock", 2048, NULL, 5, NULL);
}
3.2 자동차 전자장치
NXP S32K 시리즈는 AEC-Q100 인증을 받은 자동차용 SoC로, 안전 관련 작업과 통신 작업을 별도 코어에서 처리할 수 있다.
// Safety-critical task on Cortex-M4
void battery_monitor(void) {
while (1) {
float v = read_battery_voltage();
float t = read_temperature();
if (v > 4.2f || t > 60.0f) {
disable_power_relay(); // Emergency cutoff
}
HAL_Delay(10);
}
}
// CAN communication on Cortex-M0+
void can_tx_task(void) {
while (1) {
uint8_t payload[8];
encode_battery_status(payload);
HAL_CAN_AddTxMessage(&hcan, &header, payload, NULL);
HAL_Delay(100);
}
}
3.3 산업 제어 시스템
TI AM335x는 PRU(Programmable Real-time Unit)를 내장해 나노초 단위의 실시간 제어가 가능하다. PRU는 독립 실행 구조로 OS 지연 영향을 받지 않는다.
// PRU C code for stepper motor control
volatile register uint32_t __R31;
void main(void) {
uint32_t delay = 500;
while (1) {
__R31 |= (1 << 15); // Pulse high
__delay_cycles(delay);
__R31 &= ~(1 << 15); // Pulse low
__delay_cycles(delay);
}
}
3.4 사물인터넷(IoT)
STM32WB는 Cortex-M4(앱) + Cortex-M0+(BLE 스택) 듀얼 코어 구조로, 무선 프로토콜 복잡성을 추상화한다.
void sensor_reporting_task(void) {
while (1) {
float temp = read_sensor();
BLE_SendTemperature(temp);
HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI);
HAL_Delay(60000);
}
}
4. SoC 선정 및 개발 전략
4.1 SoC 선택 기준
- 성능 요구사항: Linux 실행 필요 시 Cortex-A, 간단 제어면 Cortex-M
- 전력 소비: 대기 전류, 웨이크업 시간, DVFS 지원 여부 확인
- 인터페이스 호환성: 필요한 PWM, UART, CAN 채널 수 확보
- 개발 생태계: HAL 라이브러리, 샘플 코드, 커뮤니티 활성도 평가
- 공급 안정성: 장기 공급 보장(특히 산업/자동차 분야)
4.2 개발 모범 사례
DMA 활용: CPU 부하를 줄이기 위해 데이터 전송은 DMA에 위임한다.
HAL_UART_Transmit_DMA(&huart1, buffer, size);
// CPU는 다른 작업 수행 가능
RTOS 기반 멀티태스킹: FreeRTOS 큐를 이용해 센서 수집과 데이터 처리를 분리한다.
QueueHandle_t data_q = xQueueCreate(10, sizeof(sensor_t));
void sensor_reader(void *p) {
sensor_t s;
while (1) {
s.value = adc_read();
xQueueSend(data_q, &s, portMAX_DELAY);
vTaskDelay(pdMS_TO_TICKS(100));
}
}
저전력 모드 적용: 유휴 시 STOP 모드 진입 후 RTC로 정기 웨이크업.
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
SystemClock_Config(); // Wake-up 후 클록 복구
5. 미래 기술 동향
- 이종 컴퓨팅: CPU, GPU, NPU, DSP 등 다양한 연산 유닛 통합
- AI 가속기 내장: 엣지 디바이스에서 신경망 추론 수행 (예: Google Edge TPU)
- 고급 공정 기술: 3nm 이하 미세 공정으로 성능·전력 개선
- 칩렛(Chiplet) 아키텍처: 여러 소형 칩을 패키지 수준에서 통합해 비용 절감
- RISC-V 기반 오픈 SoC: ISA 라이선스 비용 없이 맞춤형 설계 가능