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  | 
  Х 
		
		td>
   | 
Х   | 
Х  | ||
|   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
 ;счётчика байтов (т.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
 ;суммирования след. байтов ;чисел Х1 и Х2 либо Х3 и ;(Х1+Х2)(к началу внешнего цикла) (т.10)  | 
|
|   NB :  | 
  DCR  | 
  B  | 
  ; бл.15 
  | 
|  
 | 
  RZ  | 
  EN  | 
  ;бл.16
  | 
|   LXI  | 
  D,0400H  | 
  ;бл.17
  | 
|
|   JMP  | 
  LOOP2  | 
  ; бл.18
  | 
|
|   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 .
Предполагается, что шестые байты в указанных секторах первоначально пусты.
Это – задача с двойным (вложенным) циклом.
Блок – схема алгоритма :