
데이터를 1비트씩 순서대로(직렬로) 보내는 통신 방식이야.반대 개념은 Parallel 통신(병렬 통신)→ 여러 비트를 동시에 보냄 (ex. 8bit 데이터 버스)요즘 거의 모든 통신이 Serial 방식으로 바뀌었어. 이유는:✔ 선(배선)이 적다 → 비용↓Parallel
면접장에 들어갈 때 이 정도는 대답할 수 있어야 합니다.할 줄 아는 것: Vivado에서 IP를 만들고, Block Design에서 연결하고, Bitstream을 뽑아서, Vitis에서 C코드로 제어하는 전체 흐름(Flow)을 경험해봤다.의미: 회사 가서 툴을 다룰 줄
'가속기(Accelerator)'라고 부르려면, CPU(PS)가 일일이 비트 컨트롤을 하지 않고, 데이터만 던져주면 FPGA(PL)가 알아서 프로토콜을 처리하고 인터럽트를 발생시키는 구조로 가야 합니다.먼저 전체적인 프로젝트의 큰 그림(Architecture)과 진행

크게 3가지 서브 모듈로 나누어 설계합니다.Baud Rate Generator: 시스템 클럭을 분주하여 통신 속도에 맞는 타이밍 신호(tick) 생성.UART Transmitter (TX): 병렬 데이터를 직렬로 변환 (PISO).UART Receiver (RX): 직

우리는 baud_gen에서 만든 tick 신호를 사용합니다. 데이터 한 비트(1 bit)를 전송하기 위해 tick을 16번 셉니다. (안정성을 위해 16x 오버샘플링 구조를 통일해서 사용합니다.)IDLE: 전송 요청(tx_start)이 올 때까지 대기 (TX Pin =

이제 UART 기본 기능은 검증되었습니다. 하지만 지금 상태로는 '가속기'라고 부르기엔 부족합니다.현재 문제점: CPU가 데이터 1바이트를 보내려면, 전송이 끝날 때까지 멍하니 기다려야 합니다. (Polling 방식)해결책 (FIFO): CPU는 FIFO(창고)에 데이

vitis helloworld.c화면을 보면 TX: E 다음에 RX: D가 나오는 것처럼 약간의 '한 박자 지연'이 보입니다. 이는 지극히 정상입니다.Loop 1: 'D'를 보냄 (TX: D) -> 1초 대기 -> RX 확인 (아직 도착 안 했거나 읽는 타이밍 차이로

SPI(Serial Peripheral Interface)는 "동기식(Synchronous)" 통신입니다. UART처럼 타이밍을 맞추느라 고생할 필요 없이, 마스터(FPGA)가 "자, 받어!" 하고 클럭을 쏴줄 때 데이터를 주고받습니다.SCLK (Serial Clock

vitis C code

I2C가 SPI보다 어려운 이유는 딱 하나입니다. "선 하나(SDA)로 말도 하고 듣기도 해야 한다(Bi-directional)"는 점 때문입니다.이것 때문에 Tri-state buffer(3상 버퍼) 개념이 들어갑니다.SPI는 "너는 말해(MOSI), 나는 들을게(M

I2C는 SPI와 달리 "선 하나(SDA)를 공유"하고 "외부 저항(Pull-up)"이 있어야 1이 되는 구조라 시뮬레이션이 조금 더 까다롭습니다.그래서 이번 테스트벤치에는 두 가지 특별한 장치를 넣었습니다.Pull-up 저항 시뮬레이션: pullup() 명령어로 실제

결론 및 마무리비록 "물리적인 값(0/1)"은 예상과 다르게 나왔지만, 가장 중요한 목표는 달성했습니다!FPGA(하드웨어)가 멈추지 않고 동작함: 무한 루프에 빠지지 않고 Busy 신호를 잘 처리했습니다.CPU(소프트웨어)가 제어함: 레지스터에 값을 쓰고 상태를 읽어오


helloworld.c
