Калабеков Б.А. Микропроцессоры и их применение в системах передачи и обработки сигналов (1988) (1092085), страница 41
Текст из файла (страница 41)
Последний прием и был принят при составлении микропрограммы: МКя используется для выполнения безусловного перехода к ячейке с адресом (2,9), в которой размещается МК8, осуществляющая разветвлеиие по содержимому регистра С в пару ячеек с адресами (2, !О) и (2, ! 1). МИКРОПРОГРАММА СЛОЖЕНИЯ Рассмотрим алгебраическое сложение, т. е.
операцию суммирования, в которой могут участвовать как положительные, так и отрицательные числа. Как это принято в цифровой технике, знак числа будем определять значением его старшего (так называемого знакового) разряда, записывая в нем 0 в случае положительного числа и ! в случае отрицательного числа. Для того чтобы процесс суммирования с участием отрицательных чисел происходил по тем же правилам, что и суммирование положительных чисел, для представления отрицательных чи- 00010 00010 . 00010 000!О 00010 00010 000$0 00010 00010 00010 00010 0011 О!00 О!01 0110 0111 1000 '!001 1010 1011 1100 110! 011 1001 01! 0101 0$$ 0110 0$$ $000 100 0010 01! 0111 $01 0010 011 1100 0$$ 0100 0$1 $!01 011 ОООО 00 11 00 11 00 1$ 11 00 00 11 ОО 1! 00 11 00 11 !1 $! 11 1! !1 !! 0 О 0 0 0 0 0 0 О О 0 110 ОООО 000 0010 111 1! 11 000 0100 $10 0000 !01 1!1! $10 0000 111 1111 0$0 000$ 000 1101 010 0010 МК$ МК2 Продолжение МК' МКЗ МК4 МК5 МК? МКО мкз МК9 МК12 МК10 МК11 сел используется дополнительный либо обратный код.
В дальнейшем будем полагать, что используется дополнительный код. При суммировании чисел, имеющих одинаковые знаки, возможно переполнение разрядной сетки, при котором результат суммирования не помещается в отведенных для него разрядах и, занимая знаковый разряд, искажает знак числа. В процессе выполнения операции необходимо выявлять случаи возникновения переполнения разрядной сетки. Обнаруживая такие случаи, следует предусматривать соответствующую индикацию и останов вычислений либо переход к выполнению специальной микропрограммы.
Рассмотрим подобные случаи на примерах. Пример 5.5. Суммирование положительных чисел. Пусть М, = = О 10!10!О, !У, = О 01!!011 (здесь полужирным шрифтом выделены значения знакового разряда чисел). Переносы ! 1 1 1 1 М, 01011010 М, 00111011 '+ й(,+)У, 10010101 Получен ошибочный результат — сумма положительных чисел не может иметь отрицательный знак. Пример 5.6.
Суммирование двух отрицательных чисел. Пусть 5~,=1.10110!0(5~,„„„=10!001!О), Ф,=10! 11011(Ж~,„=11000!01). Переносы ! ! Д(,„.„10100110 М,„,„!1000101 '"'" + й(1йоп + й~ядоп О 1 1 0 1 0 1 1 Результат ошибочен — сумма отрицательных чисел не может иметь положительный знак. Из приведенных примеров нетрудно понять, 'что факт переполнения разрядной сетки может быть выявлен по следующему признаку: при равенстве знаковых разрядов слагаемых знаковый разряд суммы не совпадает со знаковым разрядом слагаемых. При построении микропрограммы сложения равенство знаковых разрядов слагаемых будем определять следующим образом; занесем знаковый разряд 1-го слагаемого в младший разряд регистра Т и затем прибавим к содержимому этого регистра значение знакового разряда 2-го слагаемого.
При равенстве знаков слагаемых в младшем разряде регистра образуется О. Пусть одно из слагаемых хранится в регистре К„другое слагаемое— в регистре Т. На рис. 5.22 приведена схема алгоритма операции сложения. 233 Микрокоманды МК! и МК2 путем передачи !-го слагаемого из регистра й, в аккумуляторный регистр АС и последующего сдвига влево содержимого АС выдвигают знаковый разряд слагаемого в триггер Ф БМУ, из которого он затем принимается в триггер С регистра признаков БМУ. Микрокоманды МКЗ и МК4 производят сдвиг влево содержимого триггера Т с приемом в младший разряд этого регистра знакового разряда 1-го слагаемого из триггера С; выдвигаемый из регистра Т знаковый разряд 2-го слагаемого передается в триггер Х регистра признаков БМУ.
Микрокоманды МК5 и МКб формируют сумму по модулю 2 знаковых разрядов слагаемых путем их суммирования в младшем разряде регистра Т; полученноезначение выдвигается из регистра Т и передается для хранения в триггер С. При этом равенству знаковых разрядов слагаемых будет соответствовать значение 0 в триггере С. Микрокоманда МК7 формиру- ет сумму слагаемых в регистрах Э АСи К,.
ЦПЭЫБЫС ЭС; БМУ:Н Б;и УУ, Микрокоманда МК8 осущест- Э вляет сдвиг влево хранящейся в цпэ- 'т йг;Бму:и АС суммы слагаемых и прием в 4 младший разряд регистра знаковоцпэысет й т: Бму:гу э;и еу, го разряда 2-го слагаемого, кото- Х рый к данному моменту хранится ЦПЭ Т'Гу~г БМУУЕ~ 4ав в триггере 2; выдвигаемый нз АС знаковый разряд суммы слагаемых Цйз:Сге(т),УМУ:УР С;О- Уу, передается в триггер Х. Мнкрокоманды МК9 и МК10 ЦШ:РС П, Эу,ЭГБМУ:П ПУ, производят суммирование в младе шем разряде АС знаковых разряЦпэмс Рс гу едтпмУ:УР т;т Р, дов 2-го слагаемого и сУммы, после чего полученное значение выдвигацпэыг с,»эг: Бму:э !е, У ется из АС и передается в триггер 2.
Получаемое в триггере Х значение равно нулю в случае совпадения знаковых разрядов суммы и 2-го слагаемого. Комбинация полученных втрнг- д герах С и Х значений С = 0 и Х = ! г соответствует сформулированному у выше условию возникновения пере- полнения разрядной сетки. При миеропрограмна орророеуни этом осуществляется переход к спеоереооееение раерерной еееуни циальной микропрограмме обработряц кд2. схема алгоритма операции ки переполнения. При всех других сочетаниях значений, возникающих тайница д 72 стфки к 00010 00070 оааоо 00070 ооо(а ~ $00070 ( С ооа>а Оаа>а ~- ОООГО даша ооо(а ООО>0 Оааод ь 00070 ! - одого лдрес каяонки оооо ода> 0010 оом 0700 ОГШ омо 01М Гоао 7ОО1 701д 1071 7(ад 7701 >ыо Аесян>инни>й адрес Гг, 0) Г2, 7> (г,г> (2, О> (2,4) (2 О> (2 ~6) Гг, г> (гяа> Г2н У) (г, га> Г21 11) Г2 т 12) (г, 70> (2> 74> микрокоманде МК1 мкг ародоямение аереаоннение мка мк4 мкд МК11 орадоя>кение ! мко с=й юад 5~" МК70 к данному моменту в триггерах С и Х, операция сложения считается завершенной, результат операции хранится в регистре Й,.
В табл. 5.17 показано возможное размещение микрокоманд в ячейках управляющей памяти и последовательность, в которой производится обращение к этим ячейкам памяти в процессе выполнения микропрограммы. При размещении микрокоманд МК! ...
МК!О были оставлены свободнымн две пары ячеек с адресами (2,2), (2,3) и (2„10), (2,11), используемые для выполнения разветвлений по признакам С и Х. После перехода по признаку С = 0 к ячейке с адресом (2,10) по алгоритму требуется выполнение разветвления по признаку Х. Однако разветвление в ячейках (2,2) и (2,3) может быть выполнено лишь из ячейки, имеющей в старшем разряде адреса колонки то же значение О, что и у ячеек (2,2) и (2,3). Так как ячейка (2, 10) имеет в старшем разряде адреса колонки значение 1, то возникает необходимость размещения микрокоманды условного перехода по признаку Е в одной из ячеек о адресом колонки, меньшим 8.
В качестве такой ячейки нами выбрана ячейка с адресом (2,7), которая также оставлена свободной при размещении первых десяти микрокоманд. Таким образом, микрокомандд МК!1 служит для перехода к ячейке с адресом (2,7), а размещенная в этой ячейке микрокоманда МК12 реализует условный переход по признаку Е. Эти микрокоманды отсутствуют в схеме на рис. 5.21, их необходимость определяется в процессе размещения микрокоманд в управляющей памяти. Рассмотренная реализация условных переходов показана на рис. 5.23.
В данном варианте размещения микрокоманд для выполнения обоих условных переходов используются ячейки памяти, расположенные на одной и той же строке, что вызвало необходимость в дополнительной микрокоманде МК12. В табл. 5.18 показан другой вариант размещения той же микропрограммы в управляющей памяти. В этом варианте раз- Рпс. 5.23, Схема алгорвтма двух последовательных рааветвлеввй с вспольаова- пием ячеек памяти в обшей строке мещения микропрограммы условные переходы выполняются в двух последовательных микрокомандах МК10 и МК11 1в предыдущем варианте эти условные переходы выполнялись в микрокомандах МК10 и МК12).
При этом сокращаются общее число микрокоманд в микропрограмме и время ее выполнения. Однако, как видно из табл. 5.!8, при таком выполнении условных переходов в двух последовательных микрокомандах необходимо пару ячеек для второго разветвления выбирать, переходя на другую строку. Соответствующая этому варианту схема разветвлений показана на рис. 5.24. В табл. 5.19 приведена микропрограмма, соответствующая последнему варианту ее размещения в управляющей памяти. Программирование на языке Ассемблера. До сих пор, записывая микрокоманды,мы пользовались языком кодовых комбинаций, единственно понятным для микропроцессора языком.
Пользование этим языком вызывает трудности, связанные, во-первых, с необходимостью за- минранаманоа т007 1010 (У> 10) (У, 17) таолииа д тв' Адрес строка И 010 00010 ~ Оаото ~ 00010 ~ ~00070 ~~ 00070 - обо!о ~~ поп!о 00010 И010 00070 00010 аоот! т аоот т ддрес калинки оооо ИПт 0010 0071 о!оп 0101 0170 ом! 1000 1Ит 1010 том десятичный адрес (г, о) (2, 1) (2» 2) (г> и) (г, е) (2, б) (2, б) (2, 7) (2 В) (2>9) (2 > 10) (2> 71) мк! мк2 мку мке мкб мкб мкг мкв мк9 мкто МК11 Праоалжение ораоалмение перелалнение Рис 5.24.
Схема алгоритма двух последовательных разветвлений с использова- нием пар ячеек в различных строках писи громоздких, трудно запоминаемых двоичных кодовых комбинаций и, во-вторых, со сложностью поиска ошибок в составленной микропрограмме из-за того, что записанная с помощью кодовых комбинаций микропрограмма оказывается трудно читаемой, плохо обозримой. Микрокоманды на языке Ассемблера МПК К589 состоят из ряда обязательных полей, содержащих информацию, предназначенную для управления БМУ и ОУ, и дополнительных полей, вводимых программистом для управления выходными буферами ЦПЗ, оперативной памятью, устройствами ввода, устройствами вывода. В табл. 5.20 показана запись на языке Ассемблера микропрограммы, приведенной на языке кодовых комбинаций в табл. 5.!9.
Таблица б.УР нанес МК з ПЗУ исая мк вмз П ля МК ОУ Уа...га Псясяеяяя УФ» ... УФ, 00011 1010 00011 1011 00010 00010 00010 00010 00010 00010 0001 0 0001 0 00010 00010 00010 00010 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 011 0001 011 0010 011 0011 011 0100 011 0101 011 0110 01! 0111 011 1000 011 1001 1010 010 101! 011 00 11 ОО 1О 00 11 01 О! !О !1 00 10 00 11 10 01 10 11 00 01 00 11 000 110! 000 1101 000 1100 000 1100 011 1100 000 1110 000 0001 000 1101 011 1101 000 1111 1!О 0000 МК! МК2 МКЗ МК4 МК5 МК6 МКТ МКО МКО МК! 0 МК11 Продолжение Продолжение Переполне- ние Вкд пе- ревода Управленве прванакамн Операкн» е ЦПЭ Метка перекода Метка Коммевтарна Операнд РРО НСХ РРО ЗТС РРО НСЕ РРС ЗТЕ РР2 НСЕ РРО ЗТС РРО НС2 РРЕ ЗТЕ РРЗ НСЗ РРО ЗТЕ РРО НСХ й1 АС Т Т Т Т й1 АС АС АС МК! МК2 МКЗ МК4 МКЗ МКЗ МКТ МКЗ МК9 МК10 МК11 Продолжеыяе Продолжеяяе Переделав.
дае ЛСй ЯСй ЛСй ЛСй ЛСй ЛСй ЯСй ЛСй ЮСй ЛСР ЗЕР П.й А1.й 1)Я А1.й 1Кй ЗйА А1.й А1.й 114й ЗйА 1ЧОР М1, М2 МЗ, М4 М1: М2: МЗ: М4: В микрокомандах безусловного перехода в поле метки перехода указывается метка той микрокоманды, к которой осуществляется переход. В случае микрокоманды условного перехода в поле метки перехода приводятся метки двух микрокоманд, к которым осуществляется переход: на первом месте — метка микрокоманды, к которой производится переход при значении признака разветвления, равном нулю, на втором месте — метка микрокоманды, к которой происходит переход при значении признака, равном единице. Очевидно, не должно быть более одной микрокоманды с одной и той же меткой, в противном случае возникает неопределенность в выборе микрокоманды, к которой должен быть произведен переход.