Kitsok 0 20 ноября, 2007 Опубликовано 20 ноября, 2007 · Жалоба Добрый день! Любительским образом разрабатываю устройство ввода-вывода для строительства "картонных кабин" для авиасимуляторщиков. Непосредственно устройства ввода (кнопки, тумблеры, энкодеры) и вывода (светодиоды, 7-сегментные индикаторы) подключаются к сдвиговым регистрам ('165 и '595), регистры каскадированы и подключены к контроллеру, к SPI-порту через преобразователь уровней 3.3<->5 ADG3304 и инвертор '04 (нужен для инвертирования CS для '165. Частота SPI выбрана равной 12 МГц из соображений производительности контроллера, периода опроса энкодеров и т.д. Имеется разведенная плата, на ней - ветка из 8 '165 и 8 '595. Дальше шина оканчивается разъемом RJ-45, где имеется 4 сигнала и 4 "земли". Предполагается подключать дальше цепочкой следующие платы с регистрами(модули), делая таким образом длинную цепочку из сдвиговых регистров. Последовательных резисторов на сигнальных линиях , впрочем как и подтяжек не стоит.... При подключении оконечных устройств непосредственно к плате никаких проблем нет, все работает как и задумано. Опыты показали, что если подключить к этому RJ-45 произвольной длины (от 5 сантиметоров до 2 метров) кабель, то вся работа шины останавливается. Осцилографом еще не смотрел, но предполагаю завалы фронтов и, возможно, звон. Я так предполагаю, что если уж кабель вызывает отказ работы шины, то никакими ухищирениями со стороны модуля ситуацию исправить не получится, и нужно переделывать схему и переразводить плату. Как решение предполагаю установку подтягивающих к +5 резисторов, буфера типа '125 и проходных резисторов 20-50 ом. Аналогичную схему планирую также ставить на всех последующих модулях. Соединяться все это хозяйство будет неэкранированной витой парой CAT5, земля и сигналы будут перевиты. Поскольку ни образования, ни опыта в высокочастотной электронике у меня нету, прощу помощь уважаемых знатоков - поможет ли затея с буфером и резисторами? Заранее спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 20 ноября, 2007 Опубликовано 20 ноября, 2007 · Жалоба Может стоит для такого случая LVDS-драйверы/приемники применить? По крайней мере сигналы, подаваемые на разъем, пробуферировать нужно в любом случае. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bms 0 20 ноября, 2007 Опубликовано 20 ноября, 2007 · Жалоба Достаточно сделать две вещи: 1. Клок от "мастера" размножить на буфере и завести на каждую плату СВОЙ. 2. В цепях данных и клока поставить полследовательные резисторы номиналом 82 Ом (для согласования с CAT5). Резисторы ставить строго на передающей стороне. Да, еще. Желательно, в случае если провода от платы до платы будут длинными - выровнять по длине линии данных и клока. Это конечно потребует несколько переделать то, что у Вас уже есть, но это единственное дешёвое и надёжное решение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexander55 0 21 ноября, 2007 Опубликовано 21 ноября, 2007 · Жалоба Рекомендую посмотреть http://www.gaw.ru/html.cgi/txt/interface/lvds/lvds.htm Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kitsok 0 21 ноября, 2007 Опубликовано 21 ноября, 2007 · Жалоба rezident,alexander55 По LVDS почитаю, но с одной стороны - 12 МГц, не перебор-ли, а с другой - насколько это удорожит систему и как передать общую землю через 4-парник? Ведь как я понял, используются дифф. пары, а у меня 4 сигнала. Хотя, два из них инвертированны.... В общем, буду думать. bms Поскольку данные у меня как бы от крайнего регистра, то его надо змейкой пустить? И CS, наверное, тоже стоит так-же? Про резисторы понял. Подтяг не нужно? А вот про размножение клока - это сложно.... 4-парный кабель - это максимум 4 платы, т.е. на плате (при ограничении в 2048 регистров - это по 512 регистров на плату.... Либо делать плату размножителя клоков отдельную... В общем, буду думать, с точки зрения разъемов не очень понятно, как это сделать. Платы-то последовательно соединяются.. Спасибо большое за ответы!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bms 0 21 ноября, 2007 Опубликовано 21 ноября, 2007 · Жалоба bms Поскольку данные у меня как бы от крайнего регистра, то его надо змейкой пустить? И CS, наверное, тоже стоит так-же? Про резисторы понял. Подтяг не нужно? А вот про размножение клока - это сложно.... 4-парный кабель - это максимум 4 платы, т.е. на плате (при ограничении в 2048 регистров - это по 512 регистров на плату.... Либо делать плату размножителя клоков отдельную... В общем, буду думать, с точки зрения разъемов не очень понятно, как это сделать. Платы-то последовательно соединяются.. Спасибо большое за ответы!!! Размножать клок можно непосредственно на плате. Схематично вариант такого размножения показан на рисунке. Ставите на входе каждой платы буфер-повторитель, через него заводите на регистры данные и размножаете клоки. Один из клоков и данные с последнего регистра выводите во внешний мир через резисторы согласования. Таким образом можно соединить сколько угодно плат. Резисторы подтяжки не нужны. Выравнивание клока и данных в этом случае получится автоматически - т.к. всё это будет передаваться через один 4-х парный кабель. Важно данные и клок протаскивать через один и тот же корпус буфера, т.е. берёте например счетверённый буфер, как на рисунке. Нельзя использовать разные корпуса (например не счетверённый корпус, а четыре отдельных корпуса), поскольку в этом случае разные корпуса будут иметь разные задержки и при большом числе плат данные и клок могут сильно "разъехаться" во времени. А в пределах одного (счетверённого например) корпуса задержки по всем буферам будут одинаковые. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gte 6 22 ноября, 2007 Опубликовано 22 ноября, 2007 · Жалоба времени. А в пределах одного (счетверённого например) корпуса задержки по всем буферам будут одинаковые. А данные, прошедшие через SPI устройство, пройдут с нулевой задержкой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 22 ноября, 2007 Опубликовано 22 ноября, 2007 · Жалоба А данные, прошедшие через SPI устройство, пройдут с нулевой задержкой? Добавлю еще, что даже при задержках "скомпенсированных" на многочисленных буферах СLK и MOSI проблема разбега CLK и MISO стоит в полный рост, ибо составляет суммарную задержку передачи CLK туда и MISO обратно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexander55 0 22 ноября, 2007 Опубликовано 22 ноября, 2007 · Жалоба Добавлю еще, что даже при задержках "скомпенсированных" на многочисленных буферах СLK и MOSI проблема разбега CLK и MISO стоит в полный рост, ибо составляет суммарную задержку передачи CLK туда и MISO обратно. Да, конечно. Вот простой расчетик. При длине кабеля 2 м, сигнал проходит растояние 4 м. Если сигнал распространяется со скоростью света 300 т.км/с, задержка составит 13,3 нс. Если учесть индуктивность кабеля и задержки чиповые (3-10 нс), то это значение может удвоиться-утроиться. Прикиньте, какой это фазовый сдвиг на 12 МГц. Более четверти до половины периода. Уже есть над чем задуматься. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kitsok 0 22 ноября, 2007 Опубликовано 22 ноября, 2007 · Жалоба Да, конечно. Вот простой расчетик. При длине кабеля 2 м, сигнал проходит растояние 4 м. Если сигнал распространяется со скоростью света 300 т.км/с, задержка составит 13,3 нс. Если учесть индуктивность кабеля и задержки чиповые (3-10 нс), то это значение может удвоиться-утроиться. Прикиньте, какой это фазовый сдвиг на 12 МГц. Более четверти до половины периода. Уже есть над чем задуматься. :) Прошу прощения за нескромный вопрос, но может быть существуют какие-то устоявшиеся решения проблемы с разбегом? Или SPI совсем не предназначен для таких дел? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 22 ноября, 2007 Опубликовано 22 ноября, 2007 · Жалоба Прошу прощения за нескромный вопрос, но может быть существуют какие-то устоявшиеся решения проблемы с разбегом? Или SPI совсем не предназначен для таких дел?Приходит в голову использование для приема второго SPI в режиме slave, на который подается CLK с того же регистра, с которого и снимается MOSI. Остается вопрос - где взять еще одну пару в кабеле. А еще могу порекомендовать книжку "Синхронизация в телекоммуникационных системах" - там много интересных решений описано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 22 ноября, 2007 Опубликовано 22 ноября, 2007 · Жалоба Или SPI совсем не предназначен для таких дел? Не предназначен. Прошу прощения за нескромный вопрос, но может быть существуют какие-то устоявшиеся решения проблемы с разбегом? Устоявшиеся :). Для случаев, когда нужно пропускать/буферизировать десяткомегагерцовые SPI использую, например, 9bit посылки при этом лишний бит и лишний такт используется для компенсации задержки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kitsok 0 22 ноября, 2007 Опубликовано 22 ноября, 2007 · Жалоба Не предназначен. Устоявшиеся :). Для случаев, когда нужно пропускать/буферизировать десяткомегагерцовые SPI использую, например, 9bit посылки при этом лишний бит и лишний такт используется для компенсации задержки. Интересный ход. А как при этом определить, в каком бите у нас что пришло? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexander55 0 22 ноября, 2007 Опубликовано 22 ноября, 2007 · Жалоба Прошу прощения за нескромный вопрос, но может быть существуют какие-то устоявшиеся решения проблемы с разбегом? Или SPI совсем не предназначен для таких дел? Устоявшегося (или устоявшевося) решения нет (готового). SPI - это синхронный интерфейс для SWAP. Его преимущество проявляется при близком расположении SPI-устройств (на одной плате или набираемом блоке). PS. При больших длинах посмотрите в сторону снижения CLK. Или изменения алгоритма функционирования (например, аппаратного SPI с учетом задержек от каждого SPI) или вариант Сергея. Интересный ход. А как при этом определить, в каком бите у нас что пришло? Да, Вам zltigo предложил классный вариант (можно сказать, гениальный). Используйте тестовую посылку для выявления где мухи, где котлеты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 22 ноября, 2007 Опубликовано 22 ноября, 2007 · Жалоба Интересный ход. А как при этом определить, в каком бите у нас что пришло? На "трансляторе" производится стробирование принимаемых данных входной тактовой и таким образом вносится гарантированный сдвиг ровно на один бит. Передавать будете в первых восьми битах а принимать в последних восьми. P.S. А вообще так SPI c TTL уровнями использовать это махровое радиолюбительство :(. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться