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

 
 
> 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
alexander55
сообщение Nov 22 2007, 14:36
Сообщение #14


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

Группа: Свой
Сообщений: 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. Надеюсь, не запутал Вас окончательно.
Go to the top of the page
 
+Quote Post
Kitsok
сообщение Nov 22 2007, 15:56
Сообщение #15


Местный
***

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



Цитата(alexander55 @ Nov 22 2007, 17:36) *
Не правильно, попробую перевести слова нашего уважаемого гуру на простой язык.

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

Транслятор - это регистр сдвига, но с дополнительным битом.
Можно посмотреть на примере LPC2xxx.
Это значит. Выставлен формат не 8 бит, а 9 бит или даже более.

/*Передавать будете в первых восьми битах а принимать в последних восьми.*/
Это значит, что мастер полезную информацию передает без смещения, а принятую информацию рассматривает как сдвинутую на 1 бит, т.к. самый первый принятый бит пройдет со смещением на такт из-за задержек. Т.е. формально принятый первый бит для мастера - это еще не информация.
Не обижайтесь.

PS. Надеюсь, не запутал Вас окончательно.


Запутал окончательно wink.gif Да и день тяжелый был, поэтому попробую еще проще, поправьте плиз.

Есть длинная цепочка сдвиговых регистров, работающих, допустим на ввод, т.е. от ближайшего к контроллеру регистра идет MISO. Регистры все 8-битрые, параллельный ввод - последовательный вывод. Допустим, регистр выдает данные данные по фронту CLK, мастер забирает их по спаду.

Вдоль цепочки растет сдвиг по фазе
Проблема: если цепочка достаточно длинная, да еще и буферы на CLK стоят, то пока фронт "доедет" до последнего регистра, и тот выдаст данные на свой серийный выход, мастер уже давно опустил CLK и ожидает на входе получить бит.
По мере удаления от мастера разбег увеличивается, и получается так, что очередной регистр пропускает бит от соседа. Пока правильно?

Как решение - поставить посредине 9-битный регистр? Вот тут я уже нахожусь в клинах....

Если на мастере выставить 9 бит, то по вводу вроде особых проблем нет, а вот по выводу? Этот 9-й бит вылезет на первом-же регистре....

Ткните, пожалуйста, носом в ссылку, где эта проблема разбирается, если такие ссылке в природе есть...

P.S. Я и не обижаюсь. Хоть и МИФИ заканчивал, занимаюсь ну совсем не электроникой. Ну то есть, даже рядом не валялось wink.gif Да и в МИФИ два семестра всего электроники-то было....
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, 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


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

 


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


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