Смекни!
smekni.com

Реализация устройства контроля переданной информации с использованием модифицированного кода Хем (стр. 3 из 3)

Рис.3.11 Индикатор цифровой АЛС324А.

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


4. КАРТА ПАМЯТИ

Адрес Назначение адреса
0000h – 07D0h ПЗУ
0000h – 0083 область ПЗУ, занимаемая программой
В000h – В7D0h ОЗУ

5. ПРИНЦИП РАБОТЫ ПРОГРАММЫ

Принцип работы программы основан на том, что с использованием модифицированного кода Хемминга можно проводить проверку считанной информации на наличие ошибок. Существует возможность исправить однократные ошибки и обнаружить двойные. Программа управляет считыванием информации с порта, затем заносит их в оперативную память. По нажатию кнопки начинается проверка содержимого на наличие ошибок. На основе маскирования определенных бит и контроля четности формируется четырехбитная характеристическая комбинация, каждому значению которой соответствует свое решение.Таких решений в результате получается четыре:

1. Нет ошибки.Программа просто начинает проверку следующего байта данных, занесенных в ОЗУ.

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

3. Ошибка в контрольном бите. Исправляется с помощью заданной маски. Номер ячейки выводится на индикаторы. Программа ждет нажатия кнопки для дальнейшей работы.

3. Есть одиночная ошибка. Ее исправление начинается с формирования маски, в которой все биты будут установлены в ноль и лишь один в единицу. Как раз тот, что должен будет быть исправлен. Далее, с помощью операции XOR (Исключающее ИЛИ) над содержимым ячейки памяти и маской ошибка будет исправлена. Номер ячейки, в которой была ошибка, выводится на индикаторы. Программа ждет нажатия кнопки для дальнейшей работы.


6. ЛИСТИНГ ПРОГРАММЫ

Адрес Мнемонический код Код Комментарии
0000 MVIA, 89h 3E заносим упр. слово в аккумулятор
0001 89
0002 OUT 3h D3 отправляем 89 (10001001) в РУС
0003 03
0004 LXI D,B000h 11 Задаем начальное значение регистровой паре, содержащей адрес ячейки памяти
0005 00
0006 B0
0007 LXI B,7D0h 01 Задаем начальное значение регистровой паре, содержащей счетчик
0008 D0
0009 07
000A IN 2h DB Прием сигнала от кнопки для начала записи последовательности байт в ОЗУ
000B 02
000C m1: IN A5h DB Начало цикла, записывающего в ОЗУ принимаемую с порта информацию
000D A5
000E STAX D 12 Запись содержимого аккумулятора в ячейку памяти, адрес которой хранится в DE
000F INX D 13 Выбираем адрес следующей ячейки
0010 DCX B 0B Счетчик записанных байт уменьшаем
0011 JNZ m1 C2 Если записаны не все 2000 байт, то переходим на следующий оборот цикла
0012 0C
0013 00
0014 LXI D, AFFFh 11 Задаем начальное значение регистровой паре, содержащей адрес ячейки памяти
0015 FF
0016 AF
0017 LXI B,7D1h 01 Задаем начальное значение регистровой паре, содержащей счетчик
0018 D1
0019 07
001A m2: IN 2h DB Прием сигнала от кнопки для начала проверки
001B 02
001C m7: DCX B 0B Уменьшаем регистр-счетчик
001D JZ m11 CA Если обработаны все занесенные в память байты, то переход на завершение программы
001E 83
001F 00
0020 INX D 13 Выбор следующей ячейки памяти изменением регистра, содержащего адрес
0021 LDAX D 1A Запись байта информации в аккумулятор из ячейки по адресу из DE
0022 ANI 78h E6 Используем маску для отделения бит, важных для составления и анализа первого синдрома
0023 78
0024 JPO m3 E2 Если количество бит, выставленных в единицу – четное, то ошибки в анализируемых битах нет
0025 29
0026 00
0027 MVI Н,4h 26 Выполняется только тогда, когда есть ошибка. Запись в Н 100b
0028 04
0029 m3:LDAXD 1A Запись байта информации в аккумулятор из ячейки по адресу из DE
002A ANI 66h E6 Используем маску для отделения бит, важных для составления и анализа второго синдрома
002B 66
002C JPO m4 E2 Если количество бит, выставленных в единицу – четное, то ошибки в анализируемых битах нет
002D 33
002E 00
002F MVI A, 2h 3E Начало участка, выполняемого только тогда, когда есть ошибка. Запись в (А) 10b
0030 02
0031 ADD H 84 Прибавляем регистр H к (А)
0032 MOV H,A 67 Заносим в регистр Н результат суммирования. Т.е. в Н оказывается х10b
0033 m4:LDAX D 1A Запись байта информации в аккумулятор из ячейки по адресу из DE
0034 ANI 55h E6 Используем маску для отделения бит, важных для составления и анализа третьего синдрома
0035 55
0036 JPO m5 E2 Если количество бит, выставленных в единицу – четное, то ошибки в анализируемых битах нет
0037 3D
0038 00
0039 MVI A, 1h 3E Начало участка, выполняемого только тогда, когда есть ошибка. Запись в (А) 1b
003A 01
003B ADD H 84 Прибавляем регистр H к (А)
003C MOV H,A 67 Заносим в регистр Н результат суммирования. Т.е. в Н оказывается хх1b
003D m5:LDAX D 1A Запись байта информации в аккумулятор из ячейки по адресу из DE
003E ANI FFh E6 Операция И по результатам которой производится проверка четности. Реализация проверки по контрольному биту
003F FF
0040 JPOm6 E2 Если количество бит, выставленных в единицу – четное, то ошибки в анализируемых битах нет
0041 47
0042 00
0043 MVIA, 8h 3E Начало участка, выполняемого только тогда, когда есть ошибка. Запись в (А) 1000b
0044 08
0045 ADD H 84 Прибавляем регистр H к (А)
0046 MOV H,A 67 Заносим в регистр Н результат суммирования. Т.е. в Н оказывается 1хххb
0047 m6: MOV A, H 7C Заносим в регистр А результат предыдущих проверок.
0048 CPI 0h FE Сравнение с нулем. В регистре Н может оказаться 0 только, если ошибки нет
0049 00
004A JZm7 CA Если ошибки нет, то переход на анализ следующего байта
004B 1C
004C 00
004D CPI 8h FE Значение регистра Н от 1h до 7h говорит, что зафиксирована двойная ошибка
004E 08
004F JPm8 F2 Если в ходе сравнения вычитанием получилось положительное число, значит двойной ошибки нет. Переход к исправлению одинарной.
0050 5D
0051 00
0052 MOV A,D 7A Заносим в регистр А старший байт адреса
0053 ANI 0Fh E6 С помощью операции И обнуляем четыре старших бита
0054 0F
0055 OUT 0h D3 Вывод содержимого А на индикаторы, предназначенные для отображения старшей части адреса
0056 00
0057 MOV A,E 7B Заносим в регистр А младший байт адреса
0058 OUT 1h D3 Вывод содержимого А на индикаторы, предназначенные для отображения младшей части адреса
0059 01
005A JMP m2 C3 Переход на запрос продолжения обработки данных, поступивших в ОЗУ
005B 1A
005C 00
005D m8: CPI 8h FE Значение регистра Н 1000b говорит, что зафиксирована ошибка в контрольном бите
005E 08
005F JNZ m9 C2 Если ошибка не в контрольном бите, то одинарная ошибка в одном из оставшихся семи битах. Переход к его исправлению
0060 6D
0061 00
0062 XRI 80h EE Исправление в контрольном бите
0063 80
0064 MOV A,D 7A Заносим в регистр А старший байт адреса
0065 OUT 0h D3 Вывод на индикаторы старшего байта адреса
0066 00
0067 MOV A,E 7B Заносим в регистр А младший байт адреса
0068 OUT 1h D3 Вывод на индикаторы младшего байта адреса
0069 01
006A JMP m2 C3 Переход на запрос продолжения обработки данных, поступивших в ОЗУ
006B 1A
006C 00
006D m9: SUI 8h D6 Вычитая 1000b, преобразуем содержимое регистра к номеру бита, где зафиксирована ошибка
006E 08
006F MOV H,A 67 Содержимое аккумулятора переносим в Н
0070 MVI A, 80h 3E Записываем в А байт, который будет использоваться для коррекции ошибки
0071 80
0072 m10: RAL 17 Сдвигаем единицу столько раз, сколько указано в Н
0073 DCR H 25
0074 JNZ m10 C2
0075 72
0076 00
0077 MOV H,A 67 Переносим в Н получившуюся маску для исправления ошибки
0078 LDAX D 1A Заносим в А подлежащий исправлению байт
0079 XRA H AC С помощью операции XOR исправляем ошибку
007A MOV A,D 7A Заносим в регистр А старший байт адреса
007B OUT 0h D3 Вывод на индикаторы старшего байта адреса
007C 00
007D MOV A,E 7B Заносим в регистр А младший байт адреса
007E OUT 1h D3 Вывод на индикаторы младшего байта адреса
007F 01
0080 JMP m2 C3 Переход на запрос продолжения обработки данных, поступивших в ОЗУ
0081 1A
0082 00
0083 m11: NOP 00 Конец программы
0084
0085
0086
0087
0088
0089
008A
008B
008C
008D
008E
008F
0090

ЗАКЛЮЧЕНИЕ

В ходе данной работы была спроектирована микропроцессорная система для контроля переданной информации использованием модифицированного кода Хемминга. Эта система собрана на базе микропроцессорного комплекта КР580, а также некоторого числа дополнительных элементов. Была разработана как аппаратная, так и программная часть системы. Так как система состоит из интегральных микросхем, то она отличается малыми размерами и высокой надежностью.


СПИСОК СПРАВОЧНОЙ ЛИТЕРАТУРЫ

1. Абрайтис В.Б.Микропроцессоры и микропроцессорные комплекты интегральных микросхем: Справочник. В 2 т. / Абрайтис В.Б., Аверьянов Н.Н., Белоус А.И. и др.; Под ред. В.А. Шахнова. - М.: Радио и связь, 1988. - 368 с.

2. Горбунов В.Л. Справочное пособие по микропроцессорам и микроЭВМ / В.Л. Горбунов, Д.И. Панфилов, Д.Л. Преснухин. - М.: Высш. шк., 1988 . - 272 с.: ил.

3. Калабеков Б. А. Микропроцессоры и их применение в системах передачи и обработки сигналов: Учеб. Пособие для ВУЗов. — М.: Радио и связь, 1988.

4. Угрюмов Е.Цифровая схемотехника / Е. Угрюмов – БХВ Санкт-Петербург, 2000 – 528с.