Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Разработка алгоритма работы управляющего автоматаСтр 1 из 2Следующая ⇒
Разработка алгоритма работы управляющего автомата
По заданию необходимо разработать алгоритм вычисления значения по формуле . Деление должно быть реализовано с помощью простейших микроопераций сложения и сдвига. Исходные данные представлены в формате целого со знаком. Исходные значения - целые переменные А, В, С. Алгоритм начинается с записи значения переменной А в один из РОН-ов. Потом из этого регистра вычитается значение переменной В. Возможно в результате вычитания получится переполнение, которое фиксируется с помощью проверки соответствующего флага, и производится выход из алгоритма. Знак результата кодируется 0 или 1 и сохраняется в стэке. После этого производится собственно деление (a-b)/c, которые находятся в памяти. В качестве алгоритма деления используется алгоритм деления целых чисел без знака. Знак результата формируется при завершении алгоритма извлечением из стэка кода этого знака (0 или 1). Соответственно проверяя условие получаем положительный или отрицательный результат.
С=0, остаток> =0 Вычитание (в сумматор посылаетя ), затем сдвиг влево на 1р. 1
3. Тестирование программы
Ниже приведен листинг LOG - файла при обработке переполнения разрядной сетки при вычитании чисел: (A-B) Turbo Debugger Log Variables28912 (70F0h) b 36860 (8FFCh) c 's' 115 (73h) ost ' ' 0 (00h) rez ' ' 0 (00h) start @5F9C: 0000 CPU 80486 ds: 0000 F0 70 FC 8F 73 00 00 00 Ёp№Пs ds: 0008 00 00 00 00 00 00 00 00 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы_О+Л- ds: 0018 00 2B 1E 02 00 70 70 83 +-_ ppГ CPU 80486 ax 5F9B bx 0000 cx 0000 dx 0000 si 0000 di 0000 bp 0000 sp 0280 ds 5F9B es 5F63 ss 5F73 cs 5F9C ip 0005 CPU 80486=0=0=0=0=0=0=1=0 80486 ax 0001 bx E0F4 cx 0000 dx 0000 si 0000 di 0000 bp 0000 sp 0280 ds 5F9B es 5F63 ss 5F73 cs 5F9C ip 0089 CPU 80486=1=0=1=1=0=1=1=028912 (70F0h) b 36860 (8FFCh) c 's' 115 (73h) ost ' ' 0 (00h) rez ' ' 0 (00h) start @5F9C: 0000 CPU 80486 ax 5F9B bx E0F4 cx 0000 dx 0000 si 0000 di 0000 bp 0000 sp 0280 ds 5F9B es 5F63 ss 5F73 cs 5F9C ip 0005 Далее приведен листинг LOG - файла при обработке исключительной ситуации - делении на ноль Turbo Debugger Log208 (D0h) b 65516 (FFECh) c ' ' 0 (00h) ost ' ' 0 (00h) rez ' ' 0 (00h) start @5F9C: 0000 CPU 80486 ax 5F9B bx 00D0 cx 0000 dx 0000 si 0000 di 0000 bp 0000 sp 0280 ds 5F9B es 5F63 ss 5F73 cs 5F9C ip 0009 CPU 80486=0=0=0=0=0=0=1=080486 ds: 0000 D0 00 EC FF 00 00 00 00 ¦ ь ds: 0008 00 00 00 00 00 00 00 00 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы_О+Л- ds: 0018 00 2B 1E 02 00 70 70 83 +-_ ppГ CPU 80486 ax 0001 bx 00E4 cx 0000 dx 0000 si 0000 di 0000 bp 0000 sp 027E ds 5F9B es 5F63 ss 5F73 cs 5F9C ip 0089 CPU 80486=0=1=0=0=1=0=1=080486 ds: 0000 D0 00 EC FF 00 00 00 00 ¦ ь ds: 0008 00 00 00 00 00 00 00 00 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы_О+Л- ds: 0018 00 2B 1E 02 00 70 70 83 +-_ ppГ Variables208 (D0h) b 65516 (FFECh) c ' ' 0 (00h) ost ' ' 0 (00h) rez ' ' 0 (00h) Далее приведен листинг LOG - файла показывающего правильность алгоритма работы программы: Turbo Debugger Log208 (D0h) 20 (14h) '_' 19 (13h) ' ' 0 (00h) ' ' 0 (00h) @5F9C: 0000 80486 ax 5F9B bx 00D0 cx 0000 dx 0000 si 0000 di 0000 bp 0000 sp 0280 ds 5F9B es 5F63 ss 5F73 cs 5F9C ip 0009 CPU 80486 ds: 0000 D0 00 14 00 13 00 00 00 ¦ ds: 0008 00 00 00 00 00 00 00 00 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы ds: 0018 00 2B 1E 02 00 70 70 83 +80486=0=0=0=0=0=0=1=0208 (D0h) 20 (14h) '_' 19 (13h) '_' 17 (11h) ' ' 9 (09h) @5F9C: 0000 80486 ax 0000 bx 1109 cx 0000 dx ED13 si 0000 di 0000 bp 0000 sp 0280 ds 5F9B es 5F63 ss 5F73 cs 5F9C ip 007B CPU 80486 ds: 0000 D0 00 14 00 13 11 09 00 ¦ ds: 0008 00 00 00 00 00 00 00 00 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы ds: 0018 00 2B 1E 02 00 70 70 83 +80486=0=1=0=0=1=0=1=0 Управляющий аппарат алгоритм кодированный Разработка УА с жесткой логикой
Для построения УА с жесткой логикой использовался следующий фрагмент исходной схемы алгоритма:
Общие сведения
Автомат с жесткой логикой строится на базе использования ЛЭ и элементов памяти. Изменить алгоритм работы такого автомата нельзя, не изменяя соединения между элементами. Для таких автоматов характерны высокое быстродействие, определяемое только задержками используемых ЛЭ и элементов памяти, пропорциональный рост обьема оборудования в зависимости от сложности реализуемого алгоритма и малые удельные затраты оборудования при реализации простых микропрограмм. Однако автоматы с жесткой логикой не обладают гибкостью при внесении изменений в алгоритм их функционирования, необходимость в которых особенно часто возникает в процессе проектирования цифровых устройств.
Абстрактный синтез
Построение ПТП ЦА МУРА:
СКУ ЦА Мура имеет вид: s1(t+1)=s0(t+1)=s1|s14*X2|s15*X2(t+1)=s2(t+1)=s3*X1(t+1)=s3*x1(t+1)=s4(t+1)=s5(t+1)=s6(t+1)=s7(t+1)=s8(t+1)=s9(t+1)=s10(t+1)=s11(t+1)=s12(t+1)=s13(t+1)=s14*x2|s15*x2=s16 CBФ имеет вид: y1=s1|s12|s13=s2=s3|s16=s4=s5=s6=s7=s8|s9=s1010=s11 y11=s14|s15 Выполняется минимизация числа состояний. При этом используется метод пар. Выписываем классы 1-эквивалентных состояний, чтобы перейти от автомата Мура к автомату Мили. 1.s0, s10, s11: (1-y1) . s6, s7: (1-y8) . s12, s13: (1-y11) 4. s14, s15: (X2-y2, x2-y3)
Строится таблица пар:
После минимизации получим: a0=s0, a1=s1, a2=s2, a3=s3, a4=s4, a5=s5, a6=s6, a7=s7, a8=s8, a9=s9, =s10, s11; a11=s12, s13; a12=s14, s15; s13=s16; a14=sk После минимизации строим ПТП ЦА Мили
Структурный синтез Выбор варианта кодирования Чтобы найти вариант кодирования состояний автомата близкий к оптимальному, построим диаграмму Вейча для 4 переменных. Оптимальным является тот вариант, когда при переходе из одного состояния автомата в другое переключается наименьшее число триггеров (самый лучший вариант - один триггер).
В итоге получим следующее значения кодов состояний
Неиспользованная кодовая группа - 1010
Описание работы
1. При включении питания на вход конъюнктора (D1.1), пока поступает 0 (происходит зарядка конденсатора С1 через сопротивление R1) происходит инициализация, устанавливающая JK-триггеры (D5-D8) в начальное состояние. Также этот сигнал поступает на триггер управления(D2), устанавливая его через R-вход в 0, что заставляет через элементы К155ЛИ1(D9, D10) отключить выходы схемы, т. е. У-ки не формируются. Затем конденсатор С1 заряжается и 1-ца поступает на входы R, S всех триггеров не изменяя состояния, функции возбуждения триггеров не формируются и схема не работает. Автомат находится в начальном состоянии и “ждёт” сигнала “пуск”. 2. Сигнал “пуск” соответствует нулевому импульсу, поступающему на вход S триггера D2 (ТМ2). На входе R данного триггера - пассивный сигнал, значит триггер установится в 1. Эта 1 с выхода триггера поступает на элементы (D9-D10), подключая выходы схемы, схема устанавливается в начальное состояние. В момент прихода сигнала «пуск» на выходе триггера D2 (TM2) формируется 1-ый уровень, который поступает на элемент ЛИ3, разрешающий проход синхроимпульса на входы синхронизации триггеров ТВ1 (D5-D8). При приходе синхроимпульса логика сформирует соответствующие функции возбуждения и выходные сигналы. По первому нарастающему фронту синхроимпульса триггеры D5-D8(ТВ1) перейдут под воздействием функций возбуждения в состояние, соответствующее следующему состоянию УА и т.д. 3. При появлении конечного состояния на выходе на котором формируется Y12, появляется нулевой уровень, который поступает на вход элемента D4.3 (ЛН1), что приводит к появлению 0 на входе элементов D3.1, D3.2 (ЛИ3). Запрещается проход синхроимпульса. Производится инициализация схемы по пункту 1.
Построение кодированной ГСА
Таблица прошивки ПЗУ
Логические условия кодируются 3 разрядами:
Список использованной литературы
1 Сергеев Н.П., Вашкевич Н.П. «Основы вычислительной техники». Учебное пособие. 2 Справочник по интегральным микросхемам. / под ред. Б.В. Тарабрина. 3 Майко Г.В.«ASSEMBLER для IBM PC». Разработка алгоритма работы управляющего автомата
По заданию необходимо разработать алгоритм вычисления значения по формуле . Деление должно быть реализовано с помощью простейших микроопераций сложения и сдвига. Исходные данные представлены в формате целого со знаком. Исходные значения - целые переменные А, В, С. Алгоритм начинается с записи значения переменной А в один из РОН-ов. Потом из этого регистра вычитается значение переменной В. Возможно в результате вычитания получится переполнение, которое фиксируется с помощью проверки соответствующего флага, и производится выход из алгоритма. Знак результата кодируется 0 или 1 и сохраняется в стэке. После этого производится собственно деление (a-b)/c, которые находятся в памяти. В качестве алгоритма деления используется алгоритм деления целых чисел без знака. Знак результата формируется при завершении алгоритма извлечением из стэка кода этого знака (0 или 1). Соответственно проверяя условие получаем положительный или отрицательный результат.
С=0, остаток> =0 Вычитание (в сумматор посылаетя ), затем сдвиг влево на 1р. 1
3. Тестирование программы
Ниже приведен листинг LOG - файла при обработке переполнения разрядной сетки при вычитании чисел: (A-B) Turbo Debugger Log Variables28912 (70F0h) b 36860 (8FFCh) c 's' 115 (73h) ost ' ' 0 (00h) rez ' ' 0 (00h) start @5F9C: 0000 CPU 80486 ds: 0000 F0 70 FC 8F 73 00 00 00 Ёp№Пs ds: 0008 00 00 00 00 00 00 00 00 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы_О+Л- ds: 0018 00 2B 1E 02 00 70 70 83 +-_ ppГ CPU 80486 ax 5F9B bx 0000 cx 0000 dx 0000 si 0000 di 0000 bp 0000 sp 0280 ds 5F9B es 5F63 ss 5F73 cs 5F9C ip 0005 CPU 80486=0=0=0=0=0=0=1=0 80486 ax 0001 bx E0F4 cx 0000 dx 0000 si 0000 di 0000 bp 0000 sp 0280 ds 5F9B es 5F63 ss 5F73 cs 5F9C ip 0089 CPU 80486=1=0=1=1=0=1=1=028912 (70F0h) b 36860 (8FFCh) c 's' 115 (73h) ost ' ' 0 (00h) rez ' ' 0 (00h) start @5F9C: 0000 CPU 80486 ax 5F9B bx E0F4 cx 0000 dx 0000 si 0000 di 0000 bp 0000 sp 0280 ds 5F9B es 5F63 ss 5F73 cs 5F9C ip 0005 Далее приведен листинг LOG - файла при обработке исключительной ситуации - делении на ноль Turbo Debugger Log208 (D0h) b 65516 (FFECh) c ' ' 0 (00h) ost ' ' 0 (00h) rez ' ' 0 (00h) start @5F9C: 0000 CPU 80486 ax 5F9B bx 00D0 cx 0000 dx 0000 si 0000 di 0000 bp 0000 sp 0280 ds 5F9B es 5F63 ss 5F73 cs 5F9C ip 0009 CPU 80486=0=0=0=0=0=0=1=080486 ds: 0000 D0 00 EC FF 00 00 00 00 ¦ ь ds: 0008 00 00 00 00 00 00 00 00 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы_О+Л- ds: 0018 00 2B 1E 02 00 70 70 83 +-_ ppГ CPU 80486 ax 0001 bx 00E4 cx 0000 dx 0000 si 0000 di 0000 bp 0000 sp 027E ds 5F9B es 5F63 ss 5F73 cs 5F9C ip 0089 CPU 80486=0=1=0=0=1=0=1=080486 ds: 0000 D0 00 EC FF 00 00 00 00 ¦ ь ds: 0008 00 00 00 00 00 00 00 00 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы_О+Л- ds: 0018 00 2B 1E 02 00 70 70 83 +-_ ppГ Variables208 (D0h) b 65516 (FFECh) c ' ' 0 (00h) ost ' ' 0 (00h) rez ' ' 0 (00h) Далее приведен листинг LOG - файла показывающего правильность алгоритма работы программы: Turbo Debugger Log208 (D0h) 20 (14h) '_' 19 (13h) ' ' 0 (00h) ' ' 0 (00h) @5F9C: 0000 80486 ax 5F9B bx 00D0 cx 0000 dx 0000 si 0000 di 0000 bp 0000 sp 0280 ds 5F9B es 5F63 ss 5F73 cs 5F9C ip 0009 CPU 80486 ds: 0000 D0 00 14 00 13 00 00 00 ¦ ds: 0008 00 00 00 00 00 00 00 00 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы ds: 0018 00 2B 1E 02 00 70 70 83 +80486=0=0=0=0=0=0=1=0208 (D0h) 20 (14h) '_' 19 (13h) '_' 17 (11h) ' ' 9 (09h) @5F9C: 0000 80486 ax 0000 bx 1109 cx 0000 dx ED13 si 0000 di 0000 bp 0000 sp 0280 ds 5F9B es 5F63 ss 5F73 cs 5F9C ip 007B CPU 80486 ds: 0000 D0 00 14 00 13 11 09 00 ¦ ds: 0008 00 00 00 00 00 00 00 00 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы ds: 0018 00 2B 1E 02 00 70 70 83 +80486=0=1=0=0=1=0=1=0 |
Последнее изменение этой страницы: 2020-02-17; Просмотров: 146; Нарушение авторского права страницы