Опубликован: 24.11.2024 | Доступ: свободный | Студентов: 1 / 0 | Длительность: 05:47:00
Лекция 7:

Последовательная связь

< Лекция 6 || Лекция 7: 1234567

Последовательная передача данных заключается в передаче одного бита за раз, а не многих битов (как при параллельной передаче данных). Параллельная схема требует как минимум N линий при передаче N битов, в то время как последовательная схема может обойтись только 1 линией. Во многих случаях для арбитража операций передачи используются дополнительные линии (например, тактовая линия). На следующей схеме показаны последовательная и параллельная версии 8-битной схемы передачи данных, в которой используется тактовая линия.

Презентация по лекции 6

Сравнение последовательной (слева) и параллельной (справа) передачи данных 8 бит (взято из SparkFun Electronics, предоставлено по CC BY 4.0)

Рис. 6.1. Сравнение последовательной (слева) и параллельной (справа) передачи данных 8 бит (взято из SparkFun Electronics, предоставлено по CC BY 4.0)

GPIO хорош для чтения нескольких входных переключателей или кнопок и управления несколькими выходами, такими как светодиоды или двигатели, но он не справляется, когда нам нужно передавать сообщения туда и обратно между микроконтроллером и другими устройствами. Это может звучать не очень интуитивно, если мы рассмотрим преимущество параллельной связи, передавая все N битов одновременно с помощью N линий GPIO. Однако наличие N линий сделает обмен данными только в N раз быстрее, чем последовательный вариант. Недостатки параллельной связи обычно перевешивают это преимущество. Вот несколько недостатков для обмена 32-битными словами:

  • Для связи двух микросхем на одной плате требуется 32 линии на печатной плате, что заняло бы значительную площадь.
  • Для связи двух микросхем на отдельных платах требуется кабель или лента с 32 проводами. Более толстые кабели тяжелее и с ними сложнее обращаться.
  • 32 электрические линии в кабеле или печатной плате могут иметь 32 проблемы с электромагнитными помехами.
  • Невозможно использовать инфракрасную связь (как у телевизионного пульта) из 32 параллельных линий, так как 32 мигающих огонька будут мешать друг другу.
  • Использование 32 волоконно-оптических кабелей было бы очень дорого.
  • Использование 32 радиоканалов также было бы неудобным.

Серьезность этих проблем снижается или устраняется при последовательном обмене данными. Фактически, несколько интерфейсов последовательной связи превосходят свои параллельные аналоги. Один из известных примеров - интерфейсы дисковых накопителей, где Serial ATA намного быстрее Parallel ATA. Самый быстрый интерфейс Parallel ATA способен передавать данные со скоростью 133 МБ в секунду, тогда как самый быстрый Serial ATA - 600 МБ в секунду.

7-контактный кабель Serial ATA и 40-контактный ленточный кабель Parallel ATA (левое изображение взято из Wikimedia Commons, предоставлено по лицензии CC BY-SA 3.0, правое изображение взято из Wikimedia Commons, By Evan Amos, Public Domain)

Рис. 6.2. 7-контактный кабель Serial ATA и 40-контактный ленточный кабель Parallel ATA (левое изображение взято из Wikimedia Commons, предоставлено по лицензии CC BY-SA 3.0, правое изображение взято из Wikimedia Commons, By Evan Amos, Public Domain)

Параллельная связь - это не плохо

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

Однако параллельная связь находит применение во многих областях вычислительной техники. Одно из самых сильных применений - в архитектуре компьютера, где у нас есть схема шины для соединения центрального процессора, памяти и устройств ввода-вывода. Это модель памяти, используемая в языке C. Фактически, когда мы используем адрес памяти для доступа к данным, этот адрес в конечном итоге преобразуется в физический адрес, который передается по параллельной шине адреса.

Адресованные данные будут доступны в параллельной шине данных. Хотя существуют последовательные шины, такие как I2C и USB, внутренняя шина микроконтроллера всегда была параллельной, и не похоже, что эта практика изменится в ближайшем будущем.

Сдвиговые регистры

Последовательная передача данных осуществляется путем взятия слова определенной ширины (например, 8, 32 или 64 бита) и последовательной передачи всех битов по одному каналу. Именно эту операцию и выполняет сдвиговый регистр. Вы можете быть знакомы со сдвигом битов с точки зрения программиста. Он заключается в сдвиге всех битов вправо или влево, обычно на одну позицию за раз. Для последовательной связи нас интересует бит, который "выпадает" из регистра после сдвига.

Регистр сдвига - это последовательность D флип-флопов, которые выполняют операцию сдвига между битами, хранящимися в каждом флип-флопе. Здесь мы имеем 4-битный регистр сдвига:

4-битный регистр сдвига (взято из Wikimedia Commons, автор MichaelFrey, предоставлено по лицензии CC BY-SA 2.0)

Рис. 6.3. 4-битный регистр сдвига (взято из Wikimedia Commons, автор MichaelFrey, предоставлено по лицензии CC BY-SA 2.0)

На приведенной выше схеме каждый раз, когда на линии Clock возникает нарастающий фронт импульса, все биты сдвигаются вправо. Регистр может иметь механизм для параллельного чтения и записи своих данных (все 4 бита одновременно).

Линия Data служит в качестве последовательного входа, а линия Q_D - в качестве последовательного выхода.

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

Простая сеть последовательной связи

Рис. 6.4. Простая сеть последовательной связи

Здесь у нас есть передатчик, который посылает слово из N бит (например, 8 или 32 бита) приемнику, используя их соответствующие сдвиговые регистры. Через N тактов слово, которое первоначально было в передатчике, окажется в приемнике. На схеме показаны передатчик и приемник, но обратите внимание, что сдвиговый регистр в так называемом приемнике может отправить свой крайний правый бит обратно в так называемый передатчик, что делает эту операцию не передачей, а подменой.

В некоторых схемах элементы этой сети называются не передатчиком и приемником, а ведущим и ведомым, где ведущий управляет обменом данными, а ведомые принимают данные, отправленные ведущим, или отвечают данными, запрошенными ведущим.

Одно из основных различий между множеством последовательных коммуникационных интерфейсов заключается в том, откуда поступает тактовый сигнал для каждого сдвигового регистра:

  • В SPI он поступает от ведущего устройства, а ведомые устройства получают этот сигнал от ведущего устройства по отдельной линии.
  • При асинхронной последовательной связи передатчик и приемник имеют собственные тактовые сигналы, работающие на одинаковой частоте, чтобы обеспечить соответствие скорости передачи данных.
  • В I2C тактовый сигнал также посылается ведущим устройством, но ведомые устройства также могут переводить тактовую линию в низкий уровень, чтобы сообщить, что они еще не готовы к ответу.
< Лекция 6 || Лекция 7: 1234567