РефератыКоммуникации и связьМеМетодичка для курсового проектирования по ПТЦА прикладная теория цифровых автоматов

Методичка для курсового проектирования по ПТЦА прикладная теория цифровых автоматов

2Антик М.И. 11_03_91 МИРЭА


_АЛГОРИТМЫ ПРОЦЕДУРНОГО ТИПА. ОПЕРАЦИОННЫЕ УСТРОЙСТВА


Алгоритмы этого типа являются следующим этапом обобщения


описаний вычислительных процессов. Теперь, по сравнению с ал-


горитмами автоматного типа, на каждом шаге, помимо модифика-


ции памяти, идентифицирующей шаг алгоритма, разрешается изме-


нять любую другую память устройства локально (по частям) или


глобально (всю сразу).


Устройство-исполнитель алгоритма этого типа будем назы-


вать операционным устройством (ОУ).


ОУ можно рассматривать как один синхронный автомат со


сложно структурированной памятью - состоянием: часть памяти


используется для идентификации шага алгоритма, остальная па-


мять используется для запоминания промежуточных данных, вы-


числяемых в процессе последовательного, по шагам, выполнения


алгоритма. Такая модель вычислителя особенно удобна для рас-


чета продолжительности одного такта работы устройства.


Другой удобной моделью вычислителя является совокуп-


ность взаимодействующих синхронных автоматов, один из которых


называется управляющим автоматом (УА), а объединение всех ос-


тальных автоматов называется операционным автоматом (ОА).


УА является исполнителем алгоритма автоматного типа, ко-


торый входит составной частью в любой алгоритм процедурного


типа. Кроме того, УА инициирует действия отдельных шагов ал-


горитма и участвует в их выполнении.


ОА выполняет все вычисления на отдельных шагах алгоритма


под управлением УА; кроме того, к ОА удобно отнести все вы-


числения предикатных функций, оставив УА только анализ вычис-


ленных предикатных значений.


Прежде чем переходить к точным терминам, рассмотрим сле-


дующиe примеры алгоритмов процедурного типа.


Например, каноническое описание синхронного конечного


автомата может быть интерпретировано (истолковано) как одно-


шаговый алгоритм процедурного типа.



┌──────┐ │


│ ┌──V──V─────┐


│ │ B=FO(S,A) │


│ │ │


│ │ S:=FS(S,A)│


│ └─────┬─────┘


└─────────┘


Исполнитель этого алгоритма состоит только из ОА. На


каждом шаге этого алгоритма изменяется вся память устройства,


поэтому управление памятью не требуется, идентифицировать ша-


ги этого алгоритма не надо.


Например, инкрементор с одноразрядным входом и однораз-


рядным выходом может быть реализацией следующих преобразова-


ний:



█ p:=1 █



┌────────┐ │


│ ┌─────V─V───────┐


│ │ (p:, b) = a+p │


│ └───────┬───────┘


└──────────┘


- 2 -


ОА, реализующий инкрементор в целом, будет следующим:


┌──┬─┐


a ──────────────────┤HS│S├────_b


┌─┬─┐p │ │ │


начальное значен.─┤S│T├──┤ │P├──┐


├─┤ │ └──┴─┘ │


SYN ─────────/C│ │ │


┌┤D│ │ │


│└─┴─┘ │


└───────────────┘


Конечно, эта реализация совпадает с реализацией алгоритма ав-


томатного типа, если состояние р1 кодируется 1, а состояние


р0 - 0.


Этот пример показывает,что до начала вычислений может


потребоваться начальная установка памяти. На самом деле это


необходимо было уже в алгоритмах автоматного типа, так как


код начального состояния требует предварительной установ-


ки. Ограничимся здесь обозначением этой проблемы, а решение


ее, связанное прежде всего с корректной синхронизацией ус-


тройства в первом такте его работы, рассмотрим ниже.


При рассмотрении процедуры построения автомата Мура эк-


вивалентного автомату Мили , не обсуждалась простая возмож-


ность ее реализации и на структурном уровне. Например, только


что рассмотренный автомат Мили может быть преобразован в эк-


вивалентный автомат Мура по одному из следующих вариантов:


┌┬─┬┐t┌──┬─┐ ┌──┬─┐ ┌┬─┬┐


a ──_┤│T│├_┤HS│S├─_b a ─────_┤HS│S├─_┤│T│├─_b


─/┴┴─┴┘ │ │ │ │ │ │─/┴┴─┴┘


C │ │ │ C │ │ │ C


─/┬┬─┬┐p│ │ │ ─/┬┬─┬┐p│ │ │


┌_┤│T│├_┤ │P├┐ ┌_┤│T│├_┤ │P├┐


│ └┴─┴┘ └──┴─┘│ │ └┴─┴┘ └──┴─┘│


└─────────────┘ └─────────────┘


При таких структурных преобразованиях проще истолковы-


вать алгоритмы как процедурные.


█ █


█ p:=1; t:=0 █ █ p:=1 █


█ █


┌────────┐ │ ┌────────┐ │


│ ┌─────V─V───────┐ │ ┌─────V─V───────┐


│ │t:=a;(p:,b)=t+p│ │ │ (p , b):= a+p │


│ └───────┬───────┘ │ └───────┬───────┘


└──────────┘ └──────────┘


БЛОК-ТЕКСТ. Способ описания автоматного алгоритма после


некоторых дополнений может быть использован и для описания


алгоритмов в процедурной форме:


Блок-текст состоит из трех частей:


1)- Описание переменных и начальных значений памяти.


2)- Описания функций и связей. Записываются любые функции и


функциональные связи (в том числе предикатные), не использу-


ющие запоминания. Переменные из левой части операции присва-


ивания таких функциональных описаний используются в блоках


процедуры.


3)- Процедура, состоящая из блоков (микроблоков) операторных


и блоков переходов:


- операторные - в скобках вида {.....},


- перехода - в скобках вида <<...>>;


и те, и другие блоки могут снабжаться метками, стоящими перед


блоком. В блоках перехода используется оператор GO в одной


из двух форм:


GO m - безусловный переход,


GO (P; m0,m1,m2,...) - условный переход.


здесь m0,m1,... - метки блоков,


P - предикатное значение,интерпретируемое оператором GO


- 3 -


как неотрицательное целое число, являющееся порядковым номе-


ром метки в списке меток оператора GO. С этой метки должно


быть продолжено выполнение алгоритма. Блоки условных перехо-


дов эквивалентны предикатным вершинам блок-схемы алгоритма.


На следующем более сложном примере демонстрируется пос-


ледовательность синтеза операционного устройства.


Пример. Вычислитель наибольшего общего делителя (НОД)


двух натуральных чисел (8-разрядных).


1) Разработаем интерфейс вычислителя:


8 ┌──┬─────┬──┐


═══╪═>╡I1│ НОД │ │


│ │ │ │ 8


8 │ │ │D ╞══╪══>


═══╪═>╡I2│ │ │


├──┤ ├──┤


─────>┤rI│ │rO├─────>


├──┤ │ │


─────>┤ C│ │ │


└──┴─────┴──┘


I1[7..0], I2[7..0] -входные информационные шины.


rI -входной сигнал готовности: если rI=1, то на входах I1,


I2 готовы операнды.


D[7..0] -выходная информационная шина .


rO -выходной сигнал готовности: если rO=1, то готов резуль-


тат на шине D, который сохраняется до появления новых операн-


дов.


2) Математическое обоснование алгоритма вычислений:


Идея алгоритма, следуя Евклиду (IIIв. до р.Х.), заключа-


ется в том, что НОД двух натуральных чисел А и В в случае ра-


венства этих чисел совпадает с любым из них, а в случае их


неравенства совпадает с НОД двух других чисел: меньшего и


разности между большим и меньшим. Последовательно, уменьшая


числа, получим два равных числа -значение одного из них и бу-


дет НОД исходных чисел.


3) Блок-схема алгоритма (микропрограмма в содержательном


виде):


- 4 -




┌──────V──────┐


m1│ rO: = 0 │


└──────┬──────┘


│┌──────────────────┐


││┌─────┐ │


─VVV─ │ │


/ 0 │ │


< rI>─────┘ │


_/ │


│1 │


┌──────V──────┐ │


│ rO: = 0 │ │


│ │ │


m2│ А: = I1 │ │


│ │ │


│ B: = I2 │ │


└──────┬──────┘ │


┌───────────────────┐│ │


│ ┌─────VV──────┐ │


│ m3│ (p,S)=A - B │ │


│ └──────┬──────┘ │


│ ─V─ m6 │


│ / =0 ┌──────────┐│


│ z <S==0>───>┤ rO:=1;D=A├┘


│ __/ └──────────┘


│ │╪0


│ V


│ 0 / 1


│ ┌───────< p >────────┐


│ ┌───────V──────┐ _/ ┌───────V──────┐


│m4│ (x,B:)=-A+B │ m5│ (x,A:)=A - B │


│ └───────┬──────┘ └───────┬──────┘


└──────────┴────────────────────┘


Или в виде блок-текста:


I1[7..0], I2[7..0] --входные шины


D[7..0] --выходная шина


rI, rO --сигналы готовности


A[7..0]:, B[7..0]: --память текущих значений


S[7..0] --разность


z, p --предикатные переменные


z=┐(!/S) --сжатие(свертка) S[7..0] по ИЛИ-НЕ


--можно записать иначе z=(S==0)


D=A


-------------------------------------------------------------------


m1{rO:=0}


g1<<GO(rI;g1,m2)>>


m2{rO:=0; A:=I1; B:=I2}


m3{(p,S)=A-B}


<<GO(z;g2,m6)>>


g2<<GO(p;m4,m5)>>


m4{(x,B:)=-A+B}


<<GO m3>>


m5{(x,A:)= A-B}


<<GO m3>>


m6{rO:=1}


<<GO g1>>


- 5 -


4) Разработка функциональной схемы операционного автомата.


В ОА должны быть реализованы все переменные с памятью и


без,а также вычислительные операции,используемые в алгоритме.


A ╔══════════════════════════════>D


─/┬┬──┬┐ ║ ┌────────────┐


C││RG││ ║ │ f1=(A-B) │


││ ││ ║ A│ │


I1═════>══>╡│ │╞══╝ ═>╡ f2=(-A+B)│ ┌─┐


││ ││ │ │S S│1│


││ ││ │ ╞> ═>┤ o───>z


┴┴──┴┘ │ │ │ │


B │ │ └─┘


─/┬┬──┬┐ │ │


C││RG││ │ ├────────────>p


││ ││B B│ │


I2═════>═>╡│ │╞> ═>╡ │ ─/┬┬─┬┐


││ ││ │ │ C││ │├>rO


││ ││ │ │ ││ ││


rI─────>┴┴──┴┘ └────────────┘ └┴─┴┘


Кроме того, в ОА необходимо реализовать все информацион-


ные связи, соответствующие микрооперации коммутации, а также


микрооперации запоминания (загрузки, записи) и обнуления.


╔══════════════════════════════════════════════╗


║ A ╔══════════════════════║═══════>D


║ ┌────┐ ─/┬┬──┬┐ ║ ┌────┐ ┌──────┐ ║


║ │ MUX│ C││RG││ ║ │M2*8│ 1─>┤cr SM│ ║


╠═>┤0 │ ││ ││ ║ │ │ ├─ │ ║


I1══║═>┤1 ╞══════>╡│ │╞══╩══>╡ ╞═══>╡I1 │ ║ ┌─┐


║ ├ │ ││ ││ A │ │ │ │ ║ │1│


║ │А │ W││ ││ ├─ │ │ S╞═╩>╡ o───>z


║ └A───┘ ─A┴┴──┴┘ └A───┘ │ │ │ │


║ │ │ │ │ │ └─┘


║ umA uA uiA │ │


║ B │ │


║ ┌────┐ ─/┬┬──┬┐ ┌────┐ │ │


║ │ MUX│ C││RG││ │M2*8│ │ p├─────────>p


╚═>╡0 │ ││ ││ B │ │ │ │


I2════>╡1 ╞══════>╡│ │╞═════>╡ ╞═══>╡I2 │ C


├ │ ││ ││ │ │ │ │ ─/┬┬─┬┐


│А │ W││ ││ ├─ │ │ │1─>┤│T│├>rO


└A───┘ ─A┴┴──┴┘ └A───┘ └──────┘R W││ ││


│ │ │ ─A─A┴┴─┴┘


uMB uB uiB urO uwO


5) Формулировка требований к управляющему автомату.


При формировании управляющих сигналов следует обратить


внимание не только на операции, которые необходимо выполнить


на данном шаге, но и на те оперции, которые нельзя выполнять


на этом шаге, это - как правило, операции изменения памяти.


Будем считать, что операция активна, если значение уп-


равляющего сигнала равно 1.


- 6 -


Для управления вычислениями на каждом шаге алгоритма


потребуются следующие управляющие сигналы:


║umA│umB│uwA│uwB│uiA│uiB│urO│uwO│


══╬═══╪═══╪═══╪═══╪═══╪═══╪═══╪═══╡


m1║ │ │ │ │ │ │ 1 │ 0 │


──╫───┼───┼───┼───┼───┼───┼───┼───┤


m2║ 1 │ 1 │ 1 │ 1 │ │ │ 1 │ 0 │


──╫───┼───┼───┼───┼───┼───┼───┼───┤


m3║ │ │ 0 │ 0 │ 0 │ 1 │ │ 0 │


──╫───┼───┼───┼───┼───┼───┼───┼───┤


m4║ │ 0 │ 0 │ 1 │ 1 │ 0 │ │ 0 │


──╫───┼───┼───┼───┼───┼───┼───┼───┤


m5║ 0 │ │ 1 │ 0 │ 0 │ 1 │ │ 0 │


──╫───┼───┼───┼───┼───┼───┼───┼───┤


m6║ │ │ 0 │ │ │ │ 0 │ 1 │


──╨───┴───┴───┴───┴───┴───┴───┴───┘


В незаполненных клетках сигналы безразличны.


Заметив, что umA = umB , uiB = ┐uiA , окончательно полу-


чаем:


╔══════════════════════════════════════════════╗


║ A ╔══════════════════════║═══════>D


║ ┌────┐ ─/┬┬──┬┐ ║ ┌────┐ ┌──────┐ ║


║ │ MUX│ C││RG││ ║ │M2*8│ 1─>┤cr SM│ ║


╠═>╡0 │ ││ ││ ║ │ │ ├─ │ ║


I1══║═>╡1 ╞══════>╡│ │╞══╩══>╡ ╞═══>╡I1 │ ║ ┌─┐


║ ├ │ ││ ││ │ │ │ │ ║ │1│


║ │А │ W││ ││ ├─ │ │ S╞═╩>╡ o───>z


║ └A───┘ ─A┴┴──┴┘ └A───┘ │ │ │ │


║ └────┐ ┌─┘ B ┌────┘ ├─ │ └─┘


║ ┌────┐│ │─/┬┬──┬┐ │ ┌────┐ │ │


║ │ MUX││ │ C││RG││ │ │M2*8│ │ p├─────────>p


╚═>╡0 ││ │ ││ ││ │ │ │ │ │


I2════>╡1 ╞│═══│═>┤│ │╞══│══>┤ ╞═══>╡I2 │


├ ││ │ ││ ││ │ │ │ │ │


│А ││ │ W││ ││ │ ├─ │ │ │ C


└A───┘│ │─A┴┴──┴┘ │ └A───┘ └──────┘ ─/┬┬─┬┐


│ │ │ └─┐ │ ┌─┐│ 1─>┤│T│├>rO


│ │ │ │ ├>┤ o┘ R W││ ││


├────┘ │ │ │ └─┘ ─A─A┴┴─┴┘


umB uwA uwB uiA urO uwO


---│--------│----│-----│----------------------│-│-----


y1 y2 y3 y4 y5 y6


║y1│y2│y3│y4│y5│y6│


══╬══╪══╪══╪══╪══╪══╡


m1║ │ │ │ │ 1│ 0│


──╫──┼──┼──┼──┼──┼──┤


m2║ 1│ 1│ 1│ │ 1│ 0│


──╫──┼──┼──┼──┼──┼──┤


m3║ │ 0│ 0│ 0│ │ 0│


──╫──┼──┼──┼──┼──┼──┤


m4║ 0│ 0│ 1│ 1│ │ 0│


──╫──┼──┼──┼──┼──┼──┤


m5║ 0│ 1│ 0│ 0│ │ 0│


──╫──┼──┼──┼──┼──┼──┤


m6║ │ 0│ │ │ 0│ 1│


──╨──┴──┴──┴──┴──┴──┘


- 7 -


Структура вычислителя:


┌────────────────────────────────┐


══>╡I1 │


│ │


══>╡I2 ОА D╞══>


│ │


┌──/C rO├──>


│ │ │


│ │z p umB uwA uwB uiA urO uwO │


│ └┬──┬──A───A───A───A───A───A─────┘


│ │ │ │ │ │ │ │ │


│ │ │ │ │ │ │ │ │


│ ┌V──V──┴───┴───┴───┴───┴───┴─────┐


│ │z p y1 y2 y3 y4 y5 y6 │


│ │ │


┴──/C │


│ УА │


──>┤rI │


└────────────────────────────────┘


УА должен выполнять следующий алгоритм автоматного типа,


представленный в виде блок-текста:


m1{xxxx10}


g1<<GO(rI;g1,m2)>>


m2{111x10}


m3{x000x0}


<<GO(z;g2,m6)>>


g2<<GO(p;m4,m5>>


m4{0011x0}


<<GO m3>>


m5{0100x0}


<<GO m3>>


m6{x0xx01}


<<GO g1>>


МИКРООПЕРАЦИЯ - базисное (элементарное) действие, необ-


ходимое для получения (вычисления) значения одной или более


переменных.


Микрооперация присваивания В=А означает, что переменные


левой части получают значения выражения из правой части.


Всегда разрядность левой части равна разрядности правой час-


ти. При этом биты, расположенные на одной и той же позиции в


левой и правой частях, равны.


Неиспользуемые разряды в левой части и произвольные зна-


чения в правой части микрооперации присваивания обозначаются


(х). Например:


(В[7],x,B[6..0]) = (A[7..0],x)


означает арифметический сдвиг влево на один разряд 8-разряд-


ного числа с присваиванием произвольного значения младшему


разряду и с потерей старшего после знака разряда. А, напри-


мер, микрооперация


(B[7..0],d) = (A[7],A[7..0])


означает арифметический сдвиг вправо на один разряд.


Микрооперация


(p,S[3..0]) = A[3..0] + B[3..0] + q


описывает действие, выполняемое стандартным 4-разрядным сум-


матором, если ( А,В,q ) являются его непосредственными входа-


ми, а ( р,S ) - выходами.


Микрооперация ( : ) - двоеточие - означает запоминание


(изменение значения) в памяти устройства. Переменная типа па-


мять сохраняет свое значение между двумя очередными присва-


иваниями.


- 8 -


Микрооперации всегда входят в состав микрооператоров.


МИКРООПЕРАТОР - набор взаимосвязанных микроопераций (или


одна микрооперация ), выполняемых одновременно и необходимых


для получения одного или более значений. Например:


( e,D:) = R1 + R2 + c


Фрагмент аппаратуры, реализующей этот микрооператор, мог бы


быть, например, таким:


┌───┐


c │MUX│


┌┬──┬┐ │ │ ┌───┐


││T │├───>┤0 │ ┌────┐ │MUX│ D


└┴──┴┘ ──>┤1 │ │ SM│ │ │ ┌┬──┬┐


──>┤А ├───>┤cr │ ═══>╡0 ╞═══>╡│RG│╞══>


├───┤ │ S╞═════>╡1 │ └┴──┴┘


R1 │MUX│ │ │ ═══>╡А │


┌┬──┬┐ │ │ │ │ └───┘


││RG│╞═══>╡0 ╞═══>╡I1 │ ┌───┐


└┴──┴┘ ══>╡1 │ │ │ │MUX│


══>╡А │ │ │ │ ├────────────>e


├───┤ │ p├─────>┤0 │


R2 │MUX╞═══>╡I2 │ ───>┤1 │


┌┬──┬┐ │ │ └────┘ ───>┤А │


││RG│╞═══>╡0 │ └───┘


└┴──┴┘ ══>╡1 │


══>╡А │


└───┘


Имена всех переменных, используемых в этом микрооператоре,


означают выполнение микроопераций коммутации ( транспортиров-


ки ). Значения переменных коммутируются на входы суммматора,


а результат суммирования - в места расположения переменных.


МИКРОБЛОК - набор микрооператоров, выполняемых одновре-


менно ( в одном такте ) и синхронно. В одном микроблоке любо-


му из битов присваивается только одно значение.


Синхронность означает, что во всех микрооператорах одно-


го микроблока используется только "старое" значение памяти.


Например:


{ (p,A):= A + B


(C,r):= A + D }


- и в том, и в другом микрооператоре используется одно и то


же старое значение А.


В то же время в микроблоке:


{ (C,x):= A + D


(x,A)= C + B }


в первом микрооператоре используется новое значение А , а во


втором - старое значение С. Разумеется, эти два действия вы-


полняются одновременнo на двух разных сумматорах.


При реализации микроблока { A:= B ; B:= 0 } обязательна


синхронная реализация В:=0 ( хотя обычно такое действие проще


реализовать асинхронно, но это приводит к ошибке ). Другой


правильный вариант: можно выполнить В:=0 асинхронно, но в


следющем такте.


Всегда предполагается, что предикат вычисляется вместе


(в одном такте) с тем микроблоком, за которым непосредственно


следует его использование.Таким образом, здесь, также как и в


микроблоке

, используется старое значение памяти, существовав-


шее перед входом в микроблок. Это связано с особенностями


взаимодействия ОА и УА. Например:


- 9 -


█ █


█ CT:=(╪0)█ █ CT:=(╪0)█


█ █


│ │


┌────V───┐ ┌────V───┐


m1│ CT:=3 │ m1│ CT:=3 │


└────┬───┘ └────┬───┘


┌──────>│ ┌──────>│


│ ─V─ │ ─V─


│ / =0 │ / =0


│ <CT==0>─> │ <CT==0>─>


│ ___/ │ ___/


│ │╪0 │ │╪0


│ ┌────V───┐ │ ┌────V───┐


│m2│........│ │m2│........│


│ │ │ │ │ │


│ │CT:=CT-1│ │ │CT:=CT-1│


│ └────┬───┘ │ └────┬───┘


└───────┘ │ ┌────V───┐


│m3│........│


│ └────┬───┘


└───────┘


В первом случае цикл будет выполнен 4 раза; во втором - если


в микроблоке m3 нет операций, модифицирующих СТ, - 3 ра-


за. ( Обратите внимание на начальное значение СТ!)


МИКРОКОМАНДА - набор сигналов, поступающий из УА в ОА и


интерпретируемый как управляющий,т.е. необходимый для выпол-


нения всех микроопераций одного микроблока. Сигналы, входящие


в микрокоманду, могут принимать участие в микрооперациях и в


качестве информационных.


Микрокомандой также иногда называют слово управляющей


памяти (обычно ПЗУ), являющееся частью УА. Для различения


этих понятий слово управляющей памяти будем называть МИКРО-


ИНСТРУКЦИЕЙ.


МИКРОПРОГРАММА СОДЕРЖАТЕЛЬНАЯ - алгоритм, представленный


в виде микроблоков и предикатных блоков в одной из принятых


форм, например, в виде блок-схемы или блок-текста.


МИКРОПРОГРАММА КОДИРОВАННАЯ - аппаратная форма содержа-


тельной микропрограммы в виде кодов, заполняющих управляющую


память.


_КАНОНИЧЕСКАЯ СТРУКТУРА ОПЕРАЦИОННОГО АВТОМАТА


В общем случае каноническая структура операционного ав-


томата имеет вид:


███████████████████████████████████████████████████████████


█ █


█ ┌──────────┐ ┌┬──────┬┐ ┌──────────┐ ┌───────┐ █


██>╡коммутация│ ││память││ │коммутация│ │функции▐███


│ ▐███>╡│ │▐██>╡ ▐██>╡ │


██>╡ │ ││ ││ │ │ │ ▐███>


└─A────────┘ ─/─┴┴───A──┴┘ └──A───────┘ └──A────┘


█ ┌─┐│CC █ █ █


█ SYN─>┤&├┘ █ █ █


█ ┌┤ │ █ █ █


█ yC│└─┘ █ █ █


└────────────────────────────────────────────────┘


сигналы управления


Столь четкого разграничения операций на зоны (память, комму-


тация, функции) может и не быть. Например, такие широко ис-


пользуемые функции как сдвиги либо хорошо совмещаются с


коммутацией, либо интегрируются с регистрами хранения.Также


часто интегрируются с хранением функции инкремента и


- 10 -


декремента (счетчики обычные и реверсивные).


Особо выделим сигнал yС, управляющий доступом синхросиг-


налов в ОА. Такой вариант управления, называемый условной


синхронизацией, позволяет запретить любые изменения памяти ОА


в каком-либо такте. Причем, если рабочим является срез (зад-


ний фронт) сигнала синхронизации, то используется элемент И,


как и показано на рисунке.Если же рабочим является фронт (пе-


редний фронт) сигнала, то используется элемент ИЛИ. (Первый


перепад сигнала синхронизации в новом такте не должен быть


рабочим.)


_ОПТИМИЗАЦИЯ ОПЕРАЦИОННОГО АВТОМАТА


При проектировании вычислительного устройства основными


являются ограничения на:


1)- время вычисления;


2)- объем аппаратуры, реализующей вычисления;


3)- тип применяемых базовых функций.


ОПТИМИЗАЦИЯ АПППАРАТУРЫ ПРИ СОХРАНЕНИИ МИНИМАЛЬНОГО ВРЕМЕНИ


Алгоритм функционального типа обладает максимальным по-


тенциальным параллелизмом (в рамках данной алгоритмической


идеи), и,следовательно, его реализация в виде КС обладает


максимальным быстродействием по сравнению с любыми другими


вычислителями. Невозможность реализации вычислителя в виде КС


может быть обусловлена следующими причинами:


- слишком велик объем аппаратуры КС;


- функциональное представление и его реализация являются


статическим отображением входных объектов на выходные: это


исключает возможность работы с объектами, которые "ведут се-


бя" более сложно во времени; невозможно также реализовать


принципиально рекуррентные алгоритмы (см.,например,алгоритм


Евклида для нахождения НОД).


Тем не менее, если формально алгоритм функционального


типа может быть записан, то проектирование устройства надо


начинать с записи именно такого алгоритма.


Минимизация аппаратуры "сложной" КС с переходом на про-


цедурный вариант реализации связан с "экономией" числа опера-


ционных элементов, т.е. со слиянием некоторых из них в один


функциональный модуль, выполняющий эти операции по очереди.


Такое решение потребует запоминания всех переменных (входных


и выходных),связанных с выполнением этих операций. Требуется


также управление памятью, связанной с этим функциональным мо-


дулем, а также - может быть - управление самим функциональным


модулем, если он объединил существенно различные функции.


Переход к процедурной реализации и, следовательно, к


дискретизации времени неизбежно увеличит время вычисления од-


ного результата - даже при реализации структуры подобной КС.


При этом, как ни странно, может уменьшиться время следующих


друг за другом вычислений именно за счет дискретизации време-


ни и применения так называемых "конвейерных" вычислений - но


об этом речь пойдет в другом курсе.


Рассмотрим возможность сокращения аппаратуры без увели-


чения времени решения, достигнутого в алгоритме функциональ-


ного типа. Сопоставим схеме устройства, реализующего алгоритм


функционального типа, простую модель в виде направленного


графа. Вершины графа будут соответствовать операциям, а дуги


- переменным алгоритма. Назовем такой граф сигнальным (графом


потоков данных). Заметим, что сигнальный граф всегда будет


ациклическим.


Минимальность времени вычислений сохранится, если совме-


щать в один функциональный модуль операции, которые располо-


жены на одном и том же пути в сигнальном графе, либо на аль-


тернативных путях решения.


- 11 -


_МИНИМИЗАЦИЯ АППАРАТУРЫ


Может оказаться, что на одном пути в сигнальном графе


расположены операции, плохо или вовсе не совмещаемые друг с


другом (т.е. совмещение не дает экономии в аппаратуре функци-


онального модуля). Возможно также, что проведенная минимиза-


ция, сохраняющая минимальное время, не позволяет выполнить


ограничение на объем аппаратуры. В таком случае необходима


более глубокая минимизация,охватывающая параллельные ветви


сигнального графа. Минимизация должна быть взаимосвязанной по


всем компонентам ОА: по памяти, функциональным модулям и ком-


мутации.


В настоящее время процедуры минимизации не формализованы


и сводятся к перебору "правдоподобных" вариантов.


Можно предложить следующую последовательность действий:


1)- все "похожие" функции (операции) реализовать на одном


функциональном модуле, например, все суммирования выполнять


на одном сумматоре;


2)-скорректировать алгоритм так, чтобы в одном микроблоке не


выполнялось более одной операции на одном и том же функци-


ональном модуле;


3)- минимизировать память автомата, т.е. число запоминаемых


промежуточных переменных;


Выполнение этих этапов может привести к усложнению ком-


мутации, а значит, и к увеличению этой компоненты в аппарату-


ре ОА. Если ограничение по объему аппаратуры все еще наруше-


но, то повторить этапы 1 - 3 с другим вариантом объединения


функциональных модулей и памяти.


При реализации ОА - во избежание ошибок -необходимо бук-


вально следовать описанию алгоритма, но в то же время, при


проектировании самого алгоритма надо представлять себе реали-


зацию микроблоков. Реализация одних и тех же вычислений может


быть существенно различной по объему аппаратуры.


Например, вычисления в цикле потребуют реализации:


─┬─



┌───────V───────┐ A ┌────┐


│ J:=0 │ ┌┬──┬─┐ │ MUX│ ┌────┐


└───────┬───────┘ ││RG│0├───>┤0 │ │ f │


┌──────┐ │ ││ │.│ . │. │A[J] │ │


│ ┌────V──V───────┐ ││ │.│ . │. ├────>┤ │


│ │ ..... │ ││ │.│ . │. │ │ │ B


│ │ │ ││ │ │ │ │ │ ╞══>


│ │ B= f(...,A[J])│ ││ │K├───>┤K │ │ │


│ │ │ ││ │.│ │. │ ══>╡ │


│ │ J:=J+1 │ ││ │.│ │. │ │ │


│ └───────┬───────┘ ││ │.│ │. │ │ │


│ ─V─ └┴──┴─┘ ├─ │ └────┘


│ <K / =K J═════════>╡А │


└──────<J==K>─────> └────┘


__/


(реализация счетчика J не показанa).


- 12 -


Запишем этот фрагмент алгоритма иначе так, чтобы нужный


бит извлекался за счет сдвига в регистре D. Тогда получим:


───┬── A D


│ ┌┬──┬┐ ┌┬──┬─┐ A[J] ┌─────┐


┌───────V───────┐ ││RG││ ││RG│0├─────>┤ f │


│ J:=0 │ ││ ││ ││ │.│ │ │


│ │ ││ ││ ││->│.│ │ │ B


│ D:=A │ ││ │╞══════>╡│ │.│ │ ╞══>


└───────┬───────┘ ││ ││ ││ │ │ │ │


┌──────┐ │ ││ ││ ││ │K├ │ │


│ ┌────V──V───────┐ ││ ││ x ──>┤Dn │.│ │ │


│ │ ..... │ ││ ││ ││ │.│ ══>╡ │


│ │ │ ││ ││ S W││ │.│ │ │


│ │ B= f(...,D[0])│ └┴──┴┘ ─v─v┴┴──┴─┘ └─────┘


│ │ │


│ │ (D,x):=(x,D) │


│ │ │


│ │ J:=J+1 │


│ └───────┬───────┘


│ ─V─


│ <K / =K


└──────<J==K>─────>


__/


Промежуточный регистр A введен для общности, если потребуется


сохранить слово А (чаще всего он и не нужен).


Другой пример: фрагмент алгоритма, реализующий регуляр-


ную запись отдельных бит слова и его реализация имеют вид:


───┬── ┌┬─┬┐B[0]


│ a ────────────┬─────>┤│T│├────>


┌───────V───────┐ │ W││ ││


│ J:=0 │ ┌───┐ │ ─A┴┴─┴┘


└───────┬───────┘ │DC │ ┌──┼─────┘| |


┌──────┐ │ │ 0├─┘ │ | |


│ ┌────V──V───────┐ │ .│. │ ┌┬─┬┐B[K]


│ │ ..... │ │ .│. └─────>┤│T│├────>


│ │ │ │ .│. W││ ││


│ │ a=f(...) │ J ══>╡ │ ─A┴┴─┴┘


│ │ │ │ K├──────────┘


│ │ B[J]:=a │ │ .│


│ │ │ │ .│


│ │ J:=J+1 │ │ .│


│ └───────┬───────┘ └───┘


│ ─V─


│ <K / =K


└──────<J==K>─────>


__/


Слово В нельзя реализовать в виде регистра, а только в виде


отдельных триггеров.


Можно формировать слово с использованием операции сдви-


га при обязательном условии D[K..0], тогда алгоритм и его ре-


ализация имеют вид:


- 13 -


───┬──


│ D B


┌───────V───────┐ ┌──┬──┬┐ ┌┬──┬┐


│ J:=0 │ │ │RG││ ││RG││


└───────┬───────┘ │ │->││ ││ ││


┌──────┐ │ a │ │ │╞═════>╡│ ││


│ ┌────V──V───────┐ ──>┤Dk│ ││ ││ ││


│ │ ..... │ S│ │ ││ W││ ││


│ │ │ ─v┴──┴──┴┘ ─v┴┴──┴┘


│ │ a=f(...) │


│ │ │


│ │ (D,x):=(a,D) │


│ │ │


│ │ J:=J+1 │


│ └───────┬───────┘


│ ─V─


│ <K / =K ┌────┐


└──────<J==K>──>┤B:=D├>


__/ └────┘


В этом случае, так же, как и в предыдущем, чаще всего не ну-


жен промежуточный регистр (В).


_УНИВЕРСАЛЬНЫЙ ОА


Использование при проектировании универсальных ОА с за-


ранее фиксированной и минимизированной структурой оправдано


тем, что такие универсальные ОА изготавливаются промышлен-


ностью в виде БИС большим тиражом и поэтому они сравнительно


дешевы. Такие универсальные ОА входят в микропроцессорные на-


боры 582, 583, 584, 588, 589, 1800, 1804 и т.д., которые на-


зываются микропрограммируемыми, секционными, разрядно-модуль-


ными.


В основе перечисленных универсальных ОА лежит следующая


структура:


╔══════════════════╦═══════════════════════════╗


║ ║ ║


║ ║ SYN┐ ACC ║


║ ┌─┬─────┬┐ ║ ─/┬┬──┬┐ ┌─────┐ ║


║ │ │ RGF ││ ║ C││RG││ │ ALU │ ║


║ │ │ ││ ║ ││ ││ │ │ ║


║ │ │ ││ ╚════>╡│ │╞═════>╡ │ ║


║ │ │ ││ ││ ││ │ ╞═══╩═>DO


╚═══>╡D│ ││ └┴──┴┘ │ │


│ │ ││ T │ │


│ │ ││ ┌┬──┬┐ │ ╞═════>P


│ │ ││ ││RG││ │ │


│ │ │╞═════════>╡│ │╞═════>╡ │


│ │ ││ ││ ││ │ │


C W│А│ ││ C││ ││ ╔═>╡ │


─o─A┴A┴─────┴┘ ─┬┴┴──┴┘ ║ └──A──┘


SYN┘ │ ║ SYN┘ ║ ║


│ ║ ║ ║


yW YA DI═════╝ YF


ALU - арифметико-логическое устройство - комбинационная


схема с небольшим, но универсальным набором арифметических и


логических операций.


RGF - регистровый файл - адресуемая память RAM со стати-


ческой синхронизацией при записи.


RG'T' - регистр-фиксатор со статической синхронизацией.


RG'АCC' - регистр-аккумулятор с динамической синхрониза-


цией.


DI,DO - входная и выходная информационные шины.


- 14 -


Р - предикатные сигналы (флажки).


YF - сигналы управления выбором функции.


YA - адрес чтения и/или записи RGF.


yW - разрешение записи в RGF.


Память сравнительно большого объема, какой является RGF,


дешевле реализовать со статической синхронизацией. Для то-


го,чтобы такая память могла работать в замкнутом информацион-


ном кольце и при этом не возникали бы гонки, добавляется еше


один промежуточный регистр RG'T' со статической синхрониза-


цией. Если передний фронт является рабочим для регистров уп-


равляющего автомата и RG'ACC', то на первой фазе синхрониза-


ции при SYN=1 информация читается из RGF; при этом RG'T'


прозрачен. На следующей фазе синхронизации при SYN=0 информа-


ция фиксируется в RG'T', т.е. он закрыт для записи, а запись


(если она разрешена) производится в RGF. Фиксируется информа-


ция в RGF и RG'ACC' с началом следующего такта, т.е. на пе-


реднем фронте сигнала.


_ВЗАИМОДЕЙСТВИЕ ОА и УА


Для исключения гонок при взаимодействии ОА и УА будем


проектировать УА как автомат Мура. Схема их взаимодействия


может быть представлена в виде:


╔══════════════════════════╗


║┌────┐ ┌┬──┬┐ ┌────┐ ║


╚╡ CS │ ││RG││ │CS ╞<╝


│ ╞<═╦═╡│ │╞<══╡ │


┌───┤ b │ ║ ││ ││ │ c ├<────┐


│ └────┘ ║ └┴──┴┴A─ └────┘ │


│ ┌────┐ ║ └───────────┐ │


│ │CS ╞<═╝ │ │


│┌──┤ a ├<───────────────────┐ │ │


ОА ││ └────┘ │ │ │


----││----------------------------│-│-│--


УА ││РА┌────┐ ┌┬──┬┐ ┌─────┐│ │ │┐


│└─>┤ CS│ ││RG││ │ CS ├┘ │ ││


└──>┤ ╞════>╡│ │╞═>╡ ├──┘ ││Y


РВ │ │ ││ ││ │ ├────┘│


╔>╡ p │ ││ ││ │ y ╞═╗ ┘


║ └────┘ └┴──┴┘ └─────┘ ║


╚════════════════════════════╝


Отметим, что РА(t)=f(Y(t)) зависит без сдвига от сигналов


управления,


PB(t+1)=F(Y(t)) зависит со сдвигом от сигналов


управления,


где РА и РВ - предикатные перемнные.


Продолжительность такта работы схемы определяется наибо-


лее длинными цепями между регистрами. Для данной схемы, кото-


рую будем называть последовательной схемой взаимодействия,


зададимся (так чаще всего бывает), что такой критической


цепью является цепь (CSy,CSa,CSp,RG). Поэтому длительность


такта определяется:


Т > ty + ta + tp + trg,


где tj- время установления соответствующего компонента цепи.


Чтобы сократить длину этой цепи, применяют другой вари-


ант взаимодействия автоматов - конвейерный:


- 15 -


╔══════════════════════════╗


║┌────┐ ┌┬──┬┐ ┌────┐ ║


╚╡ CS │ ││RG││ │CS ╞<╝


│ ╞<═╦═╡│ │╞<══╡ │


┌───────────┤ b │ ║ ││ ││ │ c ├<────┐


│ FF └────┘ ║ └┴──┴┴A─ └────┘ │


│ ┌┬──┬┐ ┌────┐ ║ └───────────┐ │


│┌─┤│RG│╞<══╡ CS ╞<═╝ │ │


││ ││ ││ │ a ├<───────────────────┐ │ │


││ └┴──┴┴A─ └────┘ │ │ │


ОА ││ └──────────────────────────┐ │ │ │


---││----------------------------------│-│-│-│--


УА ││ MK │ │ │ │


││ PA ┌────┬────┐ ┌┬──┬┐│ │ │ │┐


│└────>┤ CS│ CS │ ││RG│├┘ │ │ ││


│ РВ │ │ │ ││ │├──┘ │ ││Y


└─────>┤ │ ╞═══════════>╡│ │├────┘ ││


│ │ │ ││ │├──────┘│


╔>╡ p │ y │ ││ │╞═╗ ┘


║ └────┴────┘ └┴──┴┘ ║


╚═══════════════════════════════╝


При этом варианте взаимодействия такой длинной цепи, как


в предыдущем случае, не возникает.Эта цепь разделена регис-


трами RG'FF' (регистр флажков) и RG'MK' (регистр микрокоман-


ды) на две цепи. Продолжительность такта становится меньше и


ее можно определить следующим образом:


T > max( ta,(tp + ty) )+ trg ,


При конвейерном варианте взаимодействия


PA(t+1)=f(Y(t)), т.е. и эти значения стали зависить со


сдвигом от сигналов управления. Тогда фрагмент микропрограммы


mS{...;pA=f(...)}


<< GO(pA;mi,mj)>>,


выполняемый в последовательной схеме за один такт, в кон-


вейерном варианте за один такт выполнен быть не может и дол-


жен быть модифицирован следующим образом:


mS{...,pA=f(...)}


mS'{нет операции}


<< GO(pA;mi,mj)>>


Таким образом, время выполнения этого фрагмента не только не


уменьшилось, но даже возросло несмотря на уменьшение продол-


жительности каждого из тактов. Зато во всех остальных случа-


ях (при безусловных переходах, при переходах по значению РВ)


время выполнения микропрограммы уменьшается.


_НАЧАЛЬНАЯ ИНИЦИАЛИЗАЦИЯ СИНХРОННОЙ СХЕМЫ


Пусть устройство, кроме сигнала синхронизации SYN, имеет


еще один сигнал Н, обозначающий начало и конец синхронной ра-


боты устройства. При Н=0 - нерабочее состояние - можно выпол-


нять начальную установку значений памяти устройства. Измене-


ние значения Н с 0 на 1 происходит в случайный момент времени


(асинхронно), но при этом начальный такт работы устройства


должен быть полным. "Затягивание" асинхронного сигнала Н в


синхронный режим происходит с помощью простейшего синхронного


автомата с диаграммой:


┌──────────┐ ┌────────┐


V 0H/CONST│ V 1H/SYN│


█▀▀▀█────────┘ █▀▀▀█──────┘


>▌ 0 ▐──────────────>▌ 1 ▐──────┐


█▄▄▄█ 1H/CONST █▄▄▄█ 0H/X │


л │


└────────────────────────────┘


У этого автомата простейшей является функция переходов, так


как диаграмма автомата совпадает с диаграммой переходов


- 16 -


D-триггера.


Схема автомата вместе с цепями условной синхронизации


выглядит следующим образом (для синхронизации по фронтам):


а)-по переднему фронту, б)- по заднему фронту:


┌──┐ ┌──┐


SYN ──┬──────────┤ 1├── CC SYN ──┬──────────┤ &├── CC


│ ┌─┬─┐ ┌─┤ │ │ ┌─┬─┐ ┌─┤ │


└─/C│T│ │ └──┘ └─C│T│ │ └──┘


│ │ ├ │ │ │ ├──┘


┌─┤D│ │ │ ┌─┤D│ │


│ ├─┤ o──┘ │ ├─┤ o─


├─oR│ │ ├─oR│ │


H │ └─┴─┘уст. нач. зн. H │ └─┴─┘уст. нач. зн.


──┴─────────────────── ──┴───────────────────


Такая разница в цепях условной синхронизации, как уже объяс-


нялось выше, определяется тем, что первый перепад сигнала СС


не должен быть рабочим.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Методичка для курсового проектирования по ПТЦА прикладная теория цифровых автоматов

Слов:5302
Символов:78109
Размер:152.56 Кб.