Цитата(RobFPGA @ Mar 16 2017, 12:45)

Приветствую!
С какой это стати КЗ?
Код
assign SDA = (sda_oe_n==1'b0) ? 1'b0 : 1'bz;
Тоесть пин либо в Z (висит в воздухе) либо в 0. К VCC никогда не подключается, вот поэтому и нужны внешние резисторы на VCC.
Успехов! Rob.
Ну кончено ! Как я мог забыть !

У нас же ток пойдет от источника, через подтягивающие резисторы, через токоограничивающий резистор на макетной плате, в пин, а затем в землю. И таким образом линия линия станет нулём. Хм... Вроде логично.
Возник вопрос тогда, как правильнее моделировать на VHDL линию подтянутую к питанию ?
Написал модуль тестбенча, которые генерирует сигналы SDI и SCL (по сути написал Master'a выдающий нужные мне значения). Соответственно если мастер присваивает линиям SDI и SCL лог. 1, а Slave присваивает им лог.0 я получаю закономерные X при моделировании, поскольку так устроена разрешающая функция в VHDL для типа STD_LOGIC.
Присваивать этим линиям значение слабой единицы, т.е "Н" - то-же не самая лучшая идея. Поскольку Slave устройство в итоге вместо нормальных данных (единицы и нули) принимает значения H.
И в итоге регистр вместо байта B"1111_1111" содержит B"HHHH_HHHH".
Думаю, что правильнее либо писать собственную функцию разрешения. Либо функцию, которая из "H" значения делает лог единицу. Как бы вы смоделировали это ?
Сообщение отредактировал Flip-fl0p - Mar 16 2017, 10:37