Название реферата: Микросхема ПЗУ в управляющем автомате с МПУ выбрана неверно
Раздел: Радиоэлектроника
Скачано с сайта: www.newreferat.com
Дата размещения: 22.09.2011
Микросхема ПЗУ в управляющем автомате с МПУ выбрана неверно
Содержание
1. Анализ задания -
2. Комбинационный вариант -
3. Алгоритм работы устройства -
4. Микропрограмма -
5. Управляющий автомат с жесткой логикой -
6. Управляющий автомат с МПУ -
7. Выбор элементной базы -
8. Составление программы -
Задание
ВАРИАНТ №17
Задается входной код D{1:32}. Спроектировать вычислитель, который определяет номер разряда самой первой и самой последней единиц, стоящих между нулями. Предусмотреть реакцию проектируемого устройства в случае отсутствия таких сигналов.
Анализ и уточнение задания
·Так как входной код - тридцатидвухразрядный, то для получения интересующей нас информации необходимо два выходных шестиразрядных кода. Реакцией устройства в случае отсутствия интересующих нас кодовых комбинаций будет значение первого и второго выходных кодов соответственно:
Очевидно, что в тридцатидвухразрядном коде единица, стоящая между двумя нулями ни при каких обстоятельствах не может находится ни в первом ни в тридцать втором разряде кода.
·Тактовая синхронизация будет осуществляться внешним генератором тактовых импульсов с частотой 20 МГц
·По окончании обработки входного кода должен вырабатываться специальный сигнал, позволяющий следующему устройству считать выходные данные с проектируемого устройства.
·Обобщенная функциональная схема проектируемого устройства может быть представлена в следующем виде:
![]() |
D{1:32} B{1:6}
F C{1:6}
СТРОБ
УСЧИТ
Рисунок 1
Обобщенная функциональная схема устройства
Комбинационный вариант устройства
Функциональная схема комбинационного устройства, осуществляющего параллельную обработку входного кода представлена на рисунке 2. Входной код D{1:32} разбивается на пересекающиеся элементы по три разряда: D’{1:3}, D’{2:4}, .D’{30:32}. Крайние разряды D’ проходят через инверторы DD1, DD3, DD4, DD6, DD7, DD9, .DD88, DD90. Проинвертированные крайние разряды вместе с центральным разрядом элемента поступают на логическую схему И, на выходе которой в случае если D{i-1, i, i+1}=010 сформируется высокий логический уровень напряжения, приводящий в действие соответствующий элемент индикации на внешней панели устройства. При визуальном контроле внешней панели устройства по расположению работающих элементов индикации можно определить номер разряда первой и последней единиц, стоящих между нулями.
Для реализации данной схемы потребуется 20 микросхем 1533ЛН1 (6 логических элементов НЕ), 10 - КР1533 (3 элемента 3И), 4 - КР531ЛЕ7 (2 элемента 5 ИЛИ-НЕ), 1 - 1533ЛИ6 (2 элемента 4И), 1 - 1533ЛИ1 (4 элемента 2И).
Основным недостатком данной схемы является невозможность дальнейшей обработки выходной информации.
![]() |
НАЧАЛО
![]() |
НЕТ
СТРОБ
![]() |
РЕГ В {1:32}=D{1:32}
РЕГ А{1:32}=РЕГ В{1:32}
СЧЕТ Ц1=2
![]() |
ДА
РЕГ А{1}=0 & РЕГ А{2}=1 & РЕГ А{3}=0
НЕТ
![]() |
РЕГ А{1:32}=РЕГ А{2:32}.0
СЧЕТ Ц1=СЧЕТ Ц1 +1
![]() |
НЕТ
СЧЕТ Ц1=32
![]() |
ДА
![]() |
РЕГ А{1:32}=РЕГ В{1:32}
СЧЕТ Ц2=31
![]() |
ДА
РЕГ А{32}=0 & РЕГ А{31}=1 & РЕГ А{30}=0
![]() |
НЕТ
![]() |
РЕГ А{1:32}=РЕГ А{1:31}.0
СЧЕТ Ц=СЧЕТ Ц -1
![]() |
НЕТ
СЧЕТ Ц=1
![]() |
B {1:6}=СЧЕТ Ц1; С {1:6}=СЧЕТ Ц2
КОНЕЦ
Рисунок 3
Блок-схема алгоритма работы устройства
Микропрограмма
Переменные:
Входные:
· D{1:32} - входной код
· строб
Выходные:
· В {1:6}, С{1:6} - выходной код
Внутренние:
· РЕГ А{1:32}, РЕГ В{1:32} - регистры
· СЧЕТ Ц1{1:6}, СЧЕТ Ц2{1:6} - счетчики циклов
Признаки:
· Р1 - строб=1
· Р2 - РЕГ А{1}=0 & РЕГ A{2}= 1 & РЕГ А {3}=0
· Р3 - РЕГ А{32}=0 & РЕГ A{31}= 1 & РЕГ А {30}=0
· Р4 - СЧЕТ Ц1 {1:6} = 32
· Р5 - СЧЕТ Ц2 {1:6} = 1
Программа
М1 ЕСЛИ НЕ Р1 ТО М1
(СТРОБ) РЕГ В{1:32}=D {1:32}
(УЗАП1) РЕГ А{1:32}=РЕГ В {1:32}
(УН1) СЧЕТ Ц1 {1:6} =2
М2 ЕСЛИ Р2 ТО М3
(УСДВ1) РЕГ А{1:32}=РЕГ А{2:32}.0 }
(УСЧ1) СЧЕТ Ц1 {1:6}=СЧЕТ Ц1 {1:6}+1 } УЭ1
ЕСЛИ НЕ Р4 ТО М2
М3 (УЗАП1) РЕГ А{1:32}=РЕГ В {1:32}
(УН2) СЧЕТ Ц2 {1:6} =31
М4 ЕСЛИ Р3 ТО М5
(УСДВ2) РЕГ А{1:32}=0.РЕГ А{1:31} }
(УСЧ2) СЧЕТ Ц2 {1:6}=СЧЕТ Ц2 {1:6}-1 } УЭ2
ЕСЛИ НЕ Р5 ТО М4
М5 (УСЧИТ1) В{1:6}=СЧЕТ Ц1 {1:6} }
(УСЧИТ2) С{1:6}=СЧЕТ Ц2 {1:6} } УЭ3
КОНЕЦ (ИДТИ К М1)
Как видно из текста микропрограммы, некоторые сигналы можно объединить и заменить эквивалентными сигналами. Функциональная схема операционной части устройства приведена на рисунке 4.
Разработка управляющего автомата с жесткой логикой
Управляющий автомат с жесткой логикой будет реализовываться в виде классического конечного автомата Мили или Мура. На основании блок-схемы алгоритма работы устройства определим количество состояний для каждого типа автомата. Обозначим состояния автомата Мура буквой S, а состояния автомата Мили - S’. Как видно из рисунка 5, у автомата Мура будет шесть состояний, в то время как у автомата Мили - лишь четыре.
НАЧАЛО S0
![]() |
S’0
0 Р1
![]() |
УН 1, УЗАП 1 S1
![]() |
0 S’1 1
Р2
![]() | ![]() |
УЭ 1 S2 УЗАП 1, УН 2 S3
![]() | ![]() | ||
0
Р4 S’2
![]() |
УЗАП 1 УН 2 S3
![]() |
0 S’3 1
Р3
![]() | ![]() |
УЭ 2 S5 УЗАП 1 УЭ 3 S4
![]() | ![]() | ||
0
Р5 S’4
![]() |
S6 УЗАП 1 УЭ 3
![]() |
КОНЕЦ S’0
Рисунок 5.
Состояния конечных автоматов Мили и Мура.
Таким образом, определим, что управляющее устройство необходимо синтезировать в виде конечного автомата Мили
![]() |
Р1/—
P1/УН 1, УЗАП 1 Р2/УЭ 1 Р4/УН 2, УЗАП 1 Р3/УЭ 2
S0 S1 S2 S3 S4
Р4/— Р5/—
Р2/УН 2, УЗАП 1
Р3/УЭ 3
Р5/УЭ 3
Граф состояний автомата Мили.
S0 | S1 | S2 | S3 | S4 | |
Q1 | 0 | 0 | 0 | 1 | 1 |
Q2 | 0 | 0 | 1 | 1 | 0 |
Q3 | 0 | 1 | 1 | 1 | 1 |
Таблица 1
Кодированная таблица состояний.
ВХОД | S0 | S1 | S2 | S3 | S4 |
P1 | S1/УН 1,УЗАП1 | ||||
НЕ Р1 | S0/- | ||||
Р2 | S3/ УН 2, УЗАП1 | ||||
НЕ Р2 | S2/УЭ 1 | ||||
Р3 | S0/УЭ 3 | ||||
НЕ Р3 | S4/УЭ 2 | ||||
Р4 | S3/УН 2, УЗАП 1 | ||||
НЕ Р4 | S1/- | ||||
P5 | S0/УЭ 3 | ||||
НЕ P5 | S3/- |
Таблица 2
Таблица переходов и выходов
ВХОД | 0 0 0 | 0 0 1 | 0 1 1 | 1 1 1 | 1 0 1 |
P1 | 0 0 1/УН 1, УЗАП 1 | ||||
НЕ Р1 | 0 0 0/- | ||||
Р2 | 1 1 1/ УН 2, УЗАП 1 | ||||
НЕ Р2 | 0 1 1/УЭ 1 | ||||
Р3 | 0 0 0/УЭ 3 | ||||
НЕ Р3 | 1 0 1/УЭ 2 | ||||
Р4 | 1 1 1/УН 2, УЗАП 1 | ||||
НЕ Р4 | 0 0 1/- | ||||
P5 | 0 0 0/УЭ 3 | ||||
НЕ P5 | 1 1 1/- |
Таблица 3
Кодированная таблица переходов и выходов
Если в конечном автомате будет применяться D-триггер, то будут справедливы равенства:
Q1 (t+1) = НЕ Q1*НЕ Q2*Q3*P2 + НЕ Q1*Q2*Q3*P4 + Q1*Q2*Q3*НЕ P3+ Q1*НЕ Q2*Q3*НЕ P5 [20 входов]
Q2 (t+1) = НЕ Q1*НЕ Q2*Q3*P1 + НЕ Q1*Q2*Q3*НЕ P4 + Q1*НЕ Q2*Q3*НЕ P5 [15 входов]
Q3 (t+1) = НЕ Q1*НЕ Q2*НЕ Q3*P1 + НЕ Q1*НЕ Q2*Q3 + НЕ Q1*Q2*Q3 + Q1*Q2*Q3*НЕ P3 + Q1*НЕ Q2*Q3*НЕ P5 = =НЕ Q1*НЕ Q2*НЕ Q3*P1 + НЕ Q1*Q3 + Q1*Q2*Q3*НЕ P3 + Q1*НЕ Q2*Q3*НЕ P5 [18 входов]
Для реализации автомата на D-триггерах потребуется 43 входа. Если будет использоваться J-K триггер, то уравнения для него можно получить из уравнений для D-триггера:
Q (t+1)=J*Q+K*Q
Q(T+1)=J*HE Q + HE K*Q
J1=НЕ Q2*Q3*P2+Q2*Q3*P4=Q3*(НЕ Q2*P2+Q2*P4) [6 входов]
K1=(Q2*Q3*НЕ P3+НЕ Q2*Q3*НЕ P5)=(Q2*Q3*НЕ P3)*(НЕ Q2*Q3*НЕ P5)=(НЕ Q2+
НЕ Q3+P3)*(Q2+НЕ Q3+P5) [8 входов]
J2=(НЕ Q1*Q3+Q1*Q3*НЕ P5)=Q3*(НЕ Q1+Q1*НЕ P5) [6 входов]
![]() |
K2=(НЕ Q1*Q3*P4) = Q1+НЕ Q3+НЕ P4 [3 входа]
J3=НЕ Q1*НЕ Q2*P1 [3 входа]
K3=(НЕ Q1*НЕ Q2+НЕ Q1*Q2+Q1*Q2*НЕ P3+Q1*НЕ Q2*НЕ P5) = (НЕ Q1+Q1*(Q2+НЕ Q2*НЕ
![]() | |||
![]() | |||
P5)) =Q1*(НЕ Q1+(Q2+НЕ Q2*НЕ P5)) = Q1*НЕ Q2*(Q2+P5) = Q1*НЕ Q2*P5 [3 входа]
Для реализации автомата на J-K-триггерах потребуется 29 входов, поэтому автомат будет реализовываться на них. Управляющие сигналы на основе таблицы переходов и выходов будут формироваться следующим образом
УН 1=НЕ Q1*НЕ Q2*НЕ Q3*P1
УЭ 1=НЕ Q1*НЕ Q2*Q3*НЕ P2
УН 2=НЕ Q1*Q2*Q3*P4+НЕ Q1*НЕ Q2*Q3*P2
УЭ 2=Q1*Q2*Q3*НЕ P3
УЭ 3=Q1*НЕ Q2*Q3*P5+Q1*Q2*Q3*P3
УЗАП1=УН 1+УН 2
Управляющий автомат с микропрограммным
управлением
Принудительная адресация
Каноническая форма микропрограммы разрабатываемого устройства с учетом эквивалентности сигналов представлена в таблице 4:
№ | МЕТКА | УПР. СИГНАЛ | ПЕРЕХОД |
1 | М1 | ЕСЛИ НЕ Р1 ТО М1 | |
2 | УН 1, УЗАП1 | ||
3 | М2 | ЕСЛИ Р2 ТО М3 | |
4 | УЭ 1 | ||
5 | ЕСЛИ НЕ Р4 ТО М2 | ||
6 | М3 | УН 2, УЗАП1 | |
7 | М4 | ЕСЛИ Р3 ТО М5 | |
8 | УЭ 2 | ||
9 | ЕСЛИ НЕ Р5 ТО М4 | ||
10 | М5 | УЭ 3 | ИДТИ К М1 |
Таблица 4
Каноническая форма микропрограммы.
Адрес
| УН 1 | УЭ 1 | УН 2 | УЭ 2 | УЭ 3 | УЗАП1 | Не Р1 | Р2 | Р3 | Не Р4 | Не Р5 | Адрес перехода
| ||||||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Таблица 5
Кодовые выражения микропрограммы.
Минимальная требуемая емкость ПЗУ - (или 2К*4 Бит)
Естественная адресация
№ | МЕТКА | УПР. СИГНАЛ | ПЕРЕХОД |
1 | М1 | ЕСЛИ НЕ Р1 ТО М1 | |
2 | УН 1, УЗАП1 | ||
3 | М2 | ЕСЛИ Р2 ТО М3 | |
4 | УЭ 1 | ||
5 | ЕСЛИ НЕ Р4 ТО М2 | ||
6 | М3 | УН 2, УЗАП1 | |
7 | М4 | ЕСЛИ Р3 ТО М5 | |
8 | УЭ 2 | ||
9 | ЕСЛИ НЕ Р5 ТО М4 | ||
10 | М5 | УЭ 3 | |
11 | ИДТИ К М1 |
Таблица 6
Каноническая форма микропрограммы.
Адрес | П | УН 1 | УЭ 1 | УН 2 | УЭ 2 | УЭ 3 | УЗАП 1 |
|
|
| |||
| П | НЕ P1 | P2 | P3 | НЕ P4 | НЕ P5 | Адрес перехода | ||||||
0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | – | – | – |
0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | – | – | – |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | – | – | – |
0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | – | – | – |
1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | - | – | – |
1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Таблица 7
Кодовые выражения микропрограммы
Необходимый объем ПЗУ может быть уменьшен путем шифрации маски признаков.
| П | УН 1 | УЭ 1 | УН 2 | УЭ 2 | УЭ 3 | УЗАП 1 |
| ||||
Адрес | П | Маска признаков | Адрес перехода | |||||||||
0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | |
0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | – | |
0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | |
0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | – | |
0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | |
0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | – | |
0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | |
0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | – | |
1 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | |
1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | - | |
1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
Таблица 8
Минимизированные кодовые выражения микропрограммы
Минимальная требуемая емкость ПЗУ - (или 256*4 Бит), что меньше, чем требуется для принудительной адресации, поэтому будем применять естественную адресацию. Функциональная схема управляющего автомата с микропрограммным управлением показана на рисунке 7.
Выбор элементной базы
Устройство будем реализовывать на интегральных микросхемах серий 1533, так как микросхемы этой серий обладают наиболее оптимальными параметрами среди современных микросхем.[1]
Время задержки, нс | Потребляемая мощность, мВт | |
531 | 3,2 | 20 |
533 | 10 | 2 |
1531 | 3 | 4 |
1533 | 4 | 2 |
Таблица 9
Основные электрические параметры микросхем серии 1533
· Выходное напряжение низкого уровня - не более 0,5 В
· Выходное напряжение высокого уровня - не менее 2 В
· Выходной ток - не менее -30 мА и не более -112 мА
· Входной ток - не более 0,1 мА
· Входной ток высокого уровня - не более 20 мкА
· Входной ток низкого уровня - не более 0,2 мкА
· Работа переключения - 4 пДж
· Коэффициент разветвления по выходу - 40
Предельно допустимые режимы эксплуатации
· Напряжение питания - не менее 4,7 В и не более 5,5 В
· Входное напряжение высокого уровня - не менее 2 В и не более 5,5 В
· Входное напряжение низкого уровня - не менее 0 В и не более 0,8 В
Основными элементами устройства являются счетчики и регистры. Счетчик будет реализован на двух микросхемах 1533ИЕ7 - четырехразрядном синхронном реверсивном счетчике. Он имеет три основных режима: параллельная асинхронная загрузка кода по входам Di при поступлении отрицательного ипульса на вход С, режим суммирования и режим вычитания. В двух последних режимах счетные импульсы подают на различные входы: суммирования и вычитания.
Входной код будет записываться в восемь четырехразрядных универсальных регистра сдвига на микросхемах КР531ИР11. Регистр функционирует в одном из четырех режимов, которые задаются двухразрядным кодом на входе S. Параллельный ввод информации со входа D происходит синхронно, по положительному фронту тактового импульса.
R | S1 | S0 | C | DR | DL | D0 | D1 | D2 | D3 | Q0 | Q1 | Q2 | Q3 | |
Уст. L | L | X | X | X | X | X | X | X | X | X | L | L | L | L |
Пок-ой | H | X | X | L | X | X | X | X | X | X | QA0 | QB0 | QC0 | QD0 |
| H | H | H | X | X | a | b | c | d | a | b | c | d | |
| H | L | H | L | L | X | X | X | X | L | QAn | QBn | QCn | |
| H | L | H | H | H | X | X | X | X | H | QAn | QBn | QCn | |
Сдв. | H | H | L | X | X | X | X | X | X | QB | QC | QD | L | |
| H | H | L | X | X | X | X | X | X | QB | QC | QD | H | |
Пок-ой | H | L | L | X | X | X | X | X | X | X | QA0 | QB0 | QC0 | QD0 |
Таблица 10
Таблица истинности регистра КР531ИР11
Характеристики ППЗУ КР556РТ4
·Емкость - 256х4 Бит
·Время задержки - 70 нс
·Потребляемая мощность - 690 мВт
·Тип выхода - ТТЛ-ОК
·Исходное состояние - 0
Составление программы
Программа на ассемблере
![]() |
НАЧАЛО
![]() |
СЧЕТЧИК=02Н
![]() |
АККУМУЛЯТОР=
=1-ый справа байт кода
![]() |
Маскирование последних
3 бит АККУМУЛЯТОРА
![]() |
АККУМУЛЯТОР= 010В
НЕТ
![]() |
Сдвиг кода на разряд вправо
![]() |
СЧЕТЧИК=СЧЕТЧИК+1
![]() |
СЧЕТЧИК=32
![]() |
Запись значения счетчика в память
![]() | |||
![]() |
СЧЕТЧИК=02Н
![]() |
АККУМУЛЯТОР=
=1-ый слева байт кода
![]() |
Маскирование первых
3 бит АККУМУЛЯТОРА
![]() |
ДА
АККУМУЛЯТОР= 01000000В
![]() | |||
![]() |
2 3
1
1 2 3
![]() | ![]() | ![]() | |||
Сдвиг кода на разряд влево
![]() |
СЧЕТЧИК=СЧЕТЧИК-1
![]() |
НЕТ
СЧЕТЧИК=1
![]() |
Запись значения счетчика в память
![]() |
КОНЕЦ
Для нормального функционирования программы необходимо предварительно занести входной код, предварительно поделенный на байты в следующие ячейки памяти: 0800Н - 0803Н (в 0800Н - крайний левый байт кода и т.д.) и 0804Н - 0807Н (в 0804Н - крайний левый байт кода и т.д.)
Адрес | Код | Метка | Команда | Комментарий |
0809 | 16 | MVI D,O2H | Счетчик = 2 | |
080A | 02 | |||
080B | 3A | M1 | LDA 0803H | Загрузка первого справа байта кода в аккумулятор |
080C | 03 | |||
080D | 08 | |||
080F | E6 | ANI 07H | Маскирование 3 последних бит аккумулятора | |
0810 | 07 | |||
0811 | FE | CPI 02H | Сравнение аккумулятора с 010В | |
0812 | 02 | |||
0813 | CA | JZ M2 | ||
0814 | 37 | |||
0815 | 08 | |||
0816 | A7 | ANA A | Обнуление флага переноса | |
0817 | 3A | LDA 0800H | ||
0818 | 00 | |||
0819 | 08 | |||
081A | 1F | RAR | ||
081B | 32 | STA 0800H | ||
081C | 00 | |||
081D | 08 | |||
081E | 3A | LDA 0801H | ||
0820 | 01 | |||
0821 | 08 | |||
0822 | 1F | RAR | ||
0823 | 32 | STA 0801H | ||
0824 | 01 | |||
0825 | 08 | |||
0826 | 3A |
LDA 0802H | ||
0827 | 02 | |||
0829 | 08 | Последовательный сдвиг | ||
082A | 1F | RAR | байтов кода вправо | |
082B | 32 | STA 0802H | ||
082C | 02 | |||
082D | 08 | |||
082E | 3A | LDA 0803H | ||
082F | 03 | |||
0830 | 08 | |||
0831 | 1F | RAR | ||
0832 | 32 | STA 0803H | ||
0833 | 03 | |||
0834 | 08 | |||
0835 | 14 | INR D | Прибавление к счетчику единицы | |
0836 | 7A | MOV A, D | ||
0837 | FE | CPI 20H | Сравнение значения счетчика с 32D | |
0838 | 20 | |||
083A | 7A | M2 | MOV A, D | |
083B | 32 | STA 0808H | Запись первого результата в память | |
083C | 08 | |||
083D | 08 | |||
083E | 16 | MVI D,1FH | Счетчик = 31 | |
083F | 1F | |||
0840 | 3A | M3 | LDA 0803H | Загрузка первого слева байта кода в аккумулятор |
0841 | 03 | |||
0842 | 08 | |||
0843 | E6 | ANI E0H | Маскирование 3 первых разрядов кода | |
0844 | E0 | |||
0845 | FE | CPI 40H | Сравнение аккумулятора с 0100 0000В | |
0846 | 40 | |||
0847 | CA | JZ M4 | ||
0848 | 6B | |||
0849 | 08 | |||
084A | A7 | ANA A | Обнуление флага переноса | |
084B | 3A | LDA 0804H | ||
084C | 04 | |||
084D | 08 | |||
084E | 1F | RAL | ||
084F | 32 | STA 0804H | ||
0850 | 04 | |||
0851 | 08 | |||
0852 | 3A | LDA 0805H | ||
0853 | 05 | |||
0854 | 08 | |||
0855 | 17 | RAL | ||
0856 | 32 | STA 0805H | ||
0857 | 05 | |||
0858 | 08 | |||
0859 | 3A |
LDA 0806H | ||
085A | 02 | |||
085B | 08 | Последовательный сдвиг | ||
085C | 17 | RAL | байтов кода влево | |
085D | 32 | STA 0806H | ||
085E | 06 | |||
085F | 08 | |||
0860 | 3A | LDA 0807H | ||
0861 | 07 | |||
0862 | 08 | |||
0863 | 17 | RAL | ||
0864 | 32 | STA 0807H | ||
0865 | 07 | |||
0866 | 08 | |||
0867 | 15 | DCR D | Вычитание из счетчика единицы | |
0868 | 7A | MOV A, D | ||
0869 | FE | CPI 02H | Сравнение значения счетчика с 1D | |
086A | 02 | |||
086B | 7A | M4 | MOV A, D | |
086C | 32 | STA 0809H | Запись второго результата в память | |
086D | 08 | |||
086E | 09 | |||
086F | 76 | HLT | Останов программы |
Программа на языке BASIC
Программа была составлена на языке BASIC и отлажена на IBM-совместимом компьютере.
Текст программы
REM Программа по курсовой работе (каф 403).
REM Список переменных:
REM SCHET% - счетчик циклов.
REM D% - входной код.
REM B%, C% - выходные коды.
CLS
REM Задается размерность входного кода.
DIM D%(32)
REM Установка списка данных в начальное положение.
RESTORE
REM Запись входного кода. Цикл.
FOR I%=1 TO 32
REM Чтение I-го элемента входного кода.
READ D%(I%)
NEXT I%
REM Поиск первой комбинации 010. Цикл.
FOR SCHET%=2 TO 31
REM Проверка совпадения.
IF D%(SCHET%-1)=0 AND D%(SCHET%)=1 AND D%(SCHET%+1)=0 THEN GOTO 1
REM Сдвиг "окна".
NEXT SCHET%
REM Запись и вывод результата.
1 B%=SCHET%: PRINT "Номер первой единицы, стоящей между нулями: ";B%
REM Поиск последней комбинации 010. Цикл.
FOR SCHET%=31 TO 2 STEP -1
REM Проверка совпадения и запись результата.
IF D%(SCHET%-1)=0 AND D%(SCHET%)=1 AND D
%(SCHET%+1)=0 THEN GOTO 2
NEXT SCHET%
REM Запись и вывод результата.
2 C%=SCHET%: PRINT "Номер последней единицы, стоящей между нулями: ";C%
REM Входной код.
DATA 0,0,0,1,1,0,1,0,1,1,0,0,0,0,0,1,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,1
В результате работы программы, на экран было выведено сообщение:
Номер первой единицы, стоящей между нулями: 7
Номер последней единицы, стоящей между нулями: 30 Использованная .литература
1.Аванесян Г.Р. Лёвшин В.П. «Интегральные микросхемы ТТЛ, ТТЛШ» М93;
2.Лебедев О.Н. «Применение микросхем памяти в электронных устройствах» М94;
3.Мельников Б.С. Щеглов А.В. «Методические указания к курсовой работе .» М91;
4.«Цифровые интегральные микросхемы» М94.
Для заметок
[1] Необходимые микросхемы регистров и ПЗУ в серии 1533 отсутствуют.