реклама на сайте
подробности

 
 
> SPI на 12 МГц через длинные провода
Kitsok
сообщение Nov 20 2007, 17:41
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 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, земля и сигналы будут перевиты.

Поскольку ни образования, ни опыта в высокочастотной электронике у меня нету, прощу помощь уважаемых знатоков - поможет ли затея с буфером и резисторами?

Заранее спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bms
сообщение Nov 20 2007, 20:25
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 11-08-05
Пользователь №: 7 545



Достаточно сделать две вещи:
1. Клок от "мастера" размножить на буфере и завести на каждую плату СВОЙ.
2. В цепях данных и клока поставить полследовательные резисторы номиналом 82 Ом (для согласования с CAT5). Резисторы ставить строго на передающей стороне.

Да, еще. Желательно, в случае если провода от платы до платы будут длинными - выровнять по длине линии данных и клока.

Это конечно потребует несколько переделать то, что у Вас уже есть, но это единственное дешёвое и надёжное решение.
Go to the top of the page
 
+Quote Post
alexander55
сообщение Nov 21 2007, 06:39
Сообщение #3


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Рекомендую посмотреть
http://www.gaw.ru/html.cgi/txt/interface/lvds/lvds.htm
Go to the top of the page
 
+Quote Post
Kitsok
сообщение Nov 21 2007, 07:50
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



rezident,alexander55

По LVDS почитаю, но с одной стороны - 12 МГц, не перебор-ли, а с другой - насколько это удорожит систему и как передать общую землю через 4-парник? Ведь как я понял, используются дифф. пары, а у меня 4 сигнала. Хотя, два из них инвертированны.... В общем, буду думать.



bms
Поскольку данные у меня как бы от крайнего регистра, то его надо змейкой пустить? И CS, наверное, тоже стоит так-же?

Про резисторы понял. Подтяг не нужно?

А вот про размножение клока - это сложно.... 4-парный кабель - это максимум 4 платы, т.е. на плате (при ограничении в 2048 регистров - это по 512 регистров на плату.... Либо делать плату размножителя клоков отдельную... В общем, буду думать, с точки зрения разъемов не очень понятно, как это сделать. Платы-то последовательно соединяются..


Спасибо большое за ответы!!!
Go to the top of the page
 
+Quote Post
bms
сообщение Nov 21 2007, 20:47
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 11-08-05
Пользователь №: 7 545



Цитата(Kitsok @ Nov 21 2007, 10:50) *
bms
Поскольку данные у меня как бы от крайнего регистра, то его надо змейкой пустить? И CS, наверное, тоже стоит так-же?

Про резисторы понял. Подтяг не нужно?

А вот про размножение клока - это сложно.... 4-парный кабель - это максимум 4 платы, т.е. на плате (при ограничении в 2048 регистров - это по 512 регистров на плату.... Либо делать плату размножителя клоков отдельную... В общем, буду думать, с точки зрения разъемов не очень понятно, как это сделать. Платы-то последовательно соединяются..
Спасибо большое за ответы!!!


Размножать клок можно непосредственно на плате. Схематично вариант такого размножения показан на рисунке. Ставите на входе каждой платы буфер-повторитель, через него заводите на регистры данные и размножаете клоки. Один из клоков и данные с последнего регистра выводите во внешний мир через резисторы согласования. Таким образом можно соединить сколько угодно плат.

Резисторы подтяжки не нужны.
Выравнивание клока и данных в этом случае получится автоматически - т.к. всё это будет передаваться через один 4-х парный кабель.
Важно данные и клок протаскивать через один и тот же корпус буфера, т.е. берёте например счетверённый буфер, как на рисунке. Нельзя использовать разные корпуса (например не счетверённый корпус, а четыре отдельных корпуса), поскольку в этом случае разные корпуса будут иметь разные задержки и при большом числе плат данные и клок могут сильно "разъехаться" во времени. А в пределах одного (счетверённого например) корпуса задержки по всем буферам будут одинаковые.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
gte
сообщение Nov 22 2007, 07:24
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 318
Регистрация: 13-02-05
Из: Липецкая область
Пользователь №: 2 613



Цитата(bms @ Nov 21 2007, 23:47) *
времени. А в пределах одного (счетверённого например) корпуса задержки по всем буферам будут одинаковые.


А данные, прошедшие через SPI устройство, пройдут с нулевой задержкой?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 22 2007, 08:47
Сообщение #7


Гуру
******

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



Цитата(gte @ Nov 22 2007, 09:24) *
А данные, прошедшие через SPI устройство, пройдут с нулевой задержкой?

Добавлю еще, что даже при задержках "скомпенсированных" на многочисленных буферах СLK и MOSI проблема разбега CLK и MISO стоит в полный рост, ибо составляет суммарную задержку передачи CLK туда и MISO обратно.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
alexander55
сообщение Nov 22 2007, 10:56
Сообщение #8


Бывалый
*****

Группа: Свой
Сообщений: 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 МГц. Более четверти до половины периода.
Уже есть над чем задуматься. smile.gif
Go to the top of the page
 
+Quote Post
Kitsok
сообщение Nov 22 2007, 11:37
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



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


Прошу прощения за нескромный вопрос, но может быть существуют какие-то устоявшиеся решения проблемы с разбегом? Или SPI совсем не предназначен для таких дел?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 22 2007, 11:53
Сообщение #10


Гуру
******

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



Цитата(Kitsok @ Nov 22 2007, 13:37) *
Или SPI совсем не предназначен для таких дел?

Не предназначен.
Цитата
Прошу прощения за нескромный вопрос, но может быть существуют какие-то устоявшиеся решения проблемы с разбегом?

Устоявшиеся smile.gif. Для случаев, когда нужно пропускать/буферизировать десяткомегагерцовые SPI использую, например, 9bit посылки при этом лишний бит и лишний такт используется для компенсации задержки.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Kitsok
сообщение Nov 22 2007, 12:07
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



Цитата(zltigo @ Nov 22 2007, 14:53) *
Не предназначен.

Устоявшиеся smile.gif. Для случаев, когда нужно пропускать/буферизировать десяткомегагерцовые SPI использую, например, 9bit посылки при этом лишний бит и лишний такт используется для компенсации задержки.


Интересный ход. А как при этом определить, в каком бите у нас что пришло?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 22 2007, 12:25
Сообщение #12


Гуру
******

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



Цитата(Kitsok @ Nov 22 2007, 14:07) *
Интересный ход. А как при этом определить, в каком бите у нас что пришло?

На "трансляторе" производится стробирование принимаемых данных входной тактовой и таким образом вносится гарантированный сдвиг ровно на один бит. Передавать будете в первых восьми битах а принимать в последних восьми.


P.S.
А вообще так SPI c TTL уровнями использовать это махровое радиолюбительство sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Kitsok
сообщение Nov 22 2007, 13:56
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



Цитата(zltigo @ Nov 22 2007, 15:25) *
На "трансляторе" производится стробирование принимаемых данных входной тактовой и таким образом вносится гарантированный сдвиг ровно на один бит. Передавать будете в первых восьми битах а принимать в последних восьми.
P.S.
А вообще так SPI c TTL уровнями использовать это махровое радиолюбительство sad.gif.


"Транслятор" - это как я понимаю, просто "И"? И ставить его надо в той точке, где сдвиг составляет аккурат пол-фазы? Поправьте плиз, если не так, я что-то механику процесса не понимаю.

P.S. дык на профессионализм и не претендую ни разу.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 22 2007, 16:18
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
Kitsok
сообщение Nov 22 2007, 20:49
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



Цитата(zltigo @ Nov 22 2007, 19:18) *
Так рассчитывайте на то, что вылезет.


Я, кажется, понял.
Но для реализации идеи нужна "обратная связь", т.е. контроллер должен прочитать назад то, что послал. Это не мой случай, у меня ветки передачи и приема не связаны....
Можно, конечно, эмпирическим путем найти регистр, на котором этот 9-й бит на самом деле станет 8-м, но такая куча битовой арифметики, да на 2 килобайтах посылки...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 22 2007, 22:57
Сообщение #16


Гуру
******

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



Цитата(Kitsok @ Nov 22 2007, 22:49) *
Но для реализации идеи нужна "обратная связь", т.е. контроллер должен прочитать назад то, что послал.

Нееет!
Цитата
Можно, конечно, эмпирическим путем ...

Какая 'эмпирика'? Все абсолютно предопределено при тактировании MISO
следующим (противоположным) фронтом CLK. Сдвиг будет на один бит на каждом из "трансляторов" (если угодно - "регенераторов" ) включеных в цепочку.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 07:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01775 секунд с 7
ELECTRONIX ©2004-2016