Verilog: операция чтения I2C

В симуляции Verilog мне придется взаимодействовать с 64K I2C EEPROM от Microchip. Каждый раз, когда я получаю подтверждение от ведомого, я завожу свой SDA на высокий импеданс в течение заданного тактового периода. Теперь, чтобы получить данные от ведомого, должен ли я следовать тому же для SDA? Проще говоря, порты SDA должны быть переведены в состояние высокого импеданса?


person san6086    schedule 13.10.2012    source источник
comment
Вы можете найти лучший ответ на этот вопрос на electronics.stackexchange.com, я ожидаю, что они могут быть более опытными с I2C.   -  person Tim    schedule 13.10.2012


Ответы (2)


В физической схеме I2C есть подтягивающие резисторы, которые переводят SCL и SDA в высокий уровень, когда их выходы находятся в состоянии высокого импеданса. Эквивалентом подтягивающего резистора в Verilog является TRI1. Это сделает линии определенными, а не плавающими, когда сигналы находятся в состоянии высокого импеданса.

person mkstlwtz    schedule 22.10.2012

Вообще говоря, если линия SDA имеет дизайн open-drain, вам не нужно ставить ее на высокий уровень. состояние импеданса (и, вероятно, вы не можете), но вы должны установить его в логическую «1». Но если это трехуровневый контакт ввода-вывода, тогда да, вы должны перевести его в высокий уровень. -Состояние импеданса, так как в противном случае вы можете повредить свои схемы.

person Serge    schedule 13.10.2012