인프런 커뮤니티 질문&답변

YEONG님의 프로필 이미지
YEONG

작성한 질문수

Verilog FPGA Program 1 (Arty A7-35T)

안녕하세요 I2C Register 모듈에 대해서 질문이있습니다.

해결된 질문

작성

·

322

0

이 부분에서 reg_ren이 1일때 reg10에 저장된 값을 읽으려하는데 저의 생각에는 reg_ren값이 1이 되는 순간 reg_rdata값이 나올줄 알았는데 5ns뒤인 20ns뒤에 나오는걸 확인했습니다.

이런 타임딜레이는 하드웨어상 어쩔수없는 딜레이인가요?

답변 1

1

alex님의 프로필 이미지
alex
지식공유자

문서의 어떤 부분인지 알려주시면(페이지) 감사하겠습니다.

일단 파형으로 봐서는 simulation이 시작되는 부분이네요.
해당 모듈의 reset, mclk (main clock)이 어떤지 확인해 보시고요,
reg_ren 신호를 어떻게 만드셨는지요?
모든 코드들은 mclk (main clock)과 동기되어 동작하도록 되어 있어서, mclk와 같이 파형을 보셔야 합니다.
아래는 tb_i2c_slave8x8 simulation 파형입니다. reg_ren이 Active 되고 그 다음 mclk clock에 reg_rdata가 나오도록 동작합니다.

image

YEONG님의 프로필 이미지
YEONG
질문자

fpga_intro에 있는 reg 8*8부분(11.3.3, 192page)만 따로 모듈화하여 테스트벤치 해보았습니다.

imageimage이건 제가 구성한 테스트벤치 코드입니다! 제가 궁금한건 reg_rdata가 reg_ren이 입력되는 동시에 값이 읽혀야 하는건지 궁금하여 여쭤봅니다.

alex님의 프로필 이미지
alex
지식공유자

registermodule 로 구성된 모듈(강의의 소스는 i2c_reg8x8 입니다만)의 read/write 동작은 mclk의 positive edge에서 동작합니다.
작성하신 test bench의 mclk 주기가 2x5ns = 10ns 입니다.
read/write 동작이 완료되기 위해서는 적어도 10ns 의 시간이 필요합니다.
작성하신 test bench에서는 5ns 단위로 동작합니다. 이는 read/write 동작을 위한 시간이 부족하게 됩니다.
#5 을 #10으로 변경해서 테스트 해보시길 바랍니다.

그리고 simulation 하면 오류 발생하지 않나요?
모든 신호들은 reg, wire 선언후 사용해야 맞는 것입니다.

아래 코드는 제가 수정해서 simulation 한 코드입니다.
참고하시길 바랍니다.

image

simulation 결과입니다.

image

YEONG님의 프로필 이미지
YEONG
질문자

아하 제가 무엇을 실수한지 제대로 파악한거같습니다. 항상 빠른 답변 정말 감사드립니다!!

YEONG님의 프로필 이미지
YEONG

작성한 질문수

질문하기