3.9 Индикатор цифровой АЛС324А
Рис.3.11 Индикатор цифровой АЛС324А.
Выводит на экран цифры в зависимости от сигналов на входах в семисегментном коде. Состоит из семи светодиодов. Единица, пришедшая на вход, приводит к свечению соответствующего сегмента.
4. КАРТА ПАМЯТИ
Адрес | Назначение адреса |
0000h – 07D0h | ПЗУ |
0000h – 0083 | область ПЗУ, занимаемая программой |
В000h – В7D0h | ОЗУ |
5. ПРИНЦИП РАБОТЫ ПРОГРАММЫ
Принцип работы программы основан на том, что с использованием модифицированного кода Хемминга можно проводить проверку считанной информации на наличие ошибок. Существует возможность исправить однократные ошибки и обнаружить двойные. Программа управляет считыванием информации с порта, затем заносит их в оперативную память. По нажатию кнопки начинается проверка содержимого на наличие ошибок. На основе маскирования определенных бит и контроля четности формируется четырехбитная характеристическая комбинация, каждому значению которой соответствует свое решение. Таких решений в результате получается четыре:
1. Нет ошибки. Программа просто начинает проверку следующего байта данных, занесенных в ОЗУ.
2. Есть двойная ошибка, тогда выводится сообщение о двойной ошибке в виде адреса, где она зафиксирована, но только с тем различием, что у выводимого адреса будут обнулены четыре старших бита. То есть такое сообщение об ошибке будет иметь вид 0ххх. Программа ждет нажатия кнопки для дальнейшей работы.
3. Ошибка в контрольном бите. Исправляется с помощью заданной маски. Номер ячейки выводится на индикаторы. Программа ждет нажатия кнопки для дальнейшей работы.
3. Есть одиночная ошибка. Ее исправление начинается с формирования маски, в которой все биты будут установлены в ноль и лишь один в единицу. Как раз тот, что должен будет быть исправлен. Далее, с помощью операции XOR (Исключающее ИЛИ) над содержимым ячейки памяти и маской ошибка будет исправлена. Номер ячейки, в которой была ошибка, выводится на индикаторы. Программа ждет нажатия кнопки для дальнейшей работы.
6. ЛИСТИНГ ПРОГРАММЫ
Адрес | Мнемонический код | Код | Комментарии |
0000 | MVI A, 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:LDAX D | 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 | JPO m6 | E2 | Если количество бит, выставленных в единицу – четное, то ошибки в анализируемых битах нет |
0041 | 47 | ||
0042 | 00 | ||
0043 | MVI A, 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 | JZ m7 | CA | Если ошибки нет, то переход на анализ следующего байта |
004B | 1C | ||
004C | 00 | ||
004D | CPI 8h | FE | Значение регистра Н от 1h до 7h говорит, что зафиксирована двойная ошибка |
004E | 08 | ||
004F | JP m8 | 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с.
... кодирования можно разработать устройство, которое поможет понять принцип работы метода Хэмминга. Кодер – декодер будем разрабатывать на основе ИМС К555ВЖ1. 2.1 Разработка устройства кодирования информации методом Хемминга Кодер, преобразует 32х битное слово в 38ми разрядный код Хэмминга, после чего слово хранится в памяти или передаётся по шинам и т.д. В процессе передачи или хранения в ...
... , работавших в области электротехники, заинтересовалась возможностью создания технологии хранения данных, обеспечивающей более экономное расходование пространства. Одним из них был Клод Элвуд Шеннон, основоположник современной теории информации. Из разработок того времени позже практическое применение нашли алгоритмы сжатия Хаффмана и Шеннона-Фано. А в 1977 г. математики Якоб Зив и Абрахам Лемпел ...
... за которым следует устройство дискретизации (рисунок 4.2), подастся известный сигнал s(t) плюс шум AWGN n(t). 4.4 Межсимвольная интерференция На рисунке 4.3 а) представлены фильтрующие элементы типичной системы цифровой связи. В системе - передатчике, приемнике и канале - используется множество разнообразных фильтров (и реактивных элементов, таких как емкость и индуктивность). В передатчике ...
0 комментариев