|
SPI на 12 МГц через длинные провода |
|
|
|
Nov 20 2007, 17:41
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Добрый день!
Любительским образом разрабатываю устройство ввода-вывода для строительства "картонных кабин" для авиасимуляторщиков.
Непосредственно устройства ввода (кнопки, тумблеры, энкодеры) и вывода (светодиоды, 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, земля и сигналы будут перевиты.
Поскольку ни образования, ни опыта в высокочастотной электронике у меня нету, прощу помощь уважаемых знатоков - поможет ли затея с буфером и резисторами?
Заранее спасибо!
|
|
|
|
|
 |
Ответов
|
Nov 21 2007, 07:50
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
rezident,alexander55
По LVDS почитаю, но с одной стороны - 12 МГц, не перебор-ли, а с другой - насколько это удорожит систему и как передать общую землю через 4-парник? Ведь как я понял, используются дифф. пары, а у меня 4 сигнала. Хотя, два из них инвертированны.... В общем, буду думать.
bms Поскольку данные у меня как бы от крайнего регистра, то его надо змейкой пустить? И CS, наверное, тоже стоит так-же?
Про резисторы понял. Подтяг не нужно?
А вот про размножение клока - это сложно.... 4-парный кабель - это максимум 4 платы, т.е. на плате (при ограничении в 2048 регистров - это по 512 регистров на плату.... Либо делать плату размножителя клоков отдельную... В общем, буду думать, с точки зрения разъемов не очень понятно, как это сделать. Платы-то последовательно соединяются..
Спасибо большое за ответы!!!
|
|
|
|
|
Nov 21 2007, 20:47
|
Местный
  
Группа: Свой
Сообщений: 203
Регистрация: 11-08-05
Пользователь №: 7 545

|
Цитата(Kitsok @ Nov 21 2007, 10:50)  bms Поскольку данные у меня как бы от крайнего регистра, то его надо змейкой пустить? И CS, наверное, тоже стоит так-же?
Про резисторы понял. Подтяг не нужно?
А вот про размножение клока - это сложно.... 4-парный кабель - это максимум 4 платы, т.е. на плате (при ограничении в 2048 регистров - это по 512 регистров на плату.... Либо делать плату размножителя клоков отдельную... В общем, буду думать, с точки зрения разъемов не очень понятно, как это сделать. Платы-то последовательно соединяются.. Спасибо большое за ответы!!! Размножать клок можно непосредственно на плате. Схематично вариант такого размножения показан на рисунке. Ставите на входе каждой платы буфер-повторитель, через него заводите на регистры данные и размножаете клоки. Один из клоков и данные с последнего регистра выводите во внешний мир через резисторы согласования. Таким образом можно соединить сколько угодно плат. Резисторы подтяжки не нужны. Выравнивание клока и данных в этом случае получится автоматически - т.к. всё это будет передаваться через один 4-х парный кабель. Важно данные и клок протаскивать через один и тот же корпус буфера, т.е. берёте например счетверённый буфер, как на рисунке. Нельзя использовать разные корпуса (например не счетверённый корпус, а четыре отдельных корпуса), поскольку в этом случае разные корпуса будут иметь разные задержки и при большом числе плат данные и клок могут сильно "разъехаться" во времени. А в пределах одного (счетверённого например) корпуса задержки по всем буферам будут одинаковые.
Эскизы прикрепленных изображений
|
|
|
|
|
Nov 22 2007, 10:56
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(zltigo @ Nov 22 2007, 11:47)  Добавлю еще, что даже при задержках "скомпенсированных" на многочисленных буферах СLK и MOSI проблема разбега CLK и MISO стоит в полный рост, ибо составляет суммарную задержку передачи CLK туда и MISO обратно. Да, конечно. Вот простой расчетик. При длине кабеля 2 м, сигнал проходит растояние 4 м. Если сигнал распространяется со скоростью света 300 т.км/с, задержка составит 13,3 нс. Если учесть индуктивность кабеля и задержки чиповые (3-10 нс), то это значение может удвоиться-утроиться. Прикиньте, какой это фазовый сдвиг на 12 МГц. Более четверти до половины периода. Уже есть над чем задуматься.
|
|
|
|
|
Nov 22 2007, 11:37
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(alexander55 @ Nov 22 2007, 13:56)  Да, конечно. Вот простой расчетик. При длине кабеля 2 м, сигнал проходит растояние 4 м. Если сигнал распространяется со скоростью света 300 т.км/с, задержка составит 13,3 нс. Если учесть индуктивность кабеля и задержки чиповые (3-10 нс), то это значение может удвоиться-утроиться. Прикиньте, какой это фазовый сдвиг на 12 МГц. Более четверти до половины периода. Уже есть над чем задуматься.  Прошу прощения за нескромный вопрос, но может быть существуют какие-то устоявшиеся решения проблемы с разбегом? Или SPI совсем не предназначен для таких дел?
|
|
|
|
|
Nov 22 2007, 11:53
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Kitsok @ Nov 22 2007, 13:37)  Или SPI совсем не предназначен для таких дел? Не предназначен. Цитата Прошу прощения за нескромный вопрос, но может быть существуют какие-то устоявшиеся решения проблемы с разбегом? Устоявшиеся  . Для случаев, когда нужно пропускать/буферизировать десяткомегагерцовые SPI использую, например, 9bit посылки при этом лишний бит и лишний такт используется для компенсации задержки.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Nov 22 2007, 12:07
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(zltigo @ Nov 22 2007, 14:53)  Не предназначен. Устоявшиеся  . Для случаев, когда нужно пропускать/буферизировать десяткомегагерцовые SPI использую, например, 9bit посылки при этом лишний бит и лишний такт используется для компенсации задержки. Интересный ход. А как при этом определить, в каком бите у нас что пришло?
|
|
|
|
|
Nov 22 2007, 12:25
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Kitsok @ Nov 22 2007, 14:07)  Интересный ход. А как при этом определить, в каком бите у нас что пришло? На "трансляторе" производится стробирование принимаемых данных входной тактовой и таким образом вносится гарантированный сдвиг ровно на один бит. Передавать будете в первых восьми битах а принимать в последних восьми. P.S. А вообще так SPI c TTL уровнями использовать это махровое радиолюбительство  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Nov 22 2007, 13:56
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(zltigo @ Nov 22 2007, 15:25)  На "трансляторе" производится стробирование принимаемых данных входной тактовой и таким образом вносится гарантированный сдвиг ровно на один бит. Передавать будете в первых восьми битах а принимать в последних восьми. P.S. А вообще так SPI c TTL уровнями использовать это махровое радиолюбительство  . "Транслятор" - это как я понимаю, просто "И"? И ставить его надо в той точке, где сдвиг составляет аккурат пол-фазы? Поправьте плиз, если не так, я что-то механику процесса не понимаю. P.S. дык на профессионализм и не претендую ни разу.
|
|
|
|
|
Nov 22 2007, 16:18
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Kitsok @ Nov 22 2007, 15:56)  "Транслятор" - это как я понимаю, просто "И"? Транслятор это Ваше некое устройство при прохождении сигналов через которое неизбежно образуется задержка. "Ставить" его не надо оно у Вас неизбежно существует. Цитата(Kitsok @ Nov 22 2007, 17:56)  Как решение - поставить посредине 9-битный регистр? Разумеется нет. Цитата Если на мастере выставить 9 бит, то по вводу вроде особых проблем нет, а вот по выводу? Этот 9-й бит вылезет на первом-же регистре.... Так рассчитывайте на то, что вылезет. Цитата Ткните, пожалуйста, носом в ссылку, где эта проблема разбирается, если такие ссылке в природе есть... Сссылок нет. Придумано и реализовано было для пропуска 30MHz SPI через коммутатор на FPGA. Идея простая, вроде описал достаточно.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Nov 22 2007, 20:49
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(zltigo @ Nov 22 2007, 19:18)  Так рассчитывайте на то, что вылезет. Я, кажется, понял. Но для реализации идеи нужна "обратная связь", т.е. контроллер должен прочитать назад то, что послал. Это не мой случай, у меня ветки передачи и приема не связаны.... Можно, конечно, эмпирическим путем найти регистр, на котором этот 9-й бит на самом деле станет 8-м, но такая куча битовой арифметики, да на 2 килобайтах посылки...
|
|
|
|
|
Nov 22 2007, 22:57
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Kitsok @ Nov 22 2007, 22:49)  Но для реализации идеи нужна "обратная связь", т.е. контроллер должен прочитать назад то, что послал. Нееет! Цитата Можно, конечно, эмпирическим путем ... Какая 'эмпирика'? Все абсолютно предопределено при тактировании MISO следующим (противоположным) фронтом CLK. Сдвиг будет на один бит на каждом из "трансляторов" (если угодно - "регенераторов" ) включеных в цепочку.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
Kitsok SPI на 12 МГц через длинные провода Nov 20 2007, 17:41 rezident Может стоит для такого случая LVDS-драйверы/приемн... Nov 20 2007, 18:52        Сергей Борщ Цитата(Kitsok @ Nov 22 2007, 13:37) Прошу... Nov 22 2007, 11:51            alexander55 Цитата(Kitsok @ Nov 22 2007, 16:56) ... Nov 22 2007, 14:36             Kitsok Цитата(alexander55 @ Nov 22 2007, 17:36) ... Nov 22 2007, 15:56              alexander55 Цитата(Kitsok @ Nov 22 2007, 18:56) Запут... Nov 23 2007, 06:21               Kitsok Чувствую себя тупым хвойным деревом "Дуб... Nov 23 2007, 19:09               Kitsok Цитата(alexander55 @ Nov 23 2007, 09:21) ... Nov 28 2007, 13:56                alexander55 Цитата(Kitsok @ Nov 28 2007, 16:56) Смотр... Nov 28 2007, 14:14                 Kitsok Цитата(alexander55 @ Nov 28 2007, 17:14) ... Nov 29 2007, 08:14                  alexander55 Цитата(Kitsok @ Nov 29 2007, 11:14) Ну во... Nov 29 2007, 08:40                   Kitsok Цитата(alexander55 @ Nov 29 2007, 11:40) ... Nov 29 2007, 09:20                    alexander55 Да уж...
Цитата(Kitsok @ Nov 29 2007, 12... Nov 29 2007, 10:31                     Kitsok Цитата(alexander55 @ Nov 29 2007, 13:31) ... Nov 29 2007, 11:54                      Сергей Борщ Цитата(Kitsok @ Nov 29 2007, 13:54) Но мн... Nov 29 2007, 12:14                      alexander55 Цитата(Kitsok @ Nov 29 2007, 14:54) Бит п... Nov 29 2007, 12:20                       Kitsok Цитата(alexander55 @ Nov 29 2007, 15:20) ... Nov 29 2007, 13:15                        rezident Цитата(Kitsok @ Nov 29 2007, 18:15) Т.е. ... Nov 29 2007, 14:55                         Kitsok Цитата(rezident @ Nov 29 2007, 17:55) Я в... Nov 29 2007, 15:31                          rezident Цитата(Kitsok @ Nov 29 2007, 20:31) О Ваш... Nov 29 2007, 15:42                           Kitsok Цитата(rezident @ Nov 29 2007, 18:42) Нап... Nov 30 2007, 11:45                            alexander55 Цитата(Kitsok @ Nov 30 2007, 14:45) Это м... Nov 30 2007, 12:16                             Kitsok Цитата(alexander55 @ Nov 30 2007, 15:16) ... Nov 30 2007, 12:26                              alexander55 Цитата(Kitsok @ Nov 30 2007, 15:26) Вот я... Nov 30 2007, 12:45                               Kitsok Цитата(alexander55 @ Nov 30 2007, 15:45) ... Nov 30 2007, 14:01                                Сергей Борщ Цитата(Kitsok @ Nov 30 2007, 16:01) всегд... Nov 30 2007, 14:19                                alexander55 Цитата(Kitsok @ Nov 30 2007, 17:01) Не вс... Dec 3 2007, 07:36                                 Kitsok [quote name='alexander55' date='Dec 3 ... Dec 3 2007, 08:02                                  alexander55 Цитата(Kitsok @ Dec 3 2007, 11:02) ВОТ... Dec 3 2007, 08:08                                   Kitsok Цитата(alexander55 @ Dec 3 2007, 11:08) К... Dec 3 2007, 23:16                                    Kitsok Подумал и выдумал вот такую схему.
Наверху - с... Dec 5 2007, 23:09                          alexander55 Цитата(Kitsok @ Nov 29 2007, 18:31) Т.е. ... Nov 30 2007, 05:52                       alexander55 Цитата(alexander55 @ Nov 29 2007, 15:20) ... Nov 29 2007, 13:21                        Kitsok Цитата(alexander55 @ Nov 29 2007, 16:21) ... Nov 29 2007, 13:52                         alexander55 Цитата(Kitsok @ Nov 29 2007, 16:52) И вед... Nov 29 2007, 14:18                    Сергей Борщ Цитата(Kitsok @ Nov 29 2007, 11:20) Слейв... Nov 29 2007, 11:25        alexander55 Цитата(Kitsok @ Nov 22 2007, 14:37) Прошу... Nov 22 2007, 12:15 rezident В синхронных системах приема-передачи кроме выравн... Nov 23 2007, 17:51 rezident Господа, вы уже начинаете поражать отсутствием воо... Nov 30 2007, 14:18 rezident Плохая схема. Счетчик должен сбрасываться не сам п... Dec 5 2007, 23:18 Kitsok Цитата(rezident @ Dec 6 2007, 02:18) Плох... Dec 5 2007, 23:54 alexander55 Цитата(rezident @ Dec 6 2007, 02:18) Счет... Dec 6 2007, 08:27  Kitsok Цитата(alexander55 @ Dec 6 2007, 11:27) Т... Dec 6 2007, 11:30   alexander55 Цитата(Kitsok @ Dec 6 2007, 14:30) Высока... Dec 6 2007, 12:26    Kitsok Цитата(alexander55 @ Dec 6 2007, 15:26) Г... Dec 6 2007, 13:37     alexander55 Цитата(Kitsok @ Dec 6 2007, 16:37) Буду к... Dec 6 2007, 13:47      Kitsok Цитата(alexander55 @ Dec 6 2007, 16:47) Э... Dec 6 2007, 14:40       alexander55 Цитата(Kitsok @ Dec 6 2007, 17:40) К огро... Dec 7 2007, 05:27        Kitsok В общем-то, идея работает, но криво, поэтому появи... Mar 18 2008, 14:36 rezident Kitsok, Вы до сих пор не описали, зачем вообще нуж... Dec 6 2007, 09:09 Terrabyte хотел применить NCV7608 в каскаде несколько таки... Feb 19 2014, 20:20 Kitsok Приятно почитать себя самого через 6 лет.
Доклад... Apr 25 2014, 20:12 svetlika Чувствую себя тупым хвойным деревом "Дуб... Jun 5 2014, 04:22
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|