Comments 6
статья качественная, и проработанная что даже вопросов не возникает)
Не забудьте контроль невалидных состояний шины: захват шины другим мастером или медленным ведомым (clock stretching), аппаратный сбой (нет подтяжек, К.З. на общий). Даже если не предполагается много ведущих, то второе и третье - могут случиться в любой системе.
Да верное замечание. Но из личного опыта - никогда не встречал двух мастеров на одной шине. I2C - обычно для настроек используется. Записать/прочитать EEPROM на плате, настроить тактовый генератор и тому подобное.
Что касается подтяжек - они обычно на платах сделаны. Но можно и на выходе ПЛИС pull-up поставить.
Метастабильность асинхронного сигнала сброса не устраняется (так же через 2 flip-flop'a можно же прогнать, как сигнал с шины)?
Да, для асинхронного сброса нет защиты от метостабильности. Сигнал n_arst здесь напрямую идет на входы асинхронных сбросов всех триггеров. Это как возможность. Если она потребуется, то правильную последовательность сбросов нужно формировать снаружи.
Если снимать асинхронный сброс в произвольный момент, то может возникнуть такое, что это снятие произойдет в момент фронта клока.
Программируемый мастер шины I2C на FPGA