Вычислительная техника

часть Проектирование вырожденного автомата .

Спроектировать на элементах ТТЛ “ генератор 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

б.) Составим карты Карно и при помощи них найдём минимизированные функции возбуждения и строба .

Q0
J3

0
0
0
0

Q2 0
0
1
0

Q3 Ф
Х
Х
Х

Ф
Ф
Ф
Ф

Q1

J3 = Q2Q1Q0

Q0
K3

Ф
Ф
Ф
Ф

Q2 Ф
Ф
Ф
Ф

Q3 1
Х
Х
Х

0
0
0
0

Q1

K3 = Q2

Q0
J2

0
0
1
0

Q2 Ф
Ф
Ф
Ф

Q3 Ф
Х
Х
Х

0
0
1
0

Q1

J2 = Q1Q0

Q0
K2

Ф
Ф
Ф
Ф

Q2 0
0
1
0

Q3 1
Х
Х
Х

Ф
Ф
Ф
Ф

Q1

K2 = Q3 v Q1Q0

Q0
J1

0
1
Ф
Ф

Q2 0
1
Ф
Ф

Q3 0
Х
Х
Х

0
1
Ф
Ф

Q1

J1 = Q0

Q0
K1

Ф
Ф
1
0

Q2 Ф
Ф
1
0

Q3 Ф
Х
Х
Х

Ф
Ф
1
0

Q1

K1 = Q0

Q0
J0

1
Ф
Ф
1

Q2 1
Ф
Ф
1

Q3 0
Х
Х
Х

1
Ф
Ф
1

Q1

J0 = Q3Q2

Q0
K0

Ф
1
1
Ф

Q2 Ф
1
1
Ф

Q3 Ф
Х
Х
Х

Ф
1
1
Ф

Q1

K0 = 1

Q0
y

0
0
0
0

Q2 0
0
0
0

Q3 1
Х
Х
Х

0
0
0
0

Q1

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 Кб = 80016. Возьмем пять таких МС и , таким образом , получили объём ПЗУ равным 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 .
Предполагается, что шестые байты в указанных секторах первоначально пусты.
Это – задача с двойным (вложенным) циклом.

Блок – схема алгоритма

DE 20016

B 2

A (A)V(A)

HL 30016

C 6

A [(DE)]

A (A)+[(M)]+(Tc)

10 — КОРР
M (A)

C ( C ) -1

(Tz)=1

LOOP1
DE (DE) + 1

HL (HL) + 1

PC [ Addr ]

B (B) -1

(Tz)=1

LOOP2
DE 40016

PC [Addr]

NB
ДА
ДА

EN
1

2

3
4

5
6

7

8

9

10

11

12

13

14
15

16

17

18

Задание

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 .
Предполагается, что шестые байты в указанных секторах первоначально пусты.
Это – задача с двойным (вложенным) циклом.

Блок – схема алгоритма

DE 20016

B 2

A (A)V(A)

HL 30016

C 6

A [(DE)]

A (A)+[(M)]+(Tc)

10 — КОРР
M (A)

C ( C ) -1

(Tz)=1

LOOP1
DE (DE) + 1

HL (HL) + 1

PC [ Addr ]

B (B) -1

(Tz)=1

LOOP2
DE 40016

PC [Addr]

NB
ДА
ДА

EN
1

2

3
4

5
6

7

8

9

10

11

12

13

14
15

16

17

18