|
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. Я и не обижаюсь. Хоть и МИФИ заканчивал, занимаюсь ну совсем не электроникой. Ну то есть, даже рядом не валялось  Да и в МИФИ два семестра всего электроники-то было....
|
|
|
|
|
Nov 23 2007, 06:21
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(Kitsok @ Nov 22 2007, 18:56)  Запутал окончательно  Да уж. Попробую еще раз и еще проще и от печки. SPI - синхронный интерфейс, т.е. синхронизация ведется по CLK мастера. Мастер и слэйв обмениваются информацией фиксированной длины. Для слэйва задержки неактуальны, т.к. входные данные (от мастера) и тактовая частота CLK (от мастера) имеют одинаковые задержки. Для мастера задержка актуальна, т.к. входные данные (от слэйва) и тактовая частота (мастера) имеют значительную задержку. Т.к. передающий механизм (и принимающий) регистры сдвига, то для мастера новая информация появится позже на 1 такт CLK (точнее раньше, но будет стоять). Т.е. мастер принимает информацию со сдвигом на 1 такт CLK. А решение этой проблемы приведено выше. PS. Проще уже никак.
|
|
|
|
|
Nov 28 2007, 13:56
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(alexander55 @ Nov 23 2007, 09:21)  Для мастера задержка актуальна, т.к. входные данные (от слэйва) и тактовая частота (мастера) имеют значительную задержку. Т.к. передающий механизм (и принимающий) регистры сдвига, то для мастера новая информация появится позже на 1 такт CLK (точнее раньше, но будет стоять). Т.е. мастер принимает информацию со сдвигом на 1 такт CLK. А решение этой проблемы приведено выше. PS. Проще уже никак. Смотрите, у меня сейчас стоит цепочка из 8 регистров ('165) - слейвов. CLK инвертирован относительно того, который идет на '595, все работает, т.е. мастер получает ожидаемую информацию в ожидаемое время (не помню уже точно, по-моему, спада CLK). Проблема возникнет когда цепочка будет настолько длинная, что задержка распространения CLK до регистра + время на переключение регистра превысит пол-периода CLK. Вот в этом случае - да, бит потеряется. Правильно я понимаю?
|
|
|
|
|
Nov 28 2007, 14:14
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(Kitsok @ Nov 28 2007, 16:56)  Смотрите, у меня сейчас стоит цепочка из 8 регистров ('165) - слейвов. CLK инвертирован относительно того, который идет на '595, все работает, т.е. мастер получает ожидаемую информацию в ожидаемое время (не помню уже точно, по-моему, спада CLK). Т.е. у Вас есть запас пол периода. Слэйв сдвинется раньше, чем требуется мастеру. Цитата(Kitsok @ Nov 28 2007, 16:56)  Проблема возникнет когда цепочка будет настолько длинная, что задержка распространения CLK до регистра + время на переключение регистра превысит пол-периода CLK. Вот в этом случае - да, бит потеряется. Правильно я понимаю? Почти. Проблема возникнет когда цепочка будет настолько длинная, что задержка распространения CLK до регистра + время на переключение регистра + время распространения данных от слэйва до мастера превысит Ваш запас. Вот в этом случае - да, бит потеряется.
|
|
|
|
|
Nov 29 2007, 08:14
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(alexander55 @ Nov 28 2007, 17:14)  Проблема возникнет когда цепочка будет настолько длинная, что задержка распространения CLK до регистра + время на переключение регистра + время распространения данных от слэйва до мастера превысит Ваш запас. Вот в этом случае - да, бит потеряется. Ну вот это я понимаю вроде Так вот вопрос - а как поможет 9-битная посылка? Да, будет запас у нас в период, и бит не потеряется, а "сдвинется". Но без обратной связи ведь не определить, на каком именно регистре произошла потеря?
|
|
|
|
|
Nov 29 2007, 08:40
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(Kitsok @ Nov 29 2007, 11:14)  Ну вот это я понимаю вроде  Замечательно. Лед тронулся, господа ...(И. и П.) Цитата(Kitsok @ Nov 29 2007, 11:14)  Так вот вопрос - а как поможет 9-битная посылка? Да, будет запас у нас в период, и бит не потеряется, а "сдвинется". Это значит, что это надо учесть. Цитата(Kitsok @ Nov 29 2007, 11:14)  Но без обратной связи ведь не определить, на каком именно регистре произошла потеря? Если Вы хотите анализировать (кто виноват и что делать (Чернышевский)), то посылайте заранее известную выдачу от слэйва.
|
|
|
|
|
Nov 29 2007, 09:20
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(alexander55 @ Nov 29 2007, 11:40)  Это значит, что это надо учесть. Для того, чтобы это учесть, нужно знать какой бит в каком 9-битном слове является не номером N, а номером N+1, а этого без обратной связи, не узнать. Цитата Если Вы хотите анализировать (кто виноват и что делать (Чернышевский)), то посылайте заранее известную выдачу от слэйва. Слейв - это просто регистры, к которым подключены кнопки, тумблеры и энкодеры. MOSI, исходящее от мастера, никогда не попадает никаким образом на MISO  Цепочки регистров на ввод и на вывод не связаны никак. Вот поэтому я и не могу понять, как поможет 9-битная посылка.
|
|
|
|
|
Nov 29 2007, 10:31
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Да уж... Цитата(Kitsok @ Nov 29 2007, 12:20)  Для того, чтобы это учесть, нужно знать какой бит в каком 9-битном слове является не номером N, а номером N+1, а этого без обратной связи, не узнать. Биты или сдвинуты все или не сдвинуты не один. Это фиксированная величина для конкретного слейва. Что за обратная связь я не понимаю. Цитата(Kitsok @ Nov 29 2007, 12:20)  Слейв - это просто регистры, к которым подключены кнопки, тумблеры и энкодеры. Понял Вас. Слейву информация от мастера не нужна. Цитата(Kitsok @ Nov 29 2007, 12:20)  MOSI, исходящее от мастера, никогда не попадает никаким образом на MISO  А кто Вам такое мог сказать ? Цитата(Kitsok @ Nov 29 2007, 12:20)  Цепочки регистров на ввод и на вывод не связаны никак. Вот поэтому я и не могу понять, как поможет 9-битная посылка. Объясняю, на Вашем примере. 1. По сигналу выбора слейв устройства, Вы пишете состояние кнопкок, тумблеров и энкодеров в регистр сдвига слейва (я так думаю). 2. По сигналу CLK передаваемая от мастера информация игнорируется слейвом. Это мы выяснили. 3. По сигналу CLK информация в регистре сдвига сдвигается, и поступает в мастер. 4. По своему же CLK мастер сдвигает принятую информацию. А теперь контрольные вопросы Вам, чтобы понять, где мы находимся. А. Что будет: - если информация от слейва на момент сдвига мастером еще не дошла - а если уже дошла. Б. Меняется ли задержка прихода информации для конкретного слейв устройства.
|
|
|
|
|
Nov 29 2007, 11:54
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(alexander55 @ Nov 29 2007, 13:31)  Биты или сдвинуты все или не сдвинуты не один. Это фиксированная величина для конкретного слейва. Что за обратная связь я не понимаю.  Вот тут я не понимаю. Получается, что если у меня сейчас работает с восемью 74HC165, то будет работать и с 8000? Сомневаюсь. Цитата Понял Вас. Слейву информация от мастера не нужна. А кто Вам такое мог сказать ? Это медицинский факт Цитата Объясняю, на Вашем примере. 1. По сигналу выбора слейв устройства, Вы пишете состояние кнопкок, тумблеров и энкодеров в регистр сдвига слейва (я так думаю). 2. По сигналу CLK передаваемая от мастера информация игнорируется слейвом. Это мы выяснили. Совершенно верны оба два утверждения Цитата 3. По сигналу CLK информация в регистре сдвига сдвигается, и поступает в мастер. 4. По своему же CLK мастер сдвигает принятую информацию. По тому-же CLK, только инвертированному. Или задержку при прохождении через инвертор тоже имеет смысл здесь учесть? Цитата А теперь контрольные вопросы Вам, чтобы понять, где мы находимся. А. Что будет: - если информация от слейва на момент сдвига мастером еще не дошла Бит потеряется где-то между двух регистров(n и n+1) посредине цепочки. В том месте, где на n задержка прохождения CLK еще меньше полупериода, а на n+1 - уже больше. Ключевой момент. Если Вам удастся мне объяснить, прав я или нет, то буду признателен чрезвычайно Цитата - а если уже дошла. То не потеряется Цитата Б. Меняется ли задержка прихода информации для конкретного слейв устройства. Я этот вопрос не понимаю, у меня одно слейв устройство, состоящее из длинного каскада сдвиговых регистров. Мне так кажется, что в цепочки из N-регистров по 8 бит каждый, и если считать бит номер 0 "ближайшим" к мастеру, то время прихода k-того бита зависит от длины проводов и от N. Цитата(Сергей Борщ @ Nov 29 2007, 14:25)  Привесьте в хвост цепочки еще один регистр, на входе которого выставьте заранее известное значение (0xA5). В принимаемом сигнале ищите эту комбинацию как маркер конца. Можно взять не A5 а какую-либо из последовательностей Баркера или Уилларда(?). Или еще лучше - формировать биты такой последовательности с прямого и инвесного выходов делителя на 2 сигнала загрузки входов регистра. Тогда на каждом цикле считывания будете иметь инвертированный маркер, существенно ниже вероятность спутать его с такой же комбинацией входных сигналов. А не поможет. Конец я найду, т.е. узнаю количество подключенных регистров. Но мне нужно выцепить конкретный теряющийся бит, поэтому нужно загнать в крайний регистр тестовую последовательность двойной максимально возможной длины и анализировать ее.
|
|
|
|
|
Nov 29 2007, 13:15
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(alexander55 @ Nov 29 2007, 15:20)  Т.е. Вы хотите сказать, что у Вас SPI не 8 битный, а 8*n битный. Ответьте на этот вопрос. Эээхм... Да. Объяснюсь. CS поднимается один раз перед передачей 4 кб (и, соответственно, приема 1 кб). На протяжении всех этих 4 кб мастер генерит CLK без сдвигов и задержек. Цитата(Сергей Борщ @ Nov 29 2007, 15:14)  Куда ему теряться? Проблема в том, что в зависимости от длины вашей цепочки вы можете получить на вход последовательность, задержанную на n бит, где n прямо пропорционально длине цепочки и может принимать значения от 0 до забора. Вам просто нужно принимать на байт больше и по положению маркера вычислять сдвиг принятых данных. Если я правильно понял. Вот и я не знаю. Здравый смысл подсказывает, что при небесконечной скорости света и наличии задержек при переключениях в микросхемах, цепочка не может работать при бесконечной длине. Но логика не подсказывает, где именно и какой произойдет сбой. Образно я вижу так - фронт сигнала (по которому должен происходить сдвиг в регистре) доезжает до некого k-того регистра с задержкой (относительно мастера) в полпериода. Т.е. когда тот k-тый регистр только выдвинул бит, мастер уже ожидает... стоп. Мастер далеко. Дыра что-ли получается в битовой последовательности? Ну не получается представить... ;(
|
|
|
|
|
Nov 29 2007, 15:31
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(rezident @ Nov 29 2007, 17:55)  Я вам еще в посте #22 объяснил как решается эта проблема. Каждый приемник (и мастера и слейва) тактируется своим собственным CLK. CLK приемника мастера этот тот же CLK, сгенерированный его собственным передатчиком, но прошедший путь до конца цепочки (с которого берется MISO) и обратно - CLK_RET. Такой способ используется во всех скоростных эмуляторах , которые работают с JTAG на десятках-сотнях МГц. Мне бы хотелось для начала осознать в деталях проблему О Вашем решении я помню. Только не очень представляю, как это реализовать с тем контроллером, который есть у меня (AT91SAM7S256). Программный SPI делать? Ну вот на это я точно не готов... Цитата(alexander55 @ Nov 29 2007, 17:18)  Хочется услышать результат (не зажимайте информацию). Вы меня заинтриговали.  Всепренепременнейше Цитата Параллелить со своими CS. Т.е. грубо хотя бы 1000 регистров - 1000 CS?
|
|
|
|
|
Nov 30 2007, 11:45
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(rezident @ Nov 29 2007, 18:42)  Например, для передачи используйте SPI, а для приема другой модуль синхронного приемопередатчика. Он вроде SSC у Atmel называется? Это мысль, попробую. Теперь чуть-чуть теоретических расчетов. Частота 12МГц, полпериода - 41.5 нс. Скорость света в проводе примерно 0.7C, 4.7 нс на метр. Делим одно на другое (и учитывая что мы можем позволить себе, скажем, 90% от половины периода), получаем чуть меньше 8 метров допустимой длины кабеля. Так?
|
|
|
|
|
Nov 30 2007, 12:26
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(alexander55 @ Nov 30 2007, 15:16)  Так. Если у Вас безиндуктивные цепи и логика переключается мгновенно.  И длину кабеля поделите пополам. Сигнал уходит и приходит. Вот я не могу понять, почему сигнал приходит и уходит? Когда до n-го бита доходит переключение CLK, он вдвигается в соседний триггер, а не в Master. А Master тактируется локально, а не отраженным от конца линии (????? а если там терминатор?) сигналом.
|
|
|
|
|
Nov 30 2007, 14:01
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(alexander55 @ Nov 30 2007, 15:45)  Для простоты считайте CLK входом черного ящика, а MISO выходом. И все станет на свои места. Не встает  Потому что даже если это - черный ящик, то всегда есть ближайший к контроллеру регистр, который будет выдавать на MISO данные через незначительное (в буквальном смысле) время после фронта CLK. Еще раз повторюсь, что моя схема представляет из себя условно говоря сдвиговый регистр длиною в 1024 (2048, 4096,...) байт, непосредственно подключенный к контроллеру. Внутри - да, там есть ощутимые задержки, но вот ближайший к контроллеру регистр работает практически синхронно с мастером.
|
|
|
|
Сообщений в этой теме
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               Kitsok Чувствую себя тупым хвойным деревом "Дуб... Nov 23 2007, 19:09                      Сергей Борщ Цитата(Kitsok @ Nov 29 2007, 13:54) Но мн... Nov 29 2007, 12:14                                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
|
|
|