|
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, 14:36
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(Kitsok @ Nov 22 2007, 16:56)  "Транслятор" - это как я понимаю, просто "И"? И ставить его надо в той точке, где сдвиг составляет аккурат пол-фазы? Поправьте плиз, если не так, я что-то механику процесса не понимаю. Не правильно, попробую перевести слова нашего уважаемого гуру на простой язык. /*На "трансляторе" производится стробирование принимаемых данных входной тактовой и таким образом вносится гарантированный сдвиг ровно на один бит. */ Транслятор - это регистр сдвига, но с дополнительным битом. Можно посмотреть на примере LPC2xxx. Это значит. Выставлен формат не 8 бит, а 9 бит или даже более. /*Передавать будете в первых восьми битах а принимать в последних восьми.*/ Это значит, что мастер полезную информацию передает без смещения, а принятую информацию рассматривает как сдвинутую на 1 бит, т.к. самый первый принятый бит пройдет со смещением на такт из-за задержек. Т.е. формально принятый первый бит для мастера - это еще не информация. Цитата(Kitsok @ Nov 22 2007, 16:56)  P.S. дык на профессионализм и не претендую ни разу. Не обижайтесь. PS. Надеюсь, не запутал Вас окончательно.
|
|
|
|
|
Nov 22 2007, 15:56
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(alexander55 @ Nov 22 2007, 17:36)  Не правильно, попробую перевести слова нашего уважаемого гуру на простой язык.
/*На "трансляторе" производится стробирование принимаемых данных входной тактовой и таким образом вносится гарантированный сдвиг ровно на один бит. */
Транслятор - это регистр сдвига, но с дополнительным битом. Можно посмотреть на примере LPC2xxx. Это значит. Выставлен формат не 8 бит, а 9 бит или даже более.
/*Передавать будете в первых восьми битах а принимать в последних восьми.*/ Это значит, что мастер полезную информацию передает без смещения, а принятую информацию рассматривает как сдвинутую на 1 бит, т.к. самый первый принятый бит пройдет со смещением на такт из-за задержек. Т.е. формально принятый первый бит для мастера - это еще не информация. Не обижайтесь. PS. Надеюсь, не запутал Вас окончательно. Запутал окончательно  Да и день тяжелый был, поэтому попробую еще проще, поправьте плиз. Есть длинная цепочка сдвиговых регистров, работающих, допустим на ввод, т.е. от ближайшего к контроллеру регистра идет MISO. Регистры все 8-битрые, параллельный ввод - последовательный вывод. Допустим, регистр выдает данные данные по фронту CLK, мастер забирает их по спаду. Вдоль цепочки растет сдвиг по фазе Проблема: если цепочка достаточно длинная, да еще и буферы на CLK стоят, то пока фронт "доедет" до последнего регистра, и тот выдаст данные на свой серийный выход, мастер уже давно опустил CLK и ожидает на входе получить бит. По мере удаления от мастера разбег увеличивается, и получается так, что очередной регистр пропускает бит от соседа. Пока правильно? Как решение - поставить посредине 9-битный регистр? Вот тут я уже нахожусь в клинах.... Если на мастере выставить 9 бит, то по вводу вроде особых проблем нет, а вот по выводу? Этот 9-й бит вылезет на первом-же регистре.... Ткните, пожалуйста, носом в ссылку, где эта проблема разбирается, если такие ссылке в природе есть... P.S. Я и не обижаюсь. Хоть и МИФИ заканчивал, занимаюсь ну совсем не электроникой. Ну то есть, даже рядом не валялось  Да и в МИФИ два семестра всего электроники-то было....
|
|
|
|
Сообщений в этой теме
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, 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            zltigo Цитата(Kitsok @ Nov 22 2007, 15:56) ... Nov 22 2007, 16:18             Kitsok Цитата(zltigo @ Nov 22 2007, 19:18) Так р... Nov 22 2007, 20:49              zltigo Цитата(Kitsok @ Nov 22 2007, 22:49) Но дл... Nov 22 2007, 22:57        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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|