Перейти к содержанию
    

Зачем в SPI синхронизация по разным фронтам

Собственно, почему там не обычные сдвиговые регистры, а по отдельным фронтам защелка, по отдельным - выдача на линию...

Ведь, вроде бы, по одному фронту вообще все хорошо выходит...

joBRC0fCfq4.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... по отдельным фронтам защелка, по отдельным - выдача на линию...

Насколько я помню, там по одному и тому же фронту и защелкивание данных от передатчика, и выдача данных приемнику. Просто у Slave - устройства линии разные на прием и на передачу - MOSI и MISO. Или я вопроса не понял ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

SPI - вот, по разным фронтам CLK (синяя и красная линии) происходит так называемая "защелка" и "сдвиг".

Но ведь D-триггер, входящий в состав регистра сдвига (основного рабочего органа SPI-автомата), по одному фронту "защелкивает", одновременно сдвигая данные... А SPI - не по одному, а по двум. Вот вопрос и в том, почему это так, да и наводит на мысль, что там не обычный сдвиговый регистр. Хотелось бы докопаться до истины.

SPI_timing_diagram2.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

SPI - вот, по разным фронтам CLK (синяя и красная линии) происходит так называемая "защелка" и "сдвиг".

В одном и том же режиме и фронт один и тот же. В разных режимах разные фронты. Но ведь одновременно в разных режимах никто не работает ...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, не один и тот же.

Вот берем любой режим. Пусть CPOL = 0, CPHA = 0.

По переднему фронту CLK - защелка данных, по заднему - установка новых данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так сложилось исторически. Не смогли производители договорится об одном единственном стандарте. Поэтому каждый производитель процессора с SPI вынужден делать возможность настраивать фронты по-разному. Не нужно искать логики и смысла абсолютно во всём.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я ищу в этом логику в поиске какого-то утаенного от меня скрытого смысла. Ну я думал в этом есть какой-то хитрый план, начиная от помехозащищенности и заканчивая универсализацией...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Herz, конкретика - лучшее, что может быть сейчас =) И зачем убирать задержку распространения? Без нее и сдвиговый регистр работать не будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Это только внутри регистра или в ПЛИС данные надежно выскакивают после фронта такта. :) В ПЛИС об этом думает компилятор или укладчик, как-то так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, нашел еще кое-что связанное с этим, метастабильностью называется. Подобный изврат с SPI - что-то типа один из методов борьбы с ним...

http://geektimes.ru/post/254934/ - тут подробнее.

Интересно, конечно, как в железе реализуется раздельное управление фронтами. Думаю, я еще вернусь к этому вопросу =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, нашел еще кое-что связанное с этим, метастабильностью называется.

Вот именно. Специалисты по ПЛИС в этом разбираются. И мучаются иногда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я ищу в этом логику в поиске какого-то утаенного от меня скрытого смысла. Ну я думал в этом есть какой-то хитрый план, начиная от помехозащищенности и заканчивая универсализацией...

 

 

Herz, конкретика - лучшее, что может быть сейчас =) И зачем убирать задержку распространения? Без нее и сдвиговый регистр работать не будет.

Не очень понятно, что вас смущает. Устроено, как раз, по здравому смыслу: один фронт клока DRIVE EDGE, второй - SAMPLE EDGE, по DRIVE EDGE и мастер, и слейв выставляют свои данные на линии (MOSI и MISO соответственно), по SAMPLE EDGE забирают. Никаких коллизий не возникает, все успевают, всё работает слаженно.

 

А если один фронт, то представьте себе, что, например, мастер выдаёт и забирает данные по одному и тому же фронту: вот выставил он данные на MOSI, выдал фронт на SCK, но в этот момент - если этот же фронт для мастера является и семплирующим - данные от слейва на MISO уже должны уверенно (т.е. соблюдением tSU и учётом tPD) стоять! Как слейв в этой ситуации узнает, что он должен выдавать данные - он ведь не может телепатировать от мастера, что тот сейчас будет выдавать фронт? В этом случае просто придётся от слейва данные гнать с задержкой на один такт. Это ни разу не упрощение, а наоборот усложнение логики и ухудшение скорости обмена.

 

Вот как-то так. Если, конечно, я правильно понял ваш вопрос. Если нет, не обессудьте. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По стандарту, т.е. в оригинале Motorola, снаружи интерфейса всё и всеми двигается по единому одному перепаду тактового сигнала, а внутри всех устройств все принятые ими данные переписываются из его сдвиговых регистров в какие-либо их внутренние буферы, стробируются, и т.п., по единому противоположному его перепаду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...