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

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























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





    J3

Q0





0

0

0

0



Q20

0

1

0



     Q3Ф

Х

Х

Х

Ф

Ф

Ф

Ф



  Q1                                                                                                                                                                                 

                                               



J3 = Q2Q1Q0

















        K3

Q0





Ф

Ф

Ф

Ф



Q2Ф

Ф

Ф

Ф



     Q31

Х

Х

Х

0

0

0

0



  Q1                                                                                                                                                                                 

                                               



K3 = Q2







    J2

Q0





0

0

1

0



Q2Ф

Ф

Ф

Ф



     Q3Ф

Х

Х

Х

0

0

1

0



  Q1                                                                                                                                                                                 

                                               



J2 = Q1Q0





      K2

Q0





Ф

Ф

Ф

Ф



Q20

0

1

0



     Q31

Х

Х

Х

Ф

Ф

Ф

Ф



  Q1                                                                                                                                                                                 

                                               



K2 = Q3 v Q1Q0









    J1

Q0





0

1

Ф

Ф



Q20

1

Ф

Ф



     Q30

Х

Х

Х

0

1

Ф

Ф



  Q1                                                                                                                                                                                 

                                               



J1 = Q0







      K1

Q0





Ф

Ф

1

0



Q2Ф

Ф

1

0



     Q3Ф

Х

Х

Х

Ф

Ф

1

0



  Q1                                                                                                                                                                                 

                                               



K1 = Q0





    J0

Q0





1

Ф

Ф

1



Q21

Ф

Ф

1



     Q30

Х

Х

Х

1

Ф

Ф

1



  Q1                                                                                                                                                                                 





J0 = Q3Q2











    K0

Q0





Ф

1

1

Ф



Q2Ф

1

1

Ф



     Q3Ф

Х

Х

Х

Ф

1

1

Ф



  Q1                                                                                                                                                                                 

                                               



K0 = 1





      y

Q0





0

0

0

0



Q20

0

0

0



     Q31

Х

Х

Х

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 .

Предполагается, что шестые байты в указанных секторах первоначально пусты.

Это – задача с двойным (вложенным) циклом.







































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



EN

6





7







8







9





10









11





12





13







14

15







16







17







18

4





5

1





2







3

ДА

ДА

NB

PC           [Addr]

DE            40016

LOOP2

(Tz)=1

B              (B) -1

(Tz)=1

HL            (HL) + 1

PC            [ Addr ]

DE           (DE) + 1

LOOP1

C         ( C ) -1

M        (A)

B             2

10 - КОРР

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

A         [(DE)]

 C            6

HL         30016

A      (A)V(A)

DE         20016














Задание:



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 .

Предполагается, что шестые байты в указанных секторах первоначально пусты.

Это – задача с двойным (вложенным) циклом.











































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



EN

6





7







8







9





10









11





12





13







14

15







16







17







18

4





5

1





2







3

ДА

ДА

NB

PC           [Addr]

DE            40016

LOOP2

(Tz)=1

B              (B) -1

(Tz)=1

HL            (HL) + 1

PC            [ Addr ]

DE           (DE) + 1

LOOP1

C         ( C ) -1

M        (A)

B             2

10 - КОРР

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

A         [(DE)]

 C            6

HL         30016

A      (A)V(A)

DE         20016