Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
26
Добавлен:
02.05.2014
Размер:
650.75 Кб
Скачать

8

2. Лабораторная работа N 2.

"Последовательная передача данных".

Теория.

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

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

Асинхронный метод передачи.

В последовательной системе связи разряды данных передаются последовательно друг за другом. Асинхронная последовательная система связи позволяет передавать за один "цикл" (одну "посылку") по одному символу (т.е. один набор двоичных разрядов).

Длительность одного двоичного разряда определяется выбранной скоростью передачи. Она выбирается исходя из рабочих характеристик передающего и приемного устройств. Компьютер IBM PC может передавать и принимать данные со стандартной скоростью, находящейся в пределах от 50 до 9600 бод.

На рис.1 показано, как осуществляется асинхронная передача одного символа.

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

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

При асинхронной передаче символ заканчивается передачей одного или двух стоповых разрядов (логических единиц), причем для любой скорости передачи, превышающей 110 бод, как правило, используется один стоповый разряд.

Передатчик направляет на линию последовательность единиц во всех случаях, когда нет готового к передаче символа.

Для реализации последовательного асинхронного метода передачи можно использовать как специализированные контроллеры (так называемые асинхронные приемопередатчики - UART) , так и запрограммировать параллельный интерфейс на последовательную передачу кода символа (как правило, длиной в один байт) через какой-либо разряд параллельного порта. Удобнее всего для этого использовать самый младший (или самый старший) разряд параллельного порта, "сдвигая" в него очередные разряды передаваемого символа в нужные моменты времени.

В случае использования самого младшего разряда параллельного порта передача кода символа (после передачи стартового бита) начинается с самого младшего разряда и заканчивается самым старшим, после чего передаются бит контроля (если это предусмотрено алгоритмом) и стоповые биты. Такая последовательность передачи разрядов символа используется и в специализированных микросхемах UART.

Для повышения достоверности передаваемой информации при последовательной передаче обычно предусматривают передачу бита контроля четности (или нечетности) числа единиц в передаваемом коде символа. При этом разряд контроля по четности передается как старший разряд символа. Если выбран контроль по четности, то разряд контроля, генерируемый на передающей стороне, устанавливается в 1 или сбрасывается в 0 с таким расчетом, чтобы в символе (включая и сам разряд контроля) полное число разрядов, содержащих логическую единицу, было четным, и наоборот - если предусмотрен контроль по нечетности, то общее количество единиц в передаваемой посылке должно быть нечетным, не считая, разумеется, стоповые биты.

Ниже приведен фрагмент программы на ассемблере, подсчитывающий число единиц в передаваемом из регистра AL байте без контроля по четности/нечетности. Предполагается, что настройка порта уже проведена и адрес порта находится в регистре DX. Кроме того, синхронизация передаваемых битов с какой-либо базовой (опорной) частотой не производится, хотя в реальных системах такая синхронизация необходима и именно она определяет реальную скорость передачи информации:

MOV AH, AL ;СОХРАНИТЬ ПЕРЕДАВАЕМЫЙ БАЙТ

MOV AL, 0 ;ВЫДАТЬ СТАРТОВЫЙ БИТ

OUT DX, AL

MOV BL, 8 ;ЧИСЛО ПЕРЕДАВАЕМЫХ БИТОВ = 8

MOV AL, AH ;ВОССТАНОВИТЬ ПЕРЕДАВАЕМЫЙ БАЙТ 3:

OUT DX, AL ;ВЫДАТЬ ОЧЕРЕДНОЙ БИТ СИМВОЛА

DEC BL ;УМЕНЬШИТЬ СЧ-К БИТОВ

JNZ 1 ;ЕСЛИ ПЕРЕДАНЫ НЕ ВСЕ БИТЫ - ПРОДОЛЖИТЬ

JMP 2 ;НА КОНЕЦ 1: SHR AL ;СДВИНУТЬ AL

JMP 3 ;И ПРОДОЛЖИТЬ ПЕРЕДАЧУ 2: MOV AL, 0FH

OUT DX, AL ;ВЫДАТЬ СТОПОВЫЙ БИТ

Соседние файлы в папке Методические указания