I
часть
:
Проектирование вырожденного автомата .
Спроектировать на элементах ТТЛ “ генератор 4-х разрядных кодов “ некоторой системы счисления .
Т.е. синтезировать синхронный счётчик М–разрядный ( М < 16 ), на вход которого подаётся регулярная внешняя последовательность тактовых импульсов.
Каждое состояние счётчика ( т.е. цифра заданной системы ) сохраняется в течение одного полного такта. Значение цифр появляется на выходах Q3, Q2, Q1, Q0. Автомат также должен выработать синхронный перенос ( в след. разряд заданной системы), которым служит последний тактовый импульс в цикле счёта. Для его выделения должен быть сформирован строб “y” , т.е. булева функция , которая активна на последнем такте цикла. А само выделение должно обеспечивать минимальную задержку выходного импульса переноса.
В схеме автомата должны быть цепи , осуществляющие авто сброс в исходное состояние при каждом включении питания.
Требуется :
- составить таблицу функционирования автомата ;
- минимальную функцию возбуждения и строба ;
- построить осциллограммы всех выходных функций, включающие функции строба и сигнала переноса ;
- построить схему автомата .
Решение поставленной задачи :
а.) Составим таблицу функционирования автомата :
Q3
|
Q2
|
Q1
|
Q0
|
J3
|
K3
|
J2
|
K2
|
J1
|
K1
|
J0
|
K0
|
y
|
0
|
0
|
0
|
0
|
0
|
0
|
Ф
|
0
|
Ф
|
0
|
Ф
|
1
|
Ф
|
0
|
1
|
0
|
0
|
0
|
1
|
0
|
Ф
|
0
|
Ф
|
1
|
Ф
|
Ф
|
1
|
0
|
2
|
0
|
0
|
1
|
0
|
0
|
Ф
|
0
|
Ф
|
Ф
|
0
|
1
|
Ф
|
0
|
3
|
0
|
0
|
1
|
1
|
0
|
Ф
|
1
|
Ф
|
Ф
|
1
|
Ф
|
1
|
0
|
4
|
0
|
1
|
0
|
0
|
0
|
Ф
|
Ф
|
0
|
0
|
Ф
|
1
|
Ф
|
0
|
5
|
0
|
1
|
0
|
1
|
0
|
Ф
|
Ф
|
0
|
1
|
Ф
|
Ф
|
1
|
0
|
6
|
0
|
1
|
1
|
0
|
0
|
Ф
|
Ф
|
0
|
Ф
|
0
|
1
|
Ф
|
0
|
7
|
0
|
1
|
1
|
1
|
1
|
Ф
|
Ф
|
1
|
Ф
|
1
|
Ф
|
1
|
0
|
8
|
1
|
0
|
0
|
0
|
Ф
|
0
|
0
|
Ф
|
0
|
Ф
|
1
|
Ф
|
0
|
9
|
1
|
0
|
0
|
1
|
Ф
|
0
|
0
|
Ф
|
1
|
Ф
|
Ф
|
1
|
0
|
10
|
1
|
0
|
1
|
0
|
Ф
|
0
|
0
|
Ф
|
Ф
|
0
|
1
|
Ф
|
0
|
11
|
1
|
0
|
1
|
1
|
Ф
|
0
|
1
|
Ф
|
Ф
|
1
|
Ф
|
1
|
0
|
12
|
1
|
1
|
0
|
0
|
Ф
|
1
|
Ф
|
1
|
0
|
Ф
|
1
|
Ф
|
1
|
|
0
|
0
|
0
|
0
|
б.) Составим карты Карно и при помощи них найдём минимизированные функции возбуждения и строба .
0
|
0
|
0
|
0
|
0 |
0
|
1
|
0
|
Ф |
Х
|
Х
|
Х
|
Ф
|
Ф
|
Ф
|
Ф
|
J3 = Q2Q1Q0
Ф
|
Ф
|
Ф
|
Ф
|
Ф |
Ф
|
Ф
|
Ф
|
1 |
Х
|
Х
|
Х
|
0
|
0
|
0
|
0
|
K3 = Q2
0
|
0
|
1
|
0
|
Ф |
Ф
|
Ф
|
Ф
|
Ф |
Х
|
Х
|
Х
|
0
|
0
|
1
|
0
|
J2 = Q1Q0
Ф
|
Ф
|
Ф
|
Ф
|
0 |
0
|
1
|
0
|
1 |
Х
|
Х
|
Х
|
Ф
|
Ф
|
Ф
|
Ф
|
K2 = Q3 v Q1Q0
0
|
1
|
Ф
|
Ф
|
0 |
1
|
Ф
|
Ф
|
0 |
Х
|
Х
|
Х
|
0
|
1
|
Ф
|
Ф
|
J1 = Q0
Ф
|
Ф
|
1
|
0
|
Ф |
Ф
|
1
|
0
|
Ф |
Х
|
Х
|
Х
|
Ф
|
Ф
|
1
|
0
|
K1 = Q0
1
|
Ф
|
Ф
|
1
|
1 |
Ф
|
Ф
|
1
|
0 |
Х
|
Х
|
Х
|
1
|
Ф
|
Ф
|
1
|
J0 = Q3Q2
Ф
|
1
|
1
|
Ф
|
Ф |
1
|
1
|
Ф
|
Ф |
Х
|
Х
|
Х
|
Ф
|
1
|
1
|
Ф
|
K0 = 1
0
|
0
|
0
|
0
|
0 |
0
|
0
|
0
|
1 |
Х
|
Х
|
Х
|
0
|
0
|
0
|
0
|
y = Q3Q2
в.) Построим осциллограммы всех выходных функций , вкл функцию строба и сигнала переноса .
С
Q0
Q1
Q2
Q3
y
Cвых
г.) Построение схемы автомата .
II
часть :
Проектирование интерфейса ЗУ некоторого МПУ .
Построить интерфейс ЗУ на реальных МС , приведённых в таблице .
Блоки ПЗУ и ОЗУ должны содержать резервные места для модернизации . Резерв может быть до 50% рабочего и объёма блока , но не менее 1 МС выбранного типа .
При условии восьмиразрядного выхода требуется :
- определить объём пространства памяти , включая резервные сегменты ;
- составить таблицу адресов , начиная с адреса 0ХХ0, где ХХ = n – номер студента по журналу в 16-ричной системе ;
- построить упрощённую схему интерфейса .
При построении блока ПЗУ использовать МС ППЗУ серии КР556 для Lпзу < 6 Кб и МС СППЗУ ( К573 ) для Lозу > 7Кб .
При построении блока ОЗУ - МС с технологией : ТТЛ для Lозу < 3 Кб , И*ИЛ для 7Кб < Lозу < 9 Кб , МОП для 4КБ < Lозу < 6Кб .
При полу целом числе сегментов в блоке допускается использование МС другой технологии с ёмкостью 0,5 сегмента . Остаток неполного сегмента отнести к резерву .
Решение поставленной задачи :
а.) Определим объём пространства памяти , включая резервные сегменты .
Для ПЗУ можно выбрать пять МС СППЗУ типа К573РФ2 с организацией 2К * 8 = 2Кб .
Тогда объём одного сегмента можно выбрать равным 2 Кб = 800
16
.
Возьмем пять таких МС и , таким образом , получили объём ПЗУ равным 10 Кб , но нам необходимо набрать 11 Кб , поэтому возьмём ещё две МС СППЗУ типа К573РФ1 с организацией 1К*8 = 1Кб для организации шестого сегмента , половина которого будет использована , а другая половина будет в резерве.
Для резерва возьмём две МС СППЗУ типа К573РФ2 с организацией 2К * 8 = 2Кб , т.е. объём резерва получился равным 5 Кб.
С резервом в 5 Кб для ПЗУ получили восемь
сегментов.
Для ОЗУ можно выбрать МС nМОП типа КМ132РУ8А с организацией 1К * 4 = 0,5 Кб. Но для построения одного сегмента потребуется четыре такие МС .
С резервом в 2Кб для ОЗУ потребуется три таких сегмента .
Значит, общий объём
блока ЗУ с резервом должен составлять 8+3 = 11 сегментов
.
б.) Составим таблицу распределения адресов .
Сегмент
|
16-разрядный адрес
|
I
|
00E0 – 08DF
|
II |
08E0 – 10DF
|
III
|
10E0 – 18DF
|
IV |
18E0 – 20DF
|
V
|
20E0 – 28DF
|
VI |
28E0 – 30DF
|
VII
|
30E0 – 38DF
|
VIII
|
38E0 – 40DF
|
IX |
40E0 – 48DF
|
X |
48E0 –50DF
|
XI
|
50E0 –58DF
|
в.) Построение упрощённой схемы интерфейса ЗУ .
III часть :
Разработка фрагмента программы МПУ .
Составить фрагмент программы МПУ в виде подпрограммы ( или в виде программы обслуживания прерывания ПОП ) , что есть в варианте .
Начальный адрес для подпрограммы : [ P ] = 63 + n10
Требуется :
- на языке Ассемблера с соблюдением требований формата бланка ;
- комментарий должен давать полное описание действий конкретной задачи , а не описание данной команды ;
- в конце любого комментария должна быть дана продолжительность операции – требуемое число тактов синхронизации.
Решение поставленной задачи :
; Подпрограмма на языке Ассемблер :
ORG
|
00D4H
|
;Подпрограмма начинается с
;адреса 00D416
|
LXI
|
D,0200H
|
;бл.1
Загрузка адреса младшего
;байта числа Х1 в пару
;регистров DE (т.10)
|
MVI
|
B,0002H
|
;бл.2
Подготовка счётчика
;сложений, т.е.непосредствен-;ное присвоение регистру В
;значения 2 (т.7)
|
XRA
|
A
|
;бл.3
Обнуление аккумулятора ,
;а также установка в ноль тр-
;ров переноса Tc и Tv (т.4)
|
LOOP2:
|
LXI
|
H,0300H
|
;бл.4
Загрузка адреса младшего
;байта числа Х2 или (Х1+Х2) в
;пару регистров HL (т.10)
|
MVI
|
C,0006H
|
;бл.5
Подготовка счётчика
;байтов , т.е. непосредственное
;присвоение счётчику байтов С
;значения 6 , т.к. после
;сложения Х1 и Х2 может
;возникнуть перенос и число
;окажется уже в 6 байтах, а не в 5 (т.7)
|
LOOP1:
|
LDAX
|
D
|
;бл.6
Загрузка в аккумулятор
;следующего байта числа Х1
;или Х3, хранящегося по адресу
;в паре DE (т.7)
|
ADC
|
M
|
;бл.7
Суммирование байтов
;чисел Х1 или Х3 и Х2 или
;(Х1+Х2) , а также переноса,
;если такой был (т.4)
|
DAA
|
;бл.8
Десятичная коррекция ;аккумулятора(т.к. у меня коды
;BCD и максимальное число
;здесь 9, а не 16 ) (т.4)
|
MOV
|
M,A
|
;бл.9
Пересылка очередного
;байта частичной суммы
;(Х1+Х2) на место Х2 (т.7)
|
DCR
|
C
|
;бл.10
Уменьшение на 1
;счётчика байтов (т.5)
|
|
JZ
|
NB
|
;бл.11
УП: если содержимое сч.
;байтов равно 0 ( С = 0 ), то
;переход к бл. 15 , если же С =0,
;т.е. ещё не все байты чисел
;сложены, то переход к
;суммированию след. байтов,
;т.е. к блоку 12 (т.10)
|
INХ
|
D
|
;бл.12
Переход к адресу
;следующего байту числа Х1
;или Х3 путём положительного
;инкремента пары регистров DE (т.5)
|
INХ
|
H
|
;бл.13
Переход к адресу
;следующего байта числа Х2
;или (Х1+Х2) путём
;положительного инкремента
;пары регистров HL (т.5)
|
JMP
|
LOOP1
|
;бл.14
БП к блоку 6 для
;суммирования след. байтов
;чисел Х1 и Х2 либо Х3 и
;(Х1+Х2)(к началу внешнего цикла) (т.10)
|
NB :
|
DCR
|
B
|
; бл.15
Переход к суммированию суммы ;Х1+Х2 с числом Х3, т.е. уменьшение ;счётчика сложений на 1 (т.5)
|
|
RZ
|
EN
|
;бл.16
УП : если В=0 , т.е. все три числа ;сложены , то возврат в основную ;программу , ежели В = 0 , т.е. не все числа ;сложены , то переход к след. блоку 17 (т.10)
|
LXI
|
D,0400H
|
;бл.17
Загрузка адреса младшего байта числа ;Х3 в пару регистров DE (т.10)
|
JMP
|
LOOP2
|
; бл.18
БП к блоку 4 для суммирования числа ;Х3 с суммой ( Х1+Х2) (к началу внешнего ;цикла ) т.10)
|
EN :
|
END
|
; конец подпрограммы
|
III часть :
Подпрограмма .
Сложить три положительных 10 – значных десятичных числа Х1, Х2, Х3 , представленные в коде BCD и хранящиеся в секторах ОЗУ с адресами младших байтов соот. 20016; 30016; 40016 .
Поместить полученную сумму (также в коде BCD) с учётом старшего (шестого) байта на случай переполнения в секторе ОЗУ на место Х2, т.е. по адресу 30016 .
Предполагается, что шестые байты в указанных секторах первоначально пусты.
Это – задача с двойным (вложенным) циклом.
Блок – схема алгоритма :
Задание:
I
часть :
Счётчик прямого счёта .
М = 13 ; триггеры типа JK.
Код двоичный, возрастающий;
Используются состояния : а0 , а1 … а12 .
II
часть :
Интерфейс ЗУ .
Lпзу = 11 KB ; Lозу = 4 KB .
III
часть :
Подпрограмма .
Сложить три положительных 10 – значных десятичных числа Х1, Х2, Х3 , представленные в коде BCD и хранящиеся в секторах ОЗУ с адресами младших байтов соот. 20016; 30016; 40016 .
Поместить полученную сумму (также в коде BCD) с учётом старшего (шестого) байта на случай переполнения в секторе ОЗУ на место Х2, т.е. по адресу 30016 .
Предполагается, что шестые байты в указанных секторах первоначально пусты.
Это – задача с двойным (вложенным) циклом.
Блок – схема алгоритма :
|