강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của deokyeong
deokyeong

câu hỏi đã được viết

Chương trình Verilog FPGA 1 (Arty A7-35T)

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

Đã giải quyết

Viết

·

411

0

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

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

verilog-hdlfpga

Câu trả lời 1

1

alex님의 프로필 이미지
alex
Người chia sẻ kiến thức

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

일단 파형으로 봐서는 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
Người đặt câu hỏi

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

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

alex님의 프로필 이미지
alex
Người chia sẻ kiến thức

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
Người đặt câu hỏi

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

Hình ảnh hồ sơ của deokyeong
deokyeong

câu hỏi đã được viết

Đặt câu hỏi