Doka 4 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба Возможно ли такое в принципе: максимально упрощённый I2C slave, пусть это будет примитивный IO-expander (или даже O-expander для упрощения): мастер в него только пишет, никогда не читает. Т.о. от слейва потребуется только где надо (9й бит) драйвить SDA выдавая АСК. В принципе всё защёлкивание адресов, данных внутри слейва можно сделать по SCL, тоже самое с формированием АСК. Но вот в чём засада - так это то как детектировать START & STOP события? По классике: семплируются SCL & SDA доп. клоком, выявляется фронт/спад и детектируются START & STOP на основе задержанных на такт доп.клока и не задержанных SCL & SDA. Может ли в случае отсутствия дополнительного клока помочь какая-нить хитрая схема с защёлками вместо триггеров? PS: Теже микросхемы IO-expander'ов работают ведь без дополнительного внешнего клока (конечно может у них внутри RC-осциллятор, но тогда никакого low-power - раз там постоянно ножкой надо трепыхать). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба так то детектор фронта можно и без триггера сделать) на элементах задержки. но, емнп, где то в старых доках от хилых были асинхронные схемы, работающие за счет сигналов clrn/prn. там были детекторы фронта). ЗЫ. а вообще, если у вас зайлинкс семерка, то там есть встроенный генератор. можно внешний не ставить) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Самурай 12 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба В 01.06.2023 в 12:57, Doka сказал: В принципе всё защёлкивание адресов, данных внутри слейва можно сделать по SCL, тоже самое с формированием АСК. Но вот в чём засада - так это то как детектировать START & STOP события? Кто мешает защелкивать SCL передним/задним фронтом SDA?:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 79 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба https://www.fpga4fun.com/I2C_2.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Doka 4 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба 49 minutes ago, des00 said: если у вас зайлинкс семерка ASIC 21 minutes ago, _pv said: https://www.fpga4fun.com/I2C_2.html О, спасибо, это прям то! 🔥 Еще и особенности расписали: This code has two drawbacks: The SCL signal is used as a clock in the FPGA/CPLD. The use of a Schmitt trigger on the SCL input pin is strongly recommended to avoid erratic behavior (without Schmitt trigger, any noise or ringing on the SCL line may introduce extra clock cycles, which would break the functionality). The start and stop conditions detection logic uses a combinatorial feedback loop, which is not a recommended practice. Same thing on the "incycle" signal that is used as asynchronous reset by the rest of the logic. These are the price to pay to avoid using an oversampling clock. If you can live with these drawbacks, you get a very compact I2C slave design. Otherwise, use an external clock to oversample SDA and SCL (method 2). This way, glitches can be filtered out using digital filters, and the start and stop condition detected easily (at the price of a more complex design). 30 minutes ago, Самурай said: Кто мешает защелкивать SCL передним/задним фронтом SDA?:) Если этот способ без комбинационной петли, как описано в решении по ссылке выше, то прям интерtсно. Пока раскуриваю код, который fpga4fun нагородили. PS: Но всёже интересно что там внутри у I2C IO-expander. Тот же NXP ставит внутрь осциллятор или у них там одноклоковая (SCL) логика, но надёжная как K155ЛА3? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 79 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба 2 hours ago, Самурай said: Кто мешает защелкивать SCL передним/задним фронтом SDA?:) Никто не мешает, но это будет точно такая же асинхронная порнография как по ссылке fpga4fun, только на входе этого защёлкивателя, из xor на клоковом входе с выходом триггера, для защёлкивания обоих фронтов. Ровно с теми же проблемами чувствительности к звону на входе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Самурай 12 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба В 01.06.2023 в 16:09, _pv сказал: Никто не мешает, но это будет точно такая же асинхронная порнография как по ссылке fpga4fun, только на входе этого защёлкивателя, из xor на клоковом входе с выходом триггера, для защёлкивания обоих фронтов. Ровно с теми же проблемами чувствительности к звону на входе. Два триггера защелкивают SCL, первый по заднему фронту SDA, второй по переднему фронту SDA. Получаем два сигнала признака старта/стопа. Оба эти признака с автосбросом (синхронным), если, конечно по SDA не одни нули слать, что как-бы возможно, но очень маловероятно. Можно и асинхронный сброс придумать, дабы не зависеть от данных. Полностью от асинхронщины наверно не избавиться, но явной порнографии вроде нет:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Doka 4 1 июня, 2023 Опубликовано 1 июня, 2023 · Жалоба 8 hours ago, _pv said: https://www.fpga4fun.com/I2C_2.html изобразил схему отсюда, такое себе конечно решение с этими петлями комбинационными: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 2 июня, 2023 Опубликовано 2 июня, 2023 · Жалоба 8 hours ago, Doka said: изобразил схему отсюда, такое себе конечно решение с этими петлями комбинационными У вас же асик, по идее это не должно быть проблемой) а вообще, напишите SM, не поверю что он асике ни разу не делал и2ц) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Doka 4 2 июня, 2023 Опубликовано 2 июня, 2023 · Жалоба Совршенно неожиданно после долгих поисков наткнулся на это: Robust I2C slave without a sampling clock https://dlbeer.co.nz/articles/i2c.html А там прям подробное развитие идеи, предложенной Самурай: 8 hours ago, des00 said: У вас же асик, по идее это не должно быть проблемой) а вообще, напишите SM, не поверю что он асике ни разу не делал и2ц) да что-то наш гуру комбинационных петель и прочих асик-кульбитов давно не появлялся тут.. уж не сменил ли сферу интересов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 2 июня, 2023 Опубликовано 2 июня, 2023 · Жалоба 1 hour ago, Doka said: да что-то наш гуру комбинационных петель и прочих асик-кульбитов давно не появлялся тут.. уж не сменил ли сферу интересов? в плисах да, а на форуме он вроде недавно был) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться