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

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

Спроектировать на элементах ТТЛ ” генератор 4-х разрядных кодов ” некоторой системы счисления.

Т. е. синтезировать синхронный счетчик М-разрядный ( М

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

При построении блока ОЗУ – МС с технологией : ТТЛ для Lозу

При полу целом числе сегментов в блоке допускается использование МС другой технологии с емкостью 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


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