|
Как сделать мост I2C на Xilinx? |
|
|
|
Apr 6 2014, 10:27
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Народ извините, в VHDL и Verilog ни бум бум, а надо пару строчек кода придумать.
Короче есть шина i2c, назовем ее А, которая одним концом (SCL, SDA) подключена к пинам FPGA, а на других висят несколько периферии - тактовый генератор, датчики температуры и питания. FPGA вроде как мастер.
Но также есть и еще одна I2C шина B, концы которой заведены на эту же FPGA, и которая управляется внешним МК. Помимо самой ФПГА на этой шине тоже висит еще несколько устройств.
В общем для того, чтобы не лепить в ПЛИСине I2C мастер, а потом еще и I2C слейв и как-то эмулировать все это дело, появилось желание просто каким-то образом закоротить SDA и SCL пины этих двух шин через FPGA. Вопрос собственно в бинаправленности SDA. Т.е. по идее логика должна быть такой, что по умолчанию SDA пины обеих шин в ПЛИС - это входы. На них будет высокий уровень. Если на одном из входов появляется низкий уровень, то другой переключается на выход и тоже начинает генерить ноль.
В общем логика я думаю понятно. Вопрос в том - можно ли такое реализовать малой кровью и как? Спасибо.
|
|
|
|
|
 |
Ответов
|
Apr 7 2014, 06:37
|
Знающий
   
Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650

|
Цитата(alexadmin @ Apr 7 2014, 11:02)  Что-то, мэтры, вы перемудрили. У автора совершенно правильный начальный посыл - если на линии SDA любого интерфейса активное состояние (0), то надо его транслировать на SDA другого интерфейса и ждать пока первый отпустит линию, после чего отпускать и другую. Мультимастеринга нет, так что конфликтов возникать не должно. Единственное, надо пересэмплировать это все на достаточно высокой частоте, чтобы вносить задержку поменьше в линию передачи данных. Получается банальное управляющее устройство (даже конечным автоматом не назвать) на 3 состояния и 15 строк кода. В принципе можно и таким автоматом обойтись, только я бы ещё добавил хотя бы простенький антидребезг, а то некоторые I2C устройства очень не любят глитчи по данным.
|
|
|
|
Сообщений в этой теме
syoma Как сделать мост I2C на Xilinx? Apr 6 2014, 10:27 Maverick Цитата(syoma @ Apr 6 2014, 13:27) Народ и... Apr 6 2014, 10:53 Bad0512 Цитата(syoma @ Apr 6 2014, 17:27) Народ и... Apr 6 2014, 12:50 Victor® Цитата(Bad0512 @ Apr 6 2014, 15:50) Задач... Apr 6 2014, 17:37  Bad0512 Цитата(Victor® @ Apr 7 2014, 00:37) Абсол... Apr 7 2014, 00:37   iosifk Цитата(Bad0512 @ Apr 7 2014, 04:37) Поэто... Apr 7 2014, 01:02 ZASADA в свое время распаралеливал шину I2C, ничего сложн... Apr 6 2014, 16:25 andreichk http://www.fpga4fun.com/I2C.html
проверено на связ... Apr 6 2014, 17:49 syoma Я так подозреваю, что мне пытаются сказать, что в ... Apr 7 2014, 06:38 svss Любопытная тема. Есть всё:Цитата- Короче есть... Dec 8 2014, 07:16 egorman44 Если у Вас есть тактовая достаточно большая что-бы... Dec 8 2014, 08:12
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|