Рис 3.7 Постоянное запоминающее устройство КР556РТ7
Микросхема представляет собой однократно программируемое постоянное запоминающее устройство ёмкостью 16 к (2к 8) с тремя состояниями на выходе. Предназначено для хранения программы работы устройства и констант.
Таблица 3.61. Таблица истинности
Наличие перемычки в матрице | Состояние входа | Состояние выхода | Операция | ||
ESE1 | ESE2 | ESE3 | |||
Есть | 0 | 1 | 1 | 0 | Чтение |
Независимо от наличия | Любая другая комбинация | Z | Хранение | ||
Нет | 0 | 1 | 1 | 1 | Чтение |
Таблица 3.62. Назначение выводов микросхемы
Вывод | Обозначение | Тип вывода | Функциональное назначение выводов |
1,2,3,4,5,6,7,8, 21,22,23 | A0,A1,A2,A3,A4, A5,A6,A7,A8, A9,A10 | Входы | Адресные входы |
9,10,11,13,14, 15,16,17, | D0,D1,D2,D3,D4, D5,D6,D7 | Выходы | Выходы данных |
12 | GND | - | Общий |
18,19,20 | ESE3, ESE2, | Входы | Входы разрешения выборки |
24 | Ucc | - | Напряжение питания |
Оперативное запоминающее устройство КР537РУ8А
Рис 3.8 Оперативное запоминающее устройство КР537РУ8А
Микросхема представляет собой статическое оперативное запоминающее устройство ёмкостью 16 кбит (2к 8). Предназначено для хранения стека и переменных величин.
Таблица 3.71. Таблица истинности
Вход | Вход/выход | Режим работы | ||
CS1 | CS2 | WR/RD | ||
1 | 1 | X | Третье состояние | Хранение |
0 | 1 | X | Третье состояние | Хранение |
1 | 0 | X | Третье состояние | Хранение |
0 | 0 | 1 | Выход | Считывание |
0 | 0 | 0 | Вход | Запись |
Таблица 3.72. Назначение выводов микросхемы
Вывод | Обозначение | Тип вывода | Функциональное назначение выводов |
1-8,19,22,23 | A7,A6,A5,A4,A3, A2,A1,A0,A10, A9,A8 | Входы | Адресные входы |
9-17 | D0,D1,D2,D3,D4, D5,D6,D7 | Выходы | Выходы данных |
12 | GND | - | Общий |
18,20 | Входы | Входы выборки кристалла | |
21 | WR/WD | Входы | Вход разрешения записи считывания |
24 | Ucc | - | Напряжение питаания |
Дешифратор возбуждения одноразрядного семисегментного цифрового светодиодного индикатора АЛС324А
Рис 3.10 Дешифратор возбуждения одноразрядного семисегментного цифрового светодиодного индикатора АЛС324А
Микросхема состоит из 7 узлов, формирующих управляющий сигнал для одного из семи сегментов индикатора.
Таблица 3.81. Назначение выводов микросхемы
Выход | Обозначение | Тип вывода | Функциональное назначение выводов |
2, 3, 4, 5 | A2, A1,A3, A0 | Входы | Входы BCD чисел |
6 | DF | Вход | |
8 | GND | - | Общий |
9-14,15 | a, b, c, d, e, f,g | Выходы | Семисегментные выходы “a”, “b”, “c”, “d”, “e” “f”, “g” |
1 | DF0 | Выход | |
16 | Ucc | Напряжение питания |
Таблица 3.82. Таблица истинности
Входы | Выходы | |||||||||
5 | 3 | 2 | 4 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 0 |
0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 |
0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Индикатор цифровой АЛС324А
Рис.3.11 Индикатор цифровой АЛС324А.
Выводит на экран цифры в зависимости от сигналов на входах в семисегментном коде. Состоит из семи светодиодов. Единица, пришедшая на вход, приводит к свечению соответствующего сегмента.
КАРТА ПАМЯТИ
Адрес | Назначение адреса |
0000h – 07D0h | ПЗУ |
0000h – 0083 | область ПЗУ, занимаемая программой |
В000h – В7D0h | ОЗУ |
ПРИНЦИП РАБОТЫ ПРОГРАММЫ
Принцип работы программы основан на том, что с использованием модифицированного кода Хемминга можно проводить проверку считанной информации на наличие ошибок. Существует возможность исправить однократные ошибки и обнаружить двойные. Программа управляет считыванием информации с порта, затем заносит их в оперативную память. По нажатию кнопки начинается проверка содержимого на наличие ошибок. На основе маскирования определенных бит и контроля четности формируется четырехбитная характеристическая комбинация, каждому значению которой соответствует свое решение. Таких решений в результате получается четыре:
1. Нет ошибки. Программа просто начинает проверку следующего байта данных, занесенных в ОЗУ.
2. Есть двойная ошибка, тогда выводится сообщение о двойной ошибке в виде адреса, где она зафиксирована, но только с тем различием, что у выводимого адреса будут обнулены четыре старших бита. То есть такое сообщение об ошибке будет иметь вид 0ххх. Программа ждет нажатия кнопки для дальнейшей работы.
3. Ошибка в контрольном бите. Исправляется с помощью заданной маски. Номер ячейки выводится на индикаторы. Программа ждет нажатия кнопки для дальнейшей работы.
3. Есть одиночная ошибка. Ее исправление начинается с формирования маски, в которой все биты будут установлены в ноль и лишь один в единицу. Как раз тот, что должен будет быть исправлен. Далее, с помощью операции XOR (Исключающее ИЛИ) над содержимым ячейки памяти и маской ошибка будет исправлена. Номер ячейки, в которой была ошибка, выводится на индикаторы. Программа ждет нажатия кнопки для дальнейшей работы.
ЛИСТИНГ ПРОГРАММЫ
Адрес | Мнемонический код | Код | Комментарии |
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, а также некоторого числа дополнительных элементов. Была разработана как аппаратная, так и программная часть системы. Так как система состоит из интегральных микросхем, то она отличается малыми размерами и высокой надежностью.
Дата: 2019-12-22, просмотров: 254.