Comm_Accel

Seungyun Lee·2026년 1월 27일

Comm_Accel(UART/SPI/I2C)

목록 보기
3/15

'가속기(Accelerator)'라고 부르려면, CPU(PS)가 일일이 비트 컨트롤을 하지 않고, 데이터만 던져주면 FPGA(PL)가 알아서 프로토콜을 처리하고 인터럽트를 발생시키는 구조로 가야 합니다.

먼저 전체적인 프로젝트의 큰 그림(Architecture)과 진행 로드맵을 잡아드리겠습니다.

1. 전체 시스템 아키텍처 (Big Picture)

이 프로젝트는 Zynq(또는 MicroBlaze) 프로세서가 AXI Bus를 통해 Custom IP를 제어하는 구조가 됩니다.

[시스템 블록 다이어그램 구상]

1. PS (Processing System / SW)

  • Role: Vitis에서 C 코드로 동작.
  • Action: 통신할 데이터와 설정을 AXI Bus로 전송, 완료 인터럽트 처리.

2. AXI Interconnect

  • PS와 우리가 만들 IP를 연결해주는 다리.
  • Advanced eXtensible Interface

3. PL (Programmable Logic / HW) - "Multi-Protocol Engine"

  • Top Module: AXI4-Lite Slave Interface (레지스터 제어용).
  • Internal Common: TX/RX FIFO (데이터 버퍼링), Interrupt Controller.
    -Sub-Cores (SystemVerilog):
    UART_Core: Baud rate 생성, Start/Stop bit 처리.
    SPI_Core: Master/Slave 모드, CPOL/CPHA 처리.
    I2C_Core: Open-drain 제어, ACK/NACK 처리, Start/Stop condition.

2. 단계별 프로젝트 로드맵 (Step-by-Step)

우리는 Bottom-Up 방식으로 설계를 진행할 것입니다. 가장 기초적인 RTL부터 시작해서 시스템 통합으로 갑니다.

Phase 1: RTL 설계 (SystemVerilog) & 시뮬레이션

Vivado 시뮬레이터로 파형을 보며 로직을 검증합니다.

  • Step 1: UART 모듈 구현 (가장 쉬움, 기본기 다지기)
  • Step 2: SPI 모듈 구현 (Shift Register 개념 확립)
  • Step 3: I2C 모듈 구현 (Tri-state buffer 및 FSM 복잡도 증가)
  • Step 4: Integration Wrapper (세 모듈을 하나로 묶고 FIFO 붙이기)

Phase 2: AXI 인터페이스 연동 (IP Packaging)

  • Step 5: AXI4-Lite Slave 인터페이스 설계
    Control Register (시작/정지, 모드 설정)
    Status Register (Busy, Done, Error)
    Data Register (TX/RX FIFO 접근)

  • Step 6: Vivado IP Packager를 통해 Custom IP로 생성.

Phase 3: 시스템 통합 (Vivado Block Design)

  • Step 7: Zynq(또는 MicroBlaze) + AXI Interconnect + 만든 IP 연결.
  • Step 8: Synthesis, Implementation, Bitstream 생성.

Phase 4: 소프트웨어 드라이버 개발 (Vitis)

  • Step 9: XSA(하드웨어 플랫폼) export.
  • Step 10: C언어로 각 프로토콜 제어 드라이버 작성 (Register Read/Write).
  • Step 11: 실제 보드(또는 ILA)에서 통신 테스트.

3. 가장 먼저 해야 할 일: 스펙 정의 (Specification)

코딩을 시작하기 전에 각 모듈이 지원할 최소 기능을 정해야 합니다. 너무 복잡하게 시작하면 완주하기 힘드니 Basic Feature부터 잡겠습니다.

profile
Design Verification engineer

0개의 댓글