Реферат: Микропрограммирование операций ЭВМ

--PAGE_BREAK--Например, арифметический сдвиг слова С(1: 8) = 10011001 вправо на 3 разряда в любом коде должен быть записан так:
С(1: 8):= С(1). С(1). С(1). С(1). (R(3)С(2: 8)).
Видно, что знак у слова является отрицательным. После сдвига слова С будет С = 11110011.
При сдвиге влево на один разряд для обратного кода микрооперация будет иметь вид:
С(1: 8):= С(1).((L(1)С(3: 8)).С(1)).
Если как и прежде С = 10011001, то после сдвига будет С = 10110011.
При сдвиге влево на один разряд для дополнительного кода микрооперация будет иметь вид:
С(1: 8):= С(1).((L(1)С(3: 8)).0).
В дополнительном коде С = 10011010 (имеется лишняя единица для младшего разряда), тогда после указанного сдвига будет С =10110100. Видно, что дополнительный код отличается от обратного кода лишней единицей для младшего разряда.
К восьмому типу микроопераций относится микрооперация сравнения (на самом деле эта микрооперация является микрооперацией несравнения). В отличие от всех предыдущих микроопераций она имеет два вида результата.
Первый из них представляет собой сложение по модулю два исходных слов. Поскольку микрооперация сравнения – логическая микрооперация, то длины слов должны быть одинаковыми. Если хотя бы в одном разряде получится единица, то тогда это будет означать несравнение слов, в противном случае исходные слова совпадают.
Пусть, например, имеется микрооперация
 С(1:6):= А(1:6) Å В (1:6)
и А = 100110, В = 000111, С= 010101, тогда после выполнения данной микрооперации будет C(1:6) = 100001, это говорит о несравнении слов А и В.
Если будет А = 100110, В = 100110, С= 010101, тогда после выполнения
данной микрооперации будет C(1:6) = 000000, что говорит о сравнении слов А и В.
Второй вид результата является однобитовым, он представляет собой логическую сумму разрядов результата первого вида. Ясно, что при нулевом результате первого вида однобитовый результат также будет равен 0, в противном случае – 1.
Для ранее получающегося результата C(1:6) = 100001 однобитовый результат С(1) = 1 (не путать с первым разрядом слова С), а для — результата C(1:6) = 000000 однобитовый результат С(1) = 0.
Девятый тип микроопераций составляет группу микроопераций сложения (сложения, вычитания и циклического сложения).
Микрооперации данной группы предназначены для описания работы сумматора при сложении, вычитании и циклическом сложении.
Последняя микрооперация требует равенства исходных слов. Единица переноса из старшего разряда передается для сложения в младший разряд. Вне Ф-языка такая микрооперация называется операцией контрольного сложения. Для контроля правильности записи и считывания слов файла применительно к дискам все слова складываются по правилу контрольного сложения, получающаяся контрольная сумма добавляется в конце файла. При считывании снова подсчитывается контрольная сумма, которая сравнивается с имеющейся такой суммой в конце файла. Если суммы совпадают, то ошибок при считывании нет, в противном случае считывание повторяется установленное число раз до совпадения сумм.
Пусть, например, имеется микрооперация
G(1:6):= А(1:6) + В(1:6)
и А = 100110, В = 100111, G= 010101, тогда после выполнения данной микро-операции будет G(1:6) = 001110.
Для первых двух микроопераций левое слово должно иметь лишний разряд по сравнению с наиболее длинным словом правой части.
В Ф–языке принято применять дополнительные коды для сложения и вычитания.
При получении кода слова слева у слова добавляется знаковый разряд, коды выравниваются по длине за счет доопределения значениями знаковых разрядов.
Пусть, например, имеются микрооперации
 С(1:7):= А(1:6) + В (1:6),
D(1:7):= А(1:6) — В(1:6),
E(1:7):= В(1:6) — А(1:6)
и А = 100110, В = 100111, С= 010101, D= 101010, E= 1010101, тогда после выполнения данных микроопераций будет C(1:7) = 1001101, D(1:7) = 1111111, E(1:7)= 0000001.
Наконец, к десятой группе относятся так называемые комбинированные микрооперации. В правой части таких микроопераций разрешается иметь две, три обычные микрооперации.
Например, получение обратного кода отрицательного слова В описывается именно комбинированной микрооперацией:
В (1:6):= В(1).ù В (2:6),
Видно, что знаковый разряд слова остается без изменения, а значащая часть проинвертирована.
Нетрудно заметить, что выше уже имелись комбинированные микрооперации.
1.3.2. Двоичные выражения В Ф-языке имеются двоичные выражения, которые относятся к конструкциям средней сложности.
Двоичные выражения отличаются от микроопераций тем, что в правой части у них задействовано более трех микроопераций и могут использоваться так называемые условные выражения, основанные чаще всего на проверке отношений.
Двоичные выражения делятся на двоичные простые (неусловные) и двоичные условные выражения. Из последующего будет ясно, что двоичные условные выражения не следует отождествлять с чисто условными выражениями.
1.3.2.1. Двоичные простые выражения Двоичное простое выражение имеет такую же структуру, что и микрооперация. Обычно правая часть данного выражения является словом, которому надлежит передать значение, полученное при вычислении правой части. В последней задаются микрооперации, количество которых должно быть больше трех.
Применительно к двоичным простым выражениям установлена очередность выполнения микроопераций, в определенной степени совпадающая с очередностью выполнения логических операций:
инверсия,
составление,
логическое умножение,
логическое сложение,
сложение по модулю два,
микрооперации группы сложения.
Естественно, что при наличии скобок вычисления должны вначале выполняться в них.
Что касается микроопераций группы сложения, то надо иметь в виду их однотипность. Подобные микрооперации (в других алгебрах операций) должны выполняться в той последовательности, в которой они записываются в выражениях.
Запомнить указанную очередность нелегко, этому может помочь искусственное ключевое слово, составленное из начальных букв микроопераций, ИСУС2С.
Из очередности видно, что в двоичное простое выражение можно включать не все микрооперации. Запрещается включать микрооперации передачи, счета, сравнения и сдвига.
В качестве примера двоичного простого выражения рассматривается следующее выражение:
А := В.ùС ) + D.Е /\ F \/ F1 – G Å H + D.
Для В =11, С = 1101, D = 01, E = 1001, F = 111001, F1 = 010101, G = 110, H = 101, А = 010000 будет новое А = 010001.
Первой выполняется инверсия, получается С = 0010. Далее имеется две микрооперации составления, получаются значения 110010 и 011001.
Конъюнкция дает значение 011001, дизъюнкция – 011101, сложение по модулю два – 011.
Остались микрооперации группы сложения. Первой должна выполняться микрооперация циклического сложения. Она дает значение 010000.
Вычитание характеризуется значением 001101. Наконец, сложение приводит к значению 001110.
Следовательно, после вычисления микроопераций правой части указанного двоичного простого выражения и передачи его слову правой части получится А = 001110.
Рекомендуется под выражением с помощью фигурных скобок, развернутых острой частью вниз и размещаемых сверху вниз на разных уровнях, записывать получающиеся значения результатов микроопераций.
Для рассматриваемого примера это будет выглядеть следующим образом:
<group id="_x0000_s1037" coordorigin=«4282,3478» coordsize=«4636,3236» o:allowincell=«f»><shapetype id="_x0000_t88" coordsize=«21600,21600» o:spt=«88» adj=«1800,10800» path=«m,qx10800@0l10800@2qy21600@11,10800@3l10800@1qy,21600e» filled=«f»><path arrowok=«t» o:connecttype=«custom» o:connectlocs=«0,0;21600,@11;0,21600» textboxrect=«0,@4,7637,@5»><shapetype id="_x0000_t202" coordsize=«21600,21600» o:spt=«202» path=«m,l,21600r21600,l21600,xe»><path gradientshapeok=«t» o:connecttype=«rect»><img width=«313» height=«218» src=«dopb163909.zip» v:shapes="_x0000_s1037 _x0000_s1038 _x0000_s1039 _x0000_s1040 _x0000_s1041 _x0000_s1042 _x0000_s1043 _x0000_s1044 _x0000_s1045 _x0000_s1046 _x0000_s1047 _x0000_s1048 _x0000_s1049 _x0000_s1050 _x0000_s1051 _x0000_s1052 _x0000_s1053 _x0000_s1054 _x0000_s1055 _x0000_s1056 _x0000_s1057 _x0000_s1058 _x0000_s1059 _x0000_s1060 _x0000_s1061 _x0000_s1062 _x0000_s1063 _x0000_s1064 _x0000_s1065 _x0000_s1066 _x0000_s1067 _x0000_s1068">А := В.ùС  D.Е /\ F \/ F1 – G Å H + D.
Значение последней микрооперации и есть значение слова левой части.
Если выполнять микрооперации в сторонке и записывать значения в виде столбика, то практика показывает, что почти всегда допускаются неверные результаты каких либо микроопераций из-за ошибок списывания предыдущих результатов и др.
1.3.2.2. Двоичные условные выражения Правая часть двоичных условных выражений включает в свой состав несколько двоичных простых выражений. Расчеты производятся по одному из них в зависимости от значения логического выражения.
При двух простых выражениях V1, V2 и логическом выражении B структура двоичного условного выражения для слова V имеет следующий вид:
V:= ЕСЛИ В ТО V1 ИНАЧЕ V2.
Расчеты производятся по выражению V1 при В = 1 и по выражению V2 при В = 0.
В качестве выражения V2 может использоваться двоичное условное выражение. Тогда будет три варианта расчетов.
Что касается условного выражения В, то оно похоже на двоичное простое выражение. Однако при вычислении оно может быть равно 0 или 1. Это достигается за счет включения отношений, в том числе равенства. В отличие от простого выражения дополнительно не разрешается использовать микрооперации группы сложения и составления.
Для условного выражения установлена следующая очередность выполнения отношений и микроопераций:
отношение за исключением равенства
инверсия,
логическое умножение,
логическое сложение,
сложение по модулю два,
равенство.
Естественно, что при наличии скобок вычисления должны вначале выполняться в них.
Запомнить указанную очередность также нелегко, этому может помочь искусственное ключевое слово, составленное из начальных букв отношений и микроопераций, ОИУС2Р.
В качестве примера двоичного условного выражения рассматривается следующее выражение:
В := ùD /\ Е \/ F = G > H Å I.
Для В =1, D = 0101, E = 1100, F = 0110, G = 0101, H = 111, I = 1 будет новое B = 0.
Следовательно, расчеты требуется проводить по выражению V2.
При расчетах условного выражения первой выполняется проверка отношения ">", результату проверки присваивается значение 0, так как отношение неверно.
Второй по очереди выполняется микрооперация инверсии, получается значение 1010.
Третьей реализуется микрооперация конъюнкции, имеет место значение 1000.
Четвертая очередь касается микрооперации дизъюнкции, она дает значение 1110.
Пятой выполняется микрооперация сложения по модулю два, получается значение 1.
Наконец, последняя проверка равенства дает В = 0. Следовательно, расчеты требуется проводить по выражению V2.
После вычисления микроопераций правой части указанного двоичного простого выражения (пусть V2 = А) и передачи его слову правой части получится А = 001110.
Рекомендуется под выражением с помощью фигурных скобок, развернутых острой частью вниз и размещаемых сверху вниз на разных уровнях, записывать получающиеся значения результатов микроопераций, отношений.
Для рассматриваемого примера это будет выглядеть следующим образом:
<group id="_x0000_s1069" coordorigin=«4908,6205» coordsize=«3076,1814» o:allowincell=«f»><img width=«209» height=«125» src=«dopb163910.zip» v:shapes="_x0000_s1069 _x0000_s1070 _x0000_s1071 _x0000_s1072 _x0000_s1073 _x0000_s1074 _x0000_s1075 _x0000_s1076 _x0000_s1077 _x0000_s1078 _x0000_s1079 _x0000_s1080 _x0000_s1081 _x0000_s1082 _x0000_s1083 _x0000_s1084 _x0000_s1085 _x0000_s1086 _x0000_s1087">В:= ùD /\ Е \/ F = G > H Å I.
Значение последней проверки (проверки равенства) и есть значение слова В левой части.
Если выполнять проверки отношений и микрооперации в сторонке и записывать значения в виде столбика, то эта практика также показывает, что почти всегда допускаются неверные результаты каких, либо микроопераций из-за ошибок списывания предыдущих результатов и др.
1.3.3. Сложные конструкции Сложными конструкциями Ф-языка являются функциональные микропрограммы (ФМП). Их рассмотрение не обходится без использования схем алгоритмов (СА), графических схем алгоритма (ГСА), матричных схем алгоритма (МСА), систем формул перехода (СФП), которые к средствам Ф-языка не относятся и СА, ГСА, МСА, ФМП и СФП подробно описаны в [3].
1.3.3.1. Графические схемы алгоритма Графическая схема алгоритма или граф-схема алгоритма является аналогом схемы алгоритма, отличается от последней большей формализацией, несколько другим изображением блоков начала и конца.
Поскольку ГСА предложена для алгоритмов операций ЭВМ, то в ней нет средств для отражения ввода-вывода.
Вместо блоков в ГСА используются вершины: начальные Y0, конечные Yк, операторные вершины Y1,Y2, …, условные вершины X1,X2, ….На рис.2 показана СА классического алгоритма нахождения наибольшего общего делителя (ННОД),
где: А и С — исходные числа,
НОД — наибольший общий делитель.
Видно, что заданные числа при А<С меняются местами (блоки 5¸7). Поскольку после этого получается А >С, то число А заменяется на значение
А — С. Подобные циклы повторяются до получения А= С (блоки 3¸8), число А и будет требуемым результатом (блок 9).
Имеются отличия применительно к условным вершинам. Прежде всего,
условие (чаще всего отношение) записывается в закодированном виде.
Если оно выполняется, то результату присваивается единичное значение, в противном случае — нулевое значение. С учетом этого выходы вершины отмечаются указанными значениями вместо “да” и “нет”.
Содержательная и закодированная граф-схемы алгоритмов представлены на рис. 2 и 3 соответственно, коды микроопераций уi, микрокоманд Yi и условий XI — в табл.1.
<shapetype id="_x0000_t116" coordsize=«21600,21600» o:spt=«116» path=«m3475,qx,10800,3475,21600l18125,21600qx21600,10800,18125,xe»><path gradientshapeok=«t» o:connecttype=«rect» textboxrect=«1018,3163,20582,18437»><shape id="_x0000_s1088" type="#_x0000_t116" o:allowincell=«f»><img width=«102» height=«57» src=«dopb163911.zip» v:shapes="_x0000_s1088">1
<line id="_x0000_s1089" from=«188.3pt,8.25pt» to=«188.3pt,29.85pt» o:allowincell=«f»><img width=«12» height=«32» src=«dopb163912.zip» v:shapes="_x0000_s1089">  

<shapetype id="_x0000_t111" coordsize=«21600,21600» o:spt=«111» path=«m4321,l21600,,17204,21600,,21600xe»><path gradientshapeok=«t» o:connecttype=«custom» o:connectlocs=«12961,0;10800,0;2161,10800;8602,21600;10800,21600;19402,10800» textboxrect=«4321,0,17204,21600»><shape id="_x0000_s1090" type="#_x0000_t111" o:allowincell=«f»><img width=«104» height=«45» src=«dopb163913.zip» alt=«Блок-схема: данные: A, С» v:shapes="_x0000_s1090"><line id="_x0000_s1091" from=«267.05pt,11.9pt» to=«267.05pt,456.2pt» o:allowincell=«f»><img width=«2» height=«594» src=«dopb163914.zip» v:shapes="_x0000_s1091"><line id="_x0000_s1092" from=«267.05pt,11.9pt» to=«346.25pt,11.9pt» o:allowincell=«f»><img width=«108» height=«2» src=«dopb163915.zip» v:shapes="_x0000_s1092"><line id="_x0000_s1093" from=«346.25pt,11.9pt» to=«346.25pt,33.5pt» o:allowincell=«f»><img width=«12» height=«32» src=«dopb163916.zip» v:shapes="_x0000_s1093">2
                               8
<shape id="_x0000_s1097" type="#_x0000_t109" o:allowincell=«f»><line id="_x0000_s1094" from=«187.85pt,10.35pt» to=«187.85pt,73.3pt» o:allowincell=«f»><line id="_x0000_s1098" from=«288.65pt,53.1pt» to=«288.65pt,53.1pt» o:allowincell=«f»><line id="_x0000_s1095" from=«288.6pt,38pt» to=«288.6pt,74pt» o:allowincell=«f»><line id="_x0000_s1096" from=«187.85pt,38pt» to=«288.65pt,38pt» o:allowincell=«f»><line id="_x0000_s1099" from=«346.25pt,75.4pt» to=«346.25pt,89.8pt» o:allowincell=«f»>  <img width=«142» height=«87» src=«dopb163917.zip» v:shapes="_x0000_s1094 _x0000_s1098 _x0000_s1095 _x0000_s1096"> <img width=«2» height=«21» src=«dopb163918.zip» v:shapes="_x0000_s1099">  

<line id="_x0000_s1100" from=«288.65pt,1.7pt» to=«346.25pt,1.7pt» o:allowincell=«f»><img width=«79» height=«2» src=«dopb163919.zip» v:shapes="_x0000_s1100"><shapetype id="_x0000_t110" coordsize=«21600,21600» o:spt=«110» path=«m10800,l,10800,10800,21600,21600,10800xe»><path gradientshapeok=«t» o:connecttype=«rect» textboxrect=«5400,5400,16200,16200»><shape id="_x0000_s1101" type="#_x0000_t110" o:allowincell=«f»><img width=«103» height=«71» src=«dopb163920.zip» alt=«Блок-схема: решение: A=С» v:shapes="_x0000_s1101">3
<line id="_x0000_s1102" from=«346.25pt,14.4pt» to=«346.25pt,28.8pt» o:allowincell=«f»><img width=«12» height=«22» src=«dopb163921.zip» v:shapes="_x0000_s1102"><line id="_x0000_s1103" from=«223.85pt,14.4pt» to=«346.25pt,14.4pt» o:allowincell=«f»><img width=«166» height=«2» src=«dopb163922.zip» v:shapes="_x0000_s1103"><line id="_x0000_s1104" from=«223.85pt,14.4pt» to=«223.85pt,14.4pt» o:allowincell=«f»><img width=«2» height=«2» src=«dopb163923.zip» v:shapes="_x0000_s1104"><line id="_x0000_s1105" from=«223.85pt,14.4pt» to=«223.85pt,14.4pt» o:allowincell=«f»><img width=«2» height=«2» src=«dopb163923.zip» v:shapes="_x0000_s1105">                                                         =
<line id="_x0000_s1106" from=«223.85pt,5.5pt» to=«223.85pt,5.5pt» o:allowincell=«f»><img width=«2» height=«2» src=«dopb163923.zip» v:shapes="_x0000_s1106"><shape id="_x0000_s1107" type="#_x0000_t109" o:allowincell=«f»>   9
<line id="_x0000_s1108" from=«187.85pt,7.6pt» to=«187.85pt,36.4pt» o:allowincell=«f»><img width=«12» height=«42» src=«dopb163924.zip» v:shapes="_x0000_s1108">                                           ¹
<shape id="_x0000_s1109" type="#_x0000_t110" o:allowincell=«f»><img width=«103» height=«71» src=«dopb163925.zip» alt=«Блок-схема: решение: A>С» v:shapes="_x0000_s1109"><line id="_x0000_s1110" from=«346.25pt,14.8pt» to=«346.25pt,36.4pt» o:allowincell=«f»><img width=«12» height=«32» src=«dopb163916.zip» v:shapes="_x0000_s1110">4                  >    
<line id="_x0000_s1111" from=«223.85pt,13.1pt» to=«267.05pt,13.1pt» o:allowincell=«f»><img width=«61» height=«12» src=«dopb163926.zip» v:shapes="_x0000_s1111">10
<shapetype id="_x0000_t114" coordsize=«21600,21600» o:spt=«114» path=«m,20172v945,400,1887,628,2795,913c3587,21312,4342,21370,5060,21597v2037,,2567,-227,3095,-285c8722,21197,9325,20970,9855,20800v490,-228,945,-400,1472,-740c11817,19887,12347,19660,12875,19375v567,-228,1095,-513,1700,-740c15177,18462,15782,18122,16537,17950v718,-113,1398,-398,2228,-513c19635,17437,20577,17322,21597,17322l21597,,,xe»><path o:connecttype=«custom» o:connectlocs=«10800,0;0,10800;10800,20400;21600,10800» textboxrect=«0,0,21600,17322»><shape id="_x0000_s1112" type="#_x0000_t114" o:allowincell=«f»><img width=«102» height=«70» src=«dopb163927.zip» alt=«Блок-схема: документ: НОД» v:shapes="_x0000_s1112">  

<line id="_x0000_s1113" from=«155.9pt,1.25pt» to=«163.1pt,15.65pt» o:allowincell=«f»><img width=«11» height=«21» src=«dopb163928.zip» v:shapes="_x0000_s1113"><line id="_x0000_s1114" from=«187.85pt,3.8pt» to=«187.85pt,25.4pt» o:allowincell=«f»><img width=«12» height=«32» src=«dopb163912.zip» v:shapes="_x0000_s1114">5 >
<shape id="_x0000_s1115" type="#_x0000_t109" o:allowincell=«f»>  <line id="_x0000_s1116" from=«346.25pt,15.2pt» to=«346.25pt,44pt» o:allowincell=«f»><img width=«12» height=«42» src=«dopb163929.zip» v:shapes="_x0000_s1116">                                        
                                                                                    
<shape id="_x0000_s1117" type="#_x0000_t116" o:allowincell=«f»><img width=«102» height=«44» src=«dopb163930.zip» alt=«Блок-схема: знак завершения: Конец» v:shapes="_x0000_s1117">11
<line id="_x0000_s1118" from=«187.85pt,11.4pt» to=«187.85pt,33pt» o:allowincell=«f»><img width=«12» height=«32» src=«dopb163931.zip» v:shapes="_x0000_s1118">  

6
<shape id="_x0000_s1119" type="#_x0000_t109" o:allowincell=«f»>   

<line id="_x0000_s1120" from=«187.85pt,2.95pt» to=«187.85pt,24.55pt» o:allowincell=«f»><img width=«12» height=«32» src=«dopb163932.zip» v:shapes="_x0000_s1120">7
<shape id="_x0000_s1121" type="#_x0000_t109" o:allowincell=«f»>   

 Рис. 2. СА ННОД чисел A и С
Условия корректности ГСА похожи на условия корректности схемы алгоритма [4]:
1)                у ГСА должна быть одна начальная и одна конечная вершины;
2)                каждый выход соединен только с одним входом операторных вершин;
3)                каждый вход соединен, по крайней мере, с одним выходом;
4)                выходы условных вершин помечаются с помощью цифр “0” и “1”;
    продолжение
--PAGE_BREAK--5)                из начальной вершины должен быть путь к любой вершине;
6)                из любой вершины должен быть путь в конечную вершину;
7)                для любых наборов логических условий должен быть путь из начальной вершины в конечную вершину.
1.3.3.2. Матричные схемы алгоритма Матричная схема алгоритма представляет собой квадратную матрицу,
строки которой соответствуют вершинам с выходами, столбцы – вершинам с входами. На пересечениях строк и столбцов записываются функции перехода. Такая функция представляет собой конъюнкцию кодов логических условий (логических переменных), переменная пишется без инверсии, если выход осуществляется по 1, в противном случае переменная пишется с инверсией. Функция перехода, равная 1, соответствует безусловному переходу.
Для указанного выше алгоритма МСА (МСА ННОД) представлена в табл.2

Таблица 1
Коды микроопераций, микрокоманд и условий
Коды
Микрооперация,
условие
Коды
Микро-
операция,
условие
микро- операции,
условия
микро-     команды
микро- операции,
условия
микро-     команды
y1
y2
y3
Y1
Y2
Y3
НОД:=А
А:=С
С:=НОД
y4
X1
X2
Y4
A:=A-C
A=C
A>C
Таблица 2
МСА ННОД
  Y1
Y2
Y3
 Y4
Y5
YK
Y0, 4
 __ __
Х1Х2
  __
Х1Х2
Х1
Y1
1
Y2
1
Y3
1
Y5
1
<line id="_x0000_s1122" from=«101.9pt,-13.5pt» to=«102.05pt,362.3pt» o:allowincell=«f»><img width=«2» height=«503» src=«dopb163933.zip» v:shapes="_x0000_s1122"><line id="_x0000_s1123" from=«368.3pt,-13.5pt» to=«369.95pt,359.9pt» o:allowincell=«f»><img width=«4» height=«500» src=«dopb163934.zip» v:shapes="_x0000_s1123"><line id="_x0000_s1124" from=«368.3pt,-13.5pt» to=«454.7pt,-13.5pt» o:allowincell=«f»><img width=«117» height=«2» src=«dopb163935.zip» v:shapes="_x0000_s1124"><line id="_x0000_s1125" from=«454.7pt,-13.5pt» to=«454.7pt,8.1pt» o:allowincell=«f»><img width=«2» height=«31» src=«dopb163936.zip» v:shapes="_x0000_s1125"><line id="_x0000_s1126" from=«181.1pt,-13.5pt» to=«181.1pt,.9pt» o:allowincell=«f»><img width=«2» height=«21» src=«dopb163937.zip» v:shapes="_x0000_s1126"><line id="_x0000_s1127" from=«101.9pt,-13.5pt» to=«181.1pt,-13.5pt» o:allowincell=«f»><img width=«107» height=«2» src=«dopb163938.zip» v:shapes="_x0000_s1127"><shape id="_x0000_s1128" type="#_x0000_t109" o:allowincell=«f»>  <shape id="_x0000_s1129" type="#_x0000_t109" o:allowincell=«f»>  <shape id="_x0000_s1130" type="#_x0000_t109" o:allowincell=«f»><img width=«98» height=«41» src=«dopb163939.zip» v:shapes="_x0000_s1130">                                                                                                                                              Y3
  Y0
<line id="_x0000_s1131" from=«58.6pt,9.6pt» to=«59pt,33.4pt» o:allowincell=«f»><line id="_x0000_s1133" from=«454.1pt,8.7pt» to=«454.25pt,33.5pt» o:allowincell=«f»><line id="_x0000_s1134" from=«324.65pt,11.9pt» to=«324.65pt,33.5pt» o:allowincell=«f»><line id="_x0000_s1132" from=«180.5pt,3.9pt» to=«180.65pt,26.3pt» o:allowincell=«f»><img width=«2» height=«32» src=«dopb163940.zip» v:shapes="_x0000_s1132"> <img width=«3» height=«35» src=«dopb163941.zip» v:shapes="_x0000_s1133"> <img width=«3» height=«34» src=«dopb163942.zip» v:shapes="_x0000_s1131"> <img width=«2» height=«31» src=«dopb163943.zip» v:shapes="_x0000_s1134">  

<line id="_x0000_s1135" from=«324.65pt,10.2pt» to=«396.65pt,10.2pt» o:allowincell=«f»><img width=«99» height=«12» src=«dopb163944.zip» v:shapes="_x0000_s1135"><line id="_x0000_s1136" from=«396.65pt,10.2pt» to=«396.65pt,75pt» o:allowincell=«f»><img width=«2» height=«88» src=«dopb163945.zip» v:shapes="_x0000_s1136"><line id="_x0000_s1137" from=«389.45pt,3pt» to=«454.25pt,3pt» o:allowincell=«f»><img width=«90» height=«12» src=«dopb163946.zip» v:shapes="_x0000_s1137"><line id="_x0000_s1138" from=«389.45pt,3pt» to=«389.45pt,111pt» o:allowincell=«f»><img width=«2» height=«146» src=«dopb163947.zip» v:shapes="_x0000_s1138"><line id="_x0000_s1139" from=«123.05pt,3pt» to=«180.65pt,3pt» o:allowincell=«f»><img width=«80» height=«12» src=«dopb163948.zip» v:shapes="_x0000_s1139"><line id="_x0000_s1140" from=«123.05pt,3pt» to=«123.05pt,111pt» o:allowincell=«f»><img width=«2» height=«146» src=«dopb163947.zip» v:shapes="_x0000_s1140"><line id="_x0000_s1141" from=«58.25pt,10.2pt» to=«130.25pt,10.2pt» o:allowincell=«f»><img width=«99» height=«12» src=«dopb163944.zip» v:shapes="_x0000_s1141"><line id="_x0000_s1142" from=«130.25pt,10.2pt» to=«130.25pt,67.8pt» o:allowincell=«f»><img width=«2» height=«78» src=«dopb163949.zip» v:shapes="_x0000_s1142"><shape id="_x0000_s1143" type="#_x0000_t109" o:allowincell=«f»>  <shape id="_x0000_s1144" type="#_x0000_t110" o:allowincell=«f»><img width=«104» height=«71» src=«dopb163950.zip» alt=«Блок-схема: решение: A=С» v:shapes="_x0000_s1144"><shape id="_x0000_s1145" type="#_x0000_t109" o:allowincell=«f»>                    
<shape id="_x0000_s1146" type="#_x0000_t109" o:allowincell=«f»>  <shape id="_x0000_s1147" type="#_x0000_t110" o:allowincell=«f»><img width=«104» height=«71» src=«dopb163951.zip» alt=«Блок-схема: решение: X1» v:shapes="_x0000_s1147">                      1                                                                  1  Y4
<line id="_x0000_s1155" from=«58.25pt,36.5pt» to=«58.25pt,65.1pt» o:allowincell=«f»><line id="_x0000_s1151" from=«360.65pt,6.8pt» to=«360.65pt,6.8pt» o:allowincell=«f»><line id="_x0000_s1150" from=«360.65pt,6.8pt» to=«360.65pt,6.8pt» o:allowincell=«f»><line id="_x0000_s1149" from=«382.25pt,6.8pt» to=«382.25pt,50pt» o:allowincell=«f»><line id="_x0000_s1148" from=«360.65pt,7pt» to=«382.25pt,7pt» o:allowincell=«f»><line id="_x0000_s1154" from=«180.9pt,34.4pt» to=«180.9pt,43.7pt» o:allowincell=«f»><line id="_x0000_s1153" from=«94.25pt,6.8pt» to=«115.85pt,6.8pt» o:allowincell=«f»><line id="_x0000_s1152" from=«115.85pt,6.8pt» to=«115.85pt,42.8pt» o:allowincell=«f»><img width=«30» height=«50» src=«dopb163952.zip» v:shapes="_x0000_s1153 _x0000_s1152"> <img width=«31» height=«60» src=«dopb163953.zip» v:shapes="_x0000_s1151 _x0000_s1150 _x0000_s1149 _x0000_s1148"> <img width=«2» height=«14» src=«dopb163954.zip» v:shapes="_x0000_s1154"> <img width=«2» height=«40» src=«dopb163955.zip» v:shapes="_x0000_s1155">  

<line id="_x0000_s1156" from=«179.4pt,9.3pt» to=«179.4pt,15.9pt» o:allowincell=«f»><img width=«2» height=«11» src=«dopb163956.zip» v:shapes="_x0000_s1156"><line id="_x0000_s1157" from=«324.5pt,.85pt» to=«324.65pt,25pt» o:allowincell=«f»><img width=«2» height=«34» src=«dopb163957.zip» v:shapes="_x0000_s1157"><line id="_x0000_s1158" from=«454.25pt,.25pt» to=«454.4pt,10.6pt» o:allowincell=«f»><img width=«2» height=«16» src=«dopb163958.zip» v:shapes="_x0000_s1158"><line id="_x0000_s1159" from=«396.65pt,10.6pt» to=«454.25pt,10.6pt» o:allowincell=«f»><img width=«79» height=«2» src=«dopb163919.zip» v:shapes="_x0000_s1159"><line id="_x0000_s1160" from=«130.25pt,3.4pt» to=«180.65pt,3.4pt» o:allowincell=«f»><img width=«69» height=«2» src=«dopb163959.zip» v:shapes="_x0000_s1160"><line id="_x0000_s1161" from=«115.85pt,10.6pt» to=«180.65pt,10.6pt» o:allowincell=«f»><img width=«89» height=«2» src=«dopb163960.zip» v:shapes="_x0000_s1161"><shape id="_x0000_s1162" type="#_x0000_t109" o:allowincell=«f»>             0                                                                  0
<shape id="_x0000_s1163" type="#_x0000_t109" o:allowincell=«f»>  <line id="_x0000_s1164" from=«382.25pt,1.7pt» to=«454.25pt,1.7pt» o:allowincell=«f»><img width=«98» height=«2» src=«dopb163961.zip» v:shapes="_x0000_s1164"><line id="_x0000_s1165" from=«454.25pt,1.7pt» to=«454.25pt,8.9pt» o:allowincell=«f»><img width=«2» height=«12» src=«dopb163962.zip» v:shapes="_x0000_s1165"><shape id="_x0000_s1166" type="#_x0000_t110" o:allowincell=«f»><img width=«104» height=«71» src=«dopb163963.zip» alt=«Блок-схема: решение: X2» v:shapes="_x0000_s1166"><shape id="_x0000_s1167" type="#_x0000_t110" o:allowincell=«f»><img width=«104» height=«72» src=«dopb163964.zip» alt=«Блок-схема: решение: A>С» v:shapes="_x0000_s1167">                                                                                                        Y5
<line id="_x0000_s1168" from=«360.65pt,14.65pt» to=«389.45pt,14.65pt» o:allowincell=«f»><img width=«40» height=«2» src=«dopb163965.zip» v:shapes="_x0000_s1168"><line id="_x0000_s1169" from=«94.25pt,14.65pt» to=«123.05pt,14.65pt» o:allowincell=«f»><img width=«40» height=«2» src=«dopb163965.zip» v:shapes="_x0000_s1169"><line id="_x0000_s1170" from=«360.65pt,14.4pt» to=«360.65pt,14.4pt» o:allowincell=«f»><img width=«2» height=«2» src=«dopb163923.zip» v:shapes="_x0000_s1170">                      1                                                                      1
<line id="_x0000_s1171" from=«180.3pt,15.6pt» to=«180.3pt,47.4pt» o:allowincell=«f»><img width=«2» height=«44» src=«dopb163966.zip» v:shapes="_x0000_s1171">  

<line id="_x0000_s1172" from=«453.2pt,10.6pt» to=«453.2pt,39.1pt» o:allowincell=«f»><img width=«2» height=«40» src=«dopb163967.zip» v:shapes="_x0000_s1172"><line id="_x0000_s1173" from=«58.1pt,6.35pt» to=«58.25pt,32.6pt» o:allowincell=«f»><img width=«3» height=«37» src=«dopb163968.zip» v:shapes="_x0000_s1173"><line id="_x0000_s1174" from=«323.9pt,10.25pt» to=«324.65pt,32.6pt» o:allowincell=«f»><img width=«3» height=«31» src=«dopb163969.zip» v:shapes="_x0000_s1174">          0                                                                  0
<shape id="_x0000_s1176" type="#_x0000_t109" o:allowincell=«f»><shape id="_x0000_s1175" type="#_x0000_t109" o:allowincell=«f»>     

<shape id="_x0000_s1177" type="#_x0000_t109" o:allowincell=«f»>  <shape id="_x0000_s1178" type="#_x0000_t109" o:allowincell=«f»>                                                                                                                   Y1                                YK                       
<line id="_x0000_s1179" from=«56pt,12.75pt» to=«56.05pt,40.15pt» o:allowincell=«f»><line id="_x0000_s1180" from=«323.9pt,23.65pt» to=«324.65pt,50.05pt» o:allowincell=«f»><img width=«2» height=«39» src=«dopb163970.zip» v:shapes="_x0000_s1179"> <img width=«3» height=«37» src=«dopb163971.zip» v:shapes="_x0000_s1180">  

Y2<shape id="_x0000_s1181" type="#_x0000_t109" o:allowincell=«f»>  <line id="_x0000_s1186" from=«58.6pt,79.55pt» to=«59pt,96.45pt» o:allowincell=«f»><line id="_x0000_s1184" from=«360.65pt,54.3pt» to=«360.65pt,68.95pt» o:allowincell=«f»><line id="_x0000_s1185" from=«326pt,79.95pt» to=«326pt,95.85pt» o:allowincell=«f»><line id="_x0000_s1187" from=«326pt,102.85pt» to=«369.2pt,102.85pt» o:allowincell=«f»><line id="_x0000_s1188" from=«58.6pt,104.35pt» to=«101.8pt,104.35pt» o:allowincell=«f»><img width=«2» height=«22» src=«dopb163972.zip» v:shapes="_x0000_s1184"> <img width=«3» height=«25» src=«dopb163973.zip» v:shapes="_x0000_s1186"> <img width=«2» height=«23» src=«dopb163974.zip» v:shapes="_x0000_s1185"> <img width=«59» height=«2» src=«dopb163975.zip» v:shapes="_x0000_s1187"> <img width=«60» height=«2» src=«dopb163976.zip» v:shapes="_x0000_s1188"> <shape id="_x0000_s1182" type="#_x0000_t109" o:allowincell=«f»>  <line id="_x0000_s1183" from=«324.65pt,2.5pt» to=«324.65pt,2.5pt» o:allowincell=«f»><img width=«2» height=«2» src=«dopb163923.zip» v:shapes="_x0000_s1183">
 
Рис.3. ГСА ННОД                Рис.4. Закодированная ГСА ННОД
Для МСА можно сформировать условия корректности:
1)                в МСА не должно быть строки Yk;
2)                в МСА не должно быть столбца Y0;
3)                должны быть столбец Yk и строка Y0;
4)                не должно быть пустых строк и столбцов;
5)                на строке не должно быть одинаковых функций перехода;
6)                на строке не должно быть сочетаний 1 и функций перехода через логические переменные;
7)                в столбце могут быть одинаковые функции перехода;
8)                на строке может быть только одна 1;
9)                дизъюнкция всех функций переходов на строке должна быть равна единице;
10) разные строки с одинаковыми функциями переходов разрешается оформлять в одной строке с указанием всех индексов вершин старта.
По МСА можно упрощать алгоритмы и, следовательно, автоматы.
1.3.3.3. Системы формул переходов Все переходы, соответствующие строке МСА, можно отразить в формуле переходов. Формул будет столько, сколько имеется строк в МСА. Получается система формул перехода (СФП).
Каждая формула переходов начинается с вершины, из которой рассматриваются переходы, в правой части формулы пишется дизъюнкция логических произведений вершин захода с соответствующими функциями перехода.
Между левой и правой частями формулы ставиться стрелка ®, которая отражает переходы от вершины левой части к одной из вершин правой части.
Переход совершается к той вершине, соответствующая функция перехода которой становится равной единице.
Для рассматриваемого алгоритма СФП включает в себя:
Y0,4 ® Х1Х2Y1+Х1Х2Y4+Х1Y5;
Y1 ® Y2;
Y2 ® Y3;
Y3 ® Y4;
Y5 ® YK.
Применительно к СФП можно сформулировать условия корректности:
1)                не должно быть формулы перехода для Yк;
2)                 в правой части любой формулы не должно быть вершины Y0;
3)                логическая сумма всех функций перехода любой формулы должна быть равна единице;
4)                конъюнкция любой пары функций перехода формулы должна быть равна нулю;
5)                в формуле не может быть одинаковых функций перехода;
6)                у данной операторной вершины формул переходов может быть одинаковая функция перехода.
СФП позволяет производить формальные преобразования, упрощать алгоритм, следовательно, и автомат.
1.3.3.4. Функциональные микропрограммы Функциональная микропрограмма операции представляет собой программу в терминах микроопераций и осведомительных сигналов.
Применительно к Ф — языку [1] ФМП имеет следующую структуру:
1)                заголовок с ключевым словом “АЛГОРИТМ”;
2)                совокупность описаний с ключевыми словами “ВХОДНЫЕ”, ”ВНУТРЕННИЕ”, ”ВЫХОДНЫЕ”;
3)                НАЧАЛО;
4)                тело;
5)                окончание с ключевым словом “КОНЕЦ”.
ФМП алгоритма ННОД можно представить в следующем виде:
       АЛГОРИТМ ННОД;
       ВХОДНЫЕ А(1:32), С(1:32);
       ВНУТРЕННИЕ: А(1:32), С(1:32), НОД(1:32);
       ВЫХОДНЫЕ: НОД(1:32);               
       НАЧАЛО
       М3: ПЕРЕЙТИ ЕСЛИ Х1 ТО М1;
             ПЕРЕЙТИ ЕСЛИ Х2 ТО М2;
             Y1;
             Y2;
             Y3;
         М2: Y4;
             ПЕРЕЙТИ М3;
         М1: Y5;
             КОНЕЦ.
Для ФМП существуют и условия корректности:
1)                должен быть заголовок;
2)                данной меткой может быть помечен только один оператор (одна строка);
3)                в операторах перехода могут использоваться одинаковые метки;
4)                строка после оператора безусловного перехода должна иметь метку;
5)                на строке может быть записана только одна микрокоманда или один оператор перехода.
1.4. Язык описания цифровой аппаратуры VHDL 1.4.1. Общие сведения об языке С начала 70-х годов стала актуальной проблема создания стандартного средства документации схем и алгоритмов цифровой аппаратуры (ЦА), одинаково пригодного как для восприятия человеком, так и для обработки в ЭВМ.
Этим средством явился язык VHDL [5,6,7]. Он был разработан в рамках программы создания суперскоростных интегральных схем (VHSIC) в 1970-х -1980-х годах.
Первоначально язык разрабатывался в качестве стандарта для обеспечения возможности передачи документации, описывающей сложную систему, разработанную одним подрядчиком другим подрядчикам. Этот язык был также предназначен для использования в качестве языка моделирования.
Концепция стандартного языка описания аппаратуры для проектирования в электронике была определена на семинаре по языкам описания аппаратуры, который проходил в июне 1981 года. На этом семинаре примерно 20 человек из промышленности и академических кругов собрались вместе, чтобы разработать требования к языку описания аппаратуры для использования в программе по сверхбольшим и высокоскоростным БИС министерства обороны США.
После рассмотрения различных существующих языков, включая Аdа, группа специалистов пришла к выводу, что ни один из существующих языков описания аппаратуры или языков программирования не подходит для этой программы, потому что ни один из них не удовлетворяет всем предъявленным требованиям.
Вместо этого группа рекомендовала создать новый язык. В течение 1981 года требования были объединены с требованиями документа Аdа Steelman, полученный в результате документ получил название «Требования министерства обороны к языкам описания аппаратуры». Этот документ с требованиями стал основой для первоначальной разработки языка VHDL.
Разработка первоначальной версии языка заняла почти год и началась с октября 1983 года. В августе 1984 года первоначальная разработка была представлена на смотре проектов в г. Ороно, штат Мэн.
Представители промышленности, академических кругов и министерства обороны сделали много замечаний команде разработчиков, для доработки версии с учетом этих замечаний потребовалось дополнительных 4 месяца работы, после окончания которых была разработана версия VHDL 7.2.
Для доказательства правильности определения языка были разработаны инструментальные средства, чтобы обеспечить анализ и моделирование описаний на языке VHDL. Был также создан набор тестов, чтобы помочь оценить возможности языка для документирования аппаратуры.
Кроме того, министерство потребовало использовать VHDL 7.2 для документирования нескольких проектов, разработанных в рамках программы VHSIС.
Второй цикл в разработке VHDL начался в 1986 году с создания группы анализа и стандартизации VHDL (VASC) в рамках подкомитета по стандартам САПР технического комитета IЕЕЕ по автоматизации проектирования.
Эта группа отвечала за разработку языка VHDL 7.2, определенного в такой форме, которая была бы приемлема для промышленности, коммерческих приложений, а также для использования в военных заказах.
И снова работа с приложениями VHDL 7.2 выявила ряд дополнительных требований, и его доработка с их учетом заняла примерно год.
Исправленное описание языка было выпущено в нескольких черновых вариантах и рассматривалось в качестве стандарта IЕЕЕ летом 1987 года.
Окончательное признание как стандартного языка пришло с положительным голосованием на коллегии по стандартам 10 декабря 1987 года. Таким образом, был создан стандарт IЕЕЕ VHDL 1076-1987.
В 1993-м году стандарт IЕЕЕ 1076 модифицировался и был принят дополнительный стандарт IЕЕЕ 1164.
В 1996-м году принят VHDL стандарт синтеза IЕЕЕ 1076.3.
Работу над усовершенствованием стандарта ведет группа VASC. Срок регулярного пересмотра стандарта — пять лет.
Ведутся также работы по расширению языка VHDL в область описания аналоговой аппаратуры — VHDL -А, стандартизации внутренней формы представления VHDL — описаний в ЭВМ и формы задания тестов для VHDL –моделей.
В нашей стране создана Российская ассоциация пользователей (РАЯПС) языка VHDL, призванная координировать работы в области стандартизации САПР на его базе, разработки VHDL — анализаторов, верификаторов, систем синтеза, систем моделирования, библиотек моделей интегральных микросхем, учебных курсов, пособий и т.п.
Разработчик цифровой аппаратуры может уточнить в VHDL-описаниях интересующие его детали поведения используемых микросхем или, имея их на машинном носителе, приложенном к справочнику по электро-радиоэлементам, проверить модель на ЭВМ и изучить ее работу.
Проектировщик БИС может составить формализованное задание на проектирование кристалла, включив в него описание алгоритма и внешних характеристик БИС с тем, чтобы конструкторы и технологи могли использовать верифицированное VHDL-описание для получения масок и фотошаблонов.
Эксплуатанционщик радиоэлектронной аппаратуры, имея в комплекте документации VHDL-описание устройства, на его базе может осуществлять модернизацию схем, может использовать VHDL-модели при поиске неисправностей в схеме и доработке контрольных тестов.
С помощью VHDL — приложений к учебникам и автоматизированным обучающим курсам более эффективно решаются задачи обучения и тренинга в сфере проектирования и эксплуатации радиоэлектронной аппаратуры.
Стандартизация входных языков и внутренних интерфейсов подсистем САПР, в том числе и на базе VHDL, создает общую коммуникационную среду для САПР, позволяет упростить стыковку продуктов различных фирм, обмен библиотеками моделей компонент и проектов, модернизацию отдельных подсистем САПР.
Язык VHDL особенно хорошо подходит для проектирования с программируемыми логическими устройствами, и это получает распространение.
При проектировании логических программируемых приборов (ПЛИС) и (программируемых пользователем вентильных матриц с большей емкостью от 500 до более 100000 вентилей, для быстрого и эффективного завершения проекта инженеры не могут использовать булевы уравнения или описания на уровне вентилей. Язык VHDL обеспечивает конструкции языка высокого уровня, которые дают возможность разработчикам описывать большие схемы и быстро готовить изделия для реализации.
Этот язык поддерживает создание библиотек проектов, чтобы сохранить компоненты для многократного использования в последующих проектах. Так как язык VHDL является стандартным языком, он обеспечивает переносимость кода между инструментальными средствами синтеза и моделирования и машинонезависимое проектирование.
    продолжение
--PAGE_BREAK--
еще рефераты
Еще работы по информатике