Декодирование последовательных потоков двоичных разрядов и обнаружение ошибок

Декодирование последовательных потоков двоичных разрядов и обнаружение ошибок.

Программирование адаптера передачи данных АПД на режим обмена данными, соответствующий установленным требованиям, т.е задание длинны разрядности символа, типа контроля четности, числа стоповых разрядов и скорости передачи в бодах, осуществляется путем записи соответствующей комбинации двоичных разрядов в регистр команд.

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

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

Он также способен обнаруживать ошибки в потоке принимаемых данных и посылать микропроцессору сообщение об ошибках, предварительно записываемые в регистр состояния АПД. АПД RS-232C способен обнаруживать ошибки трех типов - Ошибки четности 1 Ошибки из-за перезаписи 2 Ошибки кадрирования передаваемых данных 3 . Рассмотрим подробнее перечисленные выше ошибки. 3.4.1. Ошибки четности.

Разряд контроля по четности является старшим разрядом символа.

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

Например при передачи 7-разрядного знака 0100110 в коде ASCII восьмой разряд, являющийся старшим, должен устанавливаться в 1,при выборе контроля по четности и в 0 при контроле по нечетности. 3.4.2. Ошибки из-за перезаписи.

АПД декодирует символ, поступивший на его линию последовательного ввода, предварительно удалив из него стартовый и стоповый разряды, а затем помещает этот символ в приемный буфер.

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

Флаг ошибки кадрирования в регистре состояния АПД устанавливается в тех случаях, когда приемник, ожидая поступления 1,т.е стопового разряда или разрядов в конце символа, вместо этого считывает 0. Ошибка кадрирования возникает в результате появления ложных разрядов, обусловленных действием шумовых выбросов.

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

Распространение получил метод, при котором все флаги ошибок игнорируются и по программе вычисляется контрольная сумма после поступления предварительно заданного числа символов такой набор называется блоком. Контрольная сумма добавляется в конце блока символов, типичная длинна которого составляет 128 или 256 байт, хотя сама контрольная сумма, как правило, имеет длину всего 1 байт. Для получения контрольной суммы пользуются различными соглашениями.

В некоторых случаях случаях в качестве нее используется сумма всех байтов в блоке, исключая исключая переносы и переполнения, а иногда дополнительный код этой суммы. Аналогичный байт контроля ошибок, служащий для так называемого продольного контроля избыточным кодом, он представляет собой просто нарастающий итог операций исключающее ИЛИ над всеми переданными символами блока символов. Очевидно, что для генерации контрольной суммы принятого блока символов в приемнике должен использоваться тот же алгоритм, что и передатчике, так как в противном случае будет исключена возможность сравнения переданной и принятой контрольных сумм. Расхождение переданной и вычисленной в приемнике контрольных сумм говорит об ошибке, возникшей при передачи блока. Следовательно необходима его повторная передача.

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