CHIP KIDD

[FPGA] I2C RTC module Design (verilog Code) 본문

반도체/FPGA - Verilog

[FPGA] I2C RTC module Design (verilog Code)

쑨야미 2021. 4. 9. 15:28

이번시간에는 FPGA를 이용하여 I2C 통신 모듈이 탑재된 RTC 모듈을 설계해 보았습니다. 

DS3231 또는 DS1307은 I2C 통신 RTC 모듈로 잘 알려져 있습니다. 

저는 DS1307을 기반으로 하여 제작했습니다. 

ds1307

따라서 블록다이어그램을 보면 다음과 같은데, 여기서 I2C , RTC 그리고 오실레이터 역할을 해주는 Prescaler를 설계했습니다.   

 

I2C 통신 특성

Datasheet를 보면 위의 순서로 데이터가 송수신이 되는데 , 위 State Machine을 설계해야합니다. 

Clock 특성은 SCL 이 High 일떄는 SDA의 값은 변하면 안됩니다. 하지만 예외가 있는데 Start 신호는 SCL이 High일떄 SDA가 LOW로 떨어지면 START 신호를 나타내며, SCL이 LOW일때 SDA가 HIGH로 올라가면 STOP신호가 됩니다. 

 

I2C 모듈을 코딩하고 TB를 돌려본 결과 입니다. CLK 특성과 START 신호를 볼수 있습니다. 

 

RTC Module Block Diagram

제 RTC 모듈의 Block Diagram 입니다.

H/W 구성

 Master : ARM (STM32 - M4Cortex) + Uart COMPORT Master (결과값확인)

 Slave : FPGA (ZYBO Z7-20) + Vivado(Verilog Editor Tool)

 

Code

 

Schematic (Synthesis 이후)

 

결과 동영상