HDL 설계에서 바라본 SPI 통신
1. SPI 란?
- SPI란 Serial Peripheral Interface로 1:N 통신을 지원하는 동기식 통신 방식
- SPI통신은 하나의 마스터와 하나 이상의 슬레이브 기기로 통신하며 MISO, MOSI, SCK, SS 핀이 필요
이름 | 설명 |
---|---|
MOSI | Master Out Slave In |
MISO | Master In Slave Out |
SCK | Clock |
SS | Slave Select |
2. SPI 통신 방식
- SPI 통신은 MOSI 핀을 통해 마스터에서 출력된 데이터가 슬레이브로 입력되며, 반대로 MISO 핀은 슬레이브에서 출력된 데이터가 마스터로 입력되어 양방향 통신을 할 수 있다.
- SPI 통신은 동기식 통신으로 기준 클럭이 필요하며, 기준클럭인 SCK는 마스터에서 출력되고 이를 기준으로 마스터와 슬레이브가 데이터를 주고 받는다.
3. FPGA SPI 설계
-
MCU에서 SPI 통신을 제어할 때와 FPGA에서 SPI통신을 직접 설계할 때는 조금 다르다.
-
MCU에서는 이미 설계되어 있는 SPI를 레지스터 셋팅을 통해 Master, Slave를 선언하고 이미 정해진 공간에서 데이터를 주고 받지만 FPGA에서는 SCLK의 기준에 따라 데이터를 받아서 저장을 해줘야 한다. 이때 Master와 Slave에 따라 데이터를 캡쳐 하는 기준 클럭이 달라 진다.
-
Master 설계할 때
: Master에서 Slave로 데이터 전송 할 때 Master는 SCLK 하강엣지에서 데이터 전송
: Slave에서는 SCLK 상승엣지에서 데이터 캡쳐 -
Slave 설계할 때
: Slave에서 Master로 데이터 전송 할 때 Slave는 SCLK 하강엣지에서 데이터 전송
: Master에서는 SCLK 상승엣지에서 데이터캡쳐
4. 마무리
- 이처럼 FPGA에서 HDL로 SPI 통신으로 데이터를 주고 받으려고 할 경우 SCLK 기준 클럭의 상승엣지 에서만 데이터를 주고 받는 것이 아니라 데이터를 보내는 쪽은 하강엣지에서 데이터를 보내고 데이터를 받는 쪽은 상승엣지에서 데이터를 받도록 설계를 해야 데이터 불일치를 방지 할 수 있다.
도움이 되셨다면 더 좋은 정보 공유를 위해 광고 클릭 부탁 드립니다 :)
0 댓글