FPGA - 프로세서 그리고 데이터의 이동

SPI 통신

망고토마토 2021. 8. 3. 20:02
반응형

SPI통신 규격의 칩을 제어하는 수많은 방법 중 1개

온도센서, ADC, PLL 등 칩을 제어하는데 사용하는 통신 규격으로 I2C, SPI 통신이 있다. 위 그림은 온도센서를 SPI로 제어하는 방법을 그린 것이다.  총 3가지의 주체가 있다. 1. 프로세서, 2. FPGA, 3. SPI 통신을 지원하는 칩으로 이문서에서는 온도센서를 예로 들겠다.  

 

1. 사용자는 온도센서의 데이터시트를 보고 온도센서를 제어하기 위한 명령어를 파악한다. 보통 이명령어 길이는 24bit 정도 되었다.  제어 명령어를 프로세서에 입력하고, 프로세서는 이 명령어를 FPGA에 전달한다.  (아 물론! 프로세서에 온도센서의 SPI 핀들이 바로 연결되어 있다면, 프로세서로 온도센서를 바로 제어할 수 있다.)

 

2. FPGA는 프로세서로부터 받은 제어 명령어를 FPGA 내부에 있는 SPI 모듈(verilog 언어로 만든)에 전달한다.

 

FPGA안에 구현한 SPI 모듈의 역할은 무엇일까?

칩 제어 명령어는 보통 24비트이다. 24비트를 어떻게 칩에 전달할 수 있을까? parallel하게 ? 즉 24비트를 한번에 chip에 넣는다? 

 

SPI 칩 포트를 보면 SDI라는 핀이 1개밖에 없다. 즉 Serial 형태로 데이터를 SDI핀에 넣어주어야 한다. 

다음과 같이 말이다.

FPGA안에 구현한 SPI 모듈은 SPI 칩의 CS, CLK, SDIO 핀에 필요한 파형을 각각 생성한다

 칩(ex. 온도센서) 데이터 시트를 보면 칩을 제어하기 위해 각 Pin에 데이터, 클럭 등을 어떤 형태로 넣어주어야 하는지 설명되어 있다.  FPGA SPI 모듈은 위와 같은 파형을 만들어주는 역할을 한다.  

 

 

3. SPI 통신을 지원하는 칩에는 SCLK, SCS, SDI, SDO, pin이 있다.  그리고 종종 SDIO pin이 있는데 이것은 즉 SDI, SDO의 역할을 같이한다. 

 

 

SPI칩의 SDI 핀에 SPI 칩의 내용을 읽고 싶다는 명령어를 Serial로 보낸다. 그러면 SPI 칩은 SDO 핀으로 데이터를 내뱉는다. 이것을 FPGA에 받아들이고 SCLK의 edge마다 1비트씩 읽는다.  

 

 

 

반응형