Проектирование управляющего цифрового автомата
Разработка управляющего автомата, ориентированного на выполнение заданной микрооперации. Разработка алгоритма работы управляющего автомата. Листинг программы. Выбор оптимального варианта кодирования состояний автомата. Синтез функции возбуждения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 26.12.2012 |
Размер файла | 506,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
Эффективность применения современных средств вычислительной техники во всех сферах научной и производственной деятельности оказывает решающее влияние на увеличение производительности труда и непрерывное ускорение научно-технического прогресса.
ЭВМ широко применяются в области экономики, планирования, управления производственной деятельностью предприятий, автоматизации исследований и проектно-конструкторских работ, автоматизации технологических процессов и управления различными объектами и др.
Создание средств вычислительной техники, способных управлять приборами, станками, оборудованием, механизмами немыслимо без применения научно обоснованных методов прикладной теории цифровых автоматов.
В соответствии с заданием на курсовое проектирование по курсу «Теория автоматов», необходимо разработать управляющий автомат (УА) с жесткой и программируемой логикой для выполнения операции:
Для реализации данной задачи необходимо разработать программу на языке низкого уровня Assembler, отладить её, и разработать для неё ГСА, по которой строится УА.
Для реализации операции на языке Assembler выберем разрядность операндов 32 бит. Форматы операндов - целые числа, крайний левый разряд знаковый. Операнды и результат вычисления находятся в оперативной памяти в дополнительном коде.
1. Разработка алгоритма работы управляющего автомата
1.1 Разработка алгоритма
Заданная микрооперация: .
Построим алгоритм в соответствии с его реализацией на языке Assembler:
1. Заносим в регистр еах число а
2. Заносим в регистр ebх число b
3. Проверяем знаковый разряд регистра eax, устанавливаем флаги
4. Проверяем флаг знака, если него нет - переход к пункту 6
5. Инвертируем знаковый разряд регистра еах (находим модуль числа)
6. Проверяем знаковый разряд регистра ebx, устанавливаем флаги
7. Проверяем флаг знака, если него нет - переход к пункту 9
8. Инвертируем знаковый разряд регистра еbх (находим модуль числа)
9. Вычитаем ebx из еах
10. Проверяем флаг знака, если его нет - переход к пункту 13
11. Инвертируем знаковый разряд регистра еах
12. Увеличиваем значение регистра edi на единицу
13. Заносим в регистр ebx значение регистра еах
14. Выполняем логический сдвиг влево регистра eax
15. Проверяем на переполнение, если есть - переход к пункту 44
16. Выполняем логический сдвиг влево регистра eax
17. Проверяем на переполнение, если есть - переход к пункту 44
18. Прибавляем значение регистра ebx к значению регистра еах
19. Проверяем на переполнение, если есть - переход к пункту 44
20. Заносим в регистр ebx число с
21. Сравниваем знаковый разряд регистра ebx с единицей
22. Если равен 1 - переход к пункту 25
23. Инвертируем знаковый разряд регистра ebx
24. Увеличиваем значение регистра edi на единицу
25. Заносим в регистр edx число 0
26. Заносим в регистр ecx число 31
27. Проверяем младший разряд регистра ebx
28. Если равен 0 - переход к пункту 30
29. Прибавляем значение регистра eax к значению регистра edx
30. Выполняем арифметический сдвиг вправо регистра edx
31. Выполняем арифметический сдвиг вправо регистра ebx
32. Очищаем флаг cf
33. Уменьшаем значение регистра ecx на единицу
34. Сравниваем значение регистра ecx с 0
35. Если не равен 0 - переход к пункту 27
36. Выделяем младший бит регистра edx
37. Выполняем n-ный сдвиг
38. Сравниваем значение регистра edi с единицей
39. Если не равен - переход к пункту 42
40. Инвертируем знаковый разряд регистра edx
41. Заносим в младшую часть переменной y значение регистра ebx
42. Заносим в старшую часть переменной y значение регистра edx
43. Обнуляем регистр edi. Выход из алгоритма.
44. Заносим в переменную er значение 1. Выход из алгоритма.
1.2 Листинг программы
В соответствии с алгоритмом реализуем программу на языке Assembler:
mov eax, a
mov ebx, b
mov edi, 0
vcht:
sub eax, ebx
js modul
jmp umn1
modul:
neg eax
inc edi
umn1:
mov ebx, eax
shl eax, 1
jo finish
shl eax, 1
jo finish
add eax, ebx
jo finish
mov ebx, c //P2
test ebx, 80000000h
js label3
jmp umn2
label3:
neg ebx
inc edi
umn2:
mov edx, 0 // РСМ
mov ecx, 31
proverka:
test ebx, 1h
jnz slozh
jmp sdvig
slozh:
add edx, eax
sdvig:
rcr edx, 1
rcr ebx, 1
clc
dec ecx
test ecx, ecx
jnz proverka
bt edx, 31
rcr ebx, 1
clc
shr edx, 1
cmp edi, 1
jz minus
jmp rez
minus:
neg edx
dec edx
neg ebx
jmp rez
rez:
mov dword ptr y, ebx
mov dword ptr y[4], edx
jmp f1
finish:
mov er, 1
f1:
mov edi, 0
1.3 Тестирование алгоритма
Для отладки использовалась программа Visual Studio 2008. Этот выбор объясняется тем, что данная программа активно использовалась при прохождении курса лекций по языку Assembler, для разработки лабораторных работ.
Для тестирования алгоритма зададим некоторый набор данных.
Переменные а, b, c представлены в десятичной системе счисления.
Пример 1 (все числа положительные):
Набор входных данных:
а = 360
b = 124
с = 530
Результат, выданный программой:
y = (360-124)*5*530=625400
Рисунок 1
Пример 2 (1 число отрицательное):
Набор входных данных:
а = -5840
b = 2610
с = 3270
Результат, выданный программой:
Y = - 138157500
Рисунок 2
Пример 3 (2 отрицательных числа):
Набор входных данных:
а = - 6732
b = - 1346
с = 2888
Результат выданный программой:
У = - 77773840
Рисунок 3
Пример 4 (переполнение):
Набор входных данных:
а = 1844674407370955168
b = 1
с = 56
Результат выданный программой:
Рисунок 4
Проверенный вручную результат совпадает с полученным в программе.
Как показала проверка и отладка - результат соответствует истине.
2. Синтез управляющего автомата с жёсткой логикой
Достоинства автоматов с жёсткой логикой:
высокое быстродействие при реализации алгоритма управления;
хорошо разработанные формальные методы синтеза вплоть до уровня принципиальных схем.
Недостатки:
отсутствие гибкости в отношении возможности внедрения изменений в схему, при изменении исходного алгоритма;
пропорциональный рост объёма оборудования сложности реализуемого алгоритма;
структура таких устройств на уровне схемы не является регулярной (повторяющейся), а это приводит к повышению сложности проектирования таких устройств и, особенно, при реализации их на СИС и БИС.
2.1 Построение ГСА с учетом задания
Для цифрового автомата берётся не весь алгоритм, а та его часть, которая была выделена руководителем курсового проектирования.
Алгоритм построения кодированной ГСА будет включать следующие шаги:
1. Пронумеруем все операторные вершины ГСА программы, предварительно введя пустые операторные (если это нужно), если в ГСА имеются циклы, состоящие только из условных вершин.
2. Каждому оператору ГСА программы поставим в соответствие вполне определённое событие (состояние) ЦА, присвоим ему индекс, соответствующий номеру вершины ГСА программы. При этом необходимо иметь в виду, что одинаковым операторам, стоящим в разных местах ГСА, должны соответствовать различные события (состояния), но одинаковые выходные сигналы. Это обеспечивается сквозной нумерацией операторных вершин ГСА.
3. Начальной вершине ГСА будет соответствовать начальное событие S0, с выходным сигналом у0, конечной - событие Sk с сигналом уk.
В качестве ЦА задан автомат Мура.
2.2 Построение ПТП ЦА Мура
От начального языка задания автомата перейдем к прямой таблице переходов и выходов (ПТП) Мура.
Таблица 1. ПТП ЦА Мура
2.3 Выбор оптимального варианта кодирования состояний автомата
По ПТП ЦА Мура составим систему канонических уравнений (СКУ).
Таблица 2. СКУ ЦА Мура с указанными ценами по Квайну
1 1 4 2 4 1 1 1 1 2 1 1 |
S1(t+1)= S0 S2(t+1)= S1 S3(t+1)=S9S2 S4(t+1)= S3 S5(t+1)= S3 S4 S6(t+1)=S5 S7(t+1)=S6 S8(t+1)= S7 S9(t+1)=S8 S10(t+1)=S9 S11(t+1)=S10 Sk(t+1)=S11 |
Для нашего случая ЦА имеем 13 состояний: S=[S0, S1,…, S11, Sk].
Значит, для кодирования состояний достаточно 4 двоичных числа. Желательно, чтобы при переходе из одного состояния в другое менялось значение одного разряда кода состояния или, другими словами, менял своё состояние один триггер. В качестве элементарного автомата задан D триггер, следовательно, будем кодировать по методу №2. Этот метод основан на выборе цены по Квайну уравнения СКУ.
Таблица 3. Таблица кодов
2.4 Синтез функции возбуждения и функции выходов
В качестве элемента памяти по заданию необходимо использовать D-триггер.
Матрица переходов D триггера приведена в таблице 4.
управляющий автомат алгоритм кодирование
Таблица 4. Матрица переходов
Qt - Qt+1 |
Dt |
|
0 - 0 0 - 1 1 - 0 1 - 1 |
0 0 1 1 |
Кодирование состояний автомата было произведено в п. 2.3.
В кодировании входных и выходных сигналов нет необходимости, т.к. они сами являются двоичными.
Осуществим построение кодированной ПТП по ПТП ЦА Мура и к ней справа добавляем столбцы для функций возбуждения элементарных автоматов, которые заполняем, используя матрицу переходов D триггера.
Таблица 2. Кодированная ПТП ЦА Мура
Для достижения максимального быстродействия и минимальных аппаратных затрат удобнее работать с инверсными состояниями. Поэтому возьмем двойное отрицание от каждой функции возбуждения и от выходных функций.
Функции возбуждения триггеров:
Выходные функции:
y1=
y2=
y3=
y4=
y5=
y6=
y7=
y8=
y9=
y10=
y11=
yk=
2.5 Реализация ЦА на логических элементах
Выбор подходящей серии элементов
Данный автомат может быть реализован разными путями. Состояния автомата закодированы четырьмя разрядами, значит нужно использовать 4 D триггера К155ТM2. Для реализации функций возбуждения триггеров нам необходимы следующие логические элементы (ЛЭ): К155ЛЛ1 - 2ИЛИ; К155ЛА1 - 4И-НЕ; К155ЛА2 - 8И-НЕ. Для реализации функций выходов необходим дешифратор 4-16 с инверсными выходами. Будем использовать дешифратор К155ИД3, который имеет 4 входа, 16 выходов и два входа разрешения работы. Также необходимо предусмотреть наличие сигналов старта и стопа, для запуска и остановки схемы. При выдаче уk также необходимо остановить работу схемы. Проверим совместимость серий К155, К555. У всех серий тип логики - ТТЛ. Напряжение источника питания: 5,0 В + 5%. К155 и К555 имеют логические уровни нуля 0,4 В, единицы 2,4 В. Для выбранных элементов общий вывод - 7, вывод питания - 14.
Для того, чтобы получать входные сигналы и выдавать выходные будем использовать разъем СНП34С-135Р, тип розетка. У него три линии контактов A, B, и C по 45 контактов соответственно.
Общее описание работы схемы
Схема управляется двумя сигналами: START и STOP.
Сигнал START запускает автомат. После прихода сигнала STOP и выдачи сигнала yk схема автоматически останавливается, устанавливаясь в исходное состояние. Для устойчивой работы схемы необходимо сгладить помехи на шине питания. Для фильтрации частотной помех необходимо в непосредственной близости от корпуса каждой микросхемы на входах питания разместить конденсаторы по 68 нФ каждый.
2.6 Расчёт быстродействия и максимально допустимой частоты задающего генератора
В качестве элементарного автомата используется D-триггер К555ТM2 (с динамическим управлением), который по переднему фронту синхроимпульса устанавливает триггер в соответствующее значение.
Для корректного выполнения схемой поставленной задачи необходимо обеспечить такую длину синхроимпульса во время которой микросхемы сменят свои состояния и сформируют выходной сигнал.
Для триггера с динамическим управлением быстродействие рассчитывается следующим образом: по переднему фронту синхроимпульса происходит установка триггера в соответствующее состояние и формируются функции выхода, а по заднему - формируются функции возбуждения. Длина импульса будет рассчитываться как максимальное время задержки элементов схемы по самому длинному пути. Для надёжного прихода сигнала на триггер будем брать время задержки равное tзд.
Таблица 6 - Время задержки элементов
Элементы |
tздвкл, нс |
tздвыкл, нс |
|
К155ЛА1 |
15 |
22 |
|
К155ЛА2 |
15 |
22 |
|
К155ЛА3 |
15 |
22 |
|
К155ЛИ1 |
19 |
27 |
|
К155ЛЛ1 |
22 |
15 |
|
К155ЛН1 |
15 |
22 |
|
К155ЛЕ1 |
15 |
22 |
|
К155ТМ2 |
40 |
25 |
|
К155ИД3 |
33 |
36 |
Функции возбуждения:
ИД3>ЛЛ1>ЛА2=33+22+15=70 нс
tфвозб=70 нс
Функции выходов:
ИД3>ЛЛ1>ЛА3=33+22+15=70 нс
tфвых=мах+tтр =40+70=110 нс
T/2=max{tфвозб, tфвых}=110 нс
Т=220 нс
F=1/(220*10-9)=4,54 Мгц
Т.о. генерация синхроимпульсов должна происходить с частотой 4,54 МГц.
2.7 Проверка работоспособности схемы
Проверим один из переходов. Возьмем состояние S0. На прямых выходах триггеров соответственно будет присутствовать логический уровень 1110. На выходе 16 дешифратора DD12 будет присутствовать нулевой сигнал, на всех остальных - единичный. Под действием этих сигналов на логических элементах формируются следующие функции возбуждения:
Согласно матрице переходов для D триггера несложно определить, что на прямых выходах триггеров появится следующий логический уровень 1000 (S1) соответственно. Обратившись к прямой таблице переходов, мы убеждаемся в том, что состояние S0 независимо от условий переходит в состояние S1.
Аналогичным образом выполнена проверка переходов S3-S4 и S10-S11.
3. Синтез управляющего автомата с программируемой логикой
Альтернативой микропрограммного автомата с жёсткой логикой является микропрограммный автомат с программируемой логикой.
Достоинства микропрограммного автомата с программируемой логикой:
предопределённость структуры микропрограммного автомата, т.е. состава его функциональных узлов, их связей между собой;
гибкость структуры автомата при модификации алгоритма работы (при изменении алгоритма работы достаточно внести изменения в управляющую память, т.е. перепрошить ПЗУ, остальные же блоки остаются без изменения;
Основным недостатком является их меньшее быстродействие (чем с жёсткой логикой) с использованием одной и той же электронной базы.
Микропрограммные автоматы с программируемой логикой имеет смысл использовать, когда число операторных и условных вершин в алгоритме >150, но в нашем случае использование таких автоматов необходимо по заданию.
3.1 Выбор формата микрокоманд
Каждое слово в ПЗУ, расположенное по своему адресу в микропрограммном автомате с программируемой логикой называется микрокомандой (МК).
Требуемое количество бит в МК определяет разрядность используемого ПЗУ.
Каждая МК в общем случае содержит следующую информацию:
о микрооперациях, выполняемых в данном такте работы автомата;
информацию об адресе следующей МК.
По заданию необходимо разработать микропрограммный автомат с принудительной адресацией.
Кодированную ГСА автомата с программируемой логикой получим из ГСА программы (см. приложение). Причём, для ЦА с программируемой логикой берётся весь алгоритм, в отличие от ЦА с жёсткой логикой, для которого берётся часть алгоритма.
Нумеруются как операционные, так и управляющие вершины.
Формат МК выберем исходя из следующих соображений:
т.к. количество вершин (операторных и условных) составляет 46, то для полей адреса перехода (АДРПЕР) к следующей МК выделим 6 бит;
т.к. имеем три входных сигнала, закодируем поле логического условия (ЛУ) 3-мя битами.
т.к. задан критерий минимума оборудования, то будем использовать один ЛУ.
Формат микрокоманды будет выглядеть следующим образом:
3.2 Проектирование функциональной схемы
Для хранения МК будем использовать ПЗУ, количество слов которого соответствует количеству строк в табл. 5, а количество бит в слове определяется в соответствии с форматом МК. В итоге получим ПЗУ 64х16.
Разрядность регистра адреса (РА) будет соответствовать разрядности адреса ПЗУ, т.е. 6 бит.
Регистр слова (РСЛ) выберем в соответствии с форматом МК, т.е. 16-ти разрядным.
Порядок работы ЦА с программируемой логикой таков:
1) при поступлении сигнала инициализации регистр адреса (РА) устанавливается в ноль;
2) затем значение РА поступает в ПЗУ;
3) при получении импульса синхронизации, ПЗУ помещает в регистр слова (РСЛ) строку данных, соответствующую адресу, полученному из РА;
4) на следующем шаге происходит сразу две операции - формируется следующий адрес на мультиплексоре и формируется соответствующая управляющая функция на дешифраторе и схеме организации управления (СхОУ);
5) если на выходе формируется yk - работа ЦА останавливается и РА обнуляется;
6) с мультиплексора и первых 4 бит РСЛ на РА поступает адрес следующей строки прошивки.
7) алгоритм переходит на шаг 2.
3.3 Построение таблицы прошивки ПЗУ
Основным отличием автоматов с программируемой логикой является то, что алгоритм управления записывается в управляющую память (УП), которая строится на постоянном запоминающем устройстве (ПЗУ).
ПЗУ - память, из которой можно только считывать информацию, и эта информация структурирована и разбита на слова, каждое из которых записано по своему адресу. Количество адресов кратно 2n, где n - разрядность регистра адреса ПЗУ.
Кодировка входных сигналов
x1 001
x2 010
x3 011
Кодировка выходных сигналов
y1 00001
y2 00010
y3 00011
y4 00100
y5 00101
y6 00110
y7 00111
y8 01000
y9 01001
y10 01010
y11 01011
y12 01100
y13 01101
y14 01110
y15 01111
y16 10000
y17 10001
y18 10010
y19 10011
y20 10100
y21 10101
y22 10110
y23 10111
y24 11000
y25 11001
y26 11010
y27 11011
y28 11100
y29 11101
y30 11110
y31 11111
Прошивку ПЗУ выполняем в соответствии с адресом МК:
Таблица 3. Таблица прошивки ПЗУ
Адрес слова в ПЗУ |
Микрокоманда |
Номера вершин ГСА |
|||
АДРПЕР |
ЛУ1 |
Y1 |
|||
0 |
000001 |
000 |
000000 |
0 |
|
1 |
000010 |
000 |
000001 |
1 |
|
2 |
000011 |
000 |
000010 |
2 |
|
3 |
00010х |
001 |
000011 |
3,4 |
|
4 |
00011х |
001 |
000101 |
6,7 |
|
5 |
000100 |
000 |
000100 |
5 |
|
6 |
000110 |
001 |
000111 |
9,10 |
|
7 |
0010х0 |
000 |
000110 |
8 |
|
8 |
001011 |
000 |
001010 |
13 |
|
9 |
001000 |
000 |
001001 |
12 |
|
10 |
001001 |
000 |
001000 |
11 |
|
11 |
0111х1 |
010 |
001011 |
14,15 |
|
12 |
00111х |
000 |
001110 |
21 |
|
13 |
001111 |
000 |
001001 |
24 |
|
14 |
001101 |
000 |
000110 |
23 |
|
15 |
010000 |
000 |
001111 |
25 |
|
16 |
010001 |
000 |
010000 |
26 |
|
17 |
01001х |
011 |
010001 |
27,28 |
|
18 |
010011 |
000 |
010010 |
29 |
|
19 |
010100 |
000 |
010011 |
30 |
|
20 |
010101 |
000 |
010100 |
31 |
|
21 |
010110 |
000 |
010101 |
32 |
|
22 |
010111 |
000 |
010110 |
33 |
|
23 |
01х001 |
011 |
010111 |
34,35 |
|
24 |
011010 |
000 |
010100 |
37 |
|
25 |
011000 |
000 |
011000 |
36 |
|
26 |
011100 |
000 |
011001 |
38 |
|
27 |
001100 |
000 |
001101 |
20 |
|
28 |
10000х |
011 |
011010 |
39,40 |
|
29 |
01111х |
010 |
001011 |
16,17 |
|
30 |
011х11 |
010 |
001100 |
18,19 |
|
31 |
100100 |
000 |
011111 |
45 |
|
32 |
100010 |
000 |
011100 |
42 |
|
33 |
100000 |
000 |
011011 |
41 |
|
34 |
100011 |
000 |
011101 |
43 |
|
35 |
100100 |
000 |
011110 |
44 |
|
36 |
000000 |
000 |
100000 |
46 |
Заключение
В данной курсовой работе был разработан в соответствии с заданием управляющий автомат, ориентированный на выполнение заданной микрооперации. Предварительно была разработана ГСА операционного автомата, а затем для отдельной его части были построены схема электрическая принципиальная управляющего автомата с жёсткой логикой и функциональная схема МПА с программируемой логикой.
Размещено на Allbest.ru
Подобные документы
Общая структура и принцип функционирования синхронного управляющего автомата. Анализ граф схемы алгоритма управляющего автомата и детализация блока памяти. Структурный синтез логического преобразователя и разработка электрической функциональной схемы.
курсовая работа [222,6 K], добавлен 19.02.2013Разработка управляющего автомата процессора с жесткой логикой в САПР Quartus II. Построение схемы функциональной микропрограммы команды "Исключающее ИЛИ" в размеченном виде. Унитарное кодирование состояний автомата. Запись функций переходов и выходов.
курсовая работа [671,3 K], добавлен 04.11.2014Разработка функциональной схемы управляющего микропрограммного автомата. Построение графов автомата для модели Мили и Мура. Кодирование состояний для модели Мура на D-триггерах. Алгоритм умножения чисел в дополнительном коде с простой коррекцией.
курсовая работа [764,0 K], добавлен 27.08.2012Определение функций выходных сигналов и сигналов возбуждения. Построение функциональной схемы управляющего автомата. Способы выполнения операции умножения с фиксированной и с плавающей запятой. Получение функциональной ГСА. Кодирование состояния автомата.
курсовая работа [60,9 K], добавлен 15.02.2011Принцип микропрограммного управления. Управляющие автоматы с жесткой и программируемой логикой. Граф-схемы алгоритмов. Синтез управляющего автомата по граф-схеме алгоритма. Построение управляющего автомата с программируемой логикой на основе ПЗУ.
курсовая работа [263,8 K], добавлен 25.01.2011Синтез цифрового автомата с комбинационной частью на логических элементах. Реализация спроектированного автомата в виде иерархического блока со схемой замещения на библиотечных компонентах в режиме SPICE–проектов. Разработка абстрактных символов.
курсовая работа [831,2 K], добавлен 23.09.2013Функциональная и структурная организация ЭВМ. Разработка функциональных микропрограмм заданных команд. Их объединение и привязка к структуре операционного автомата процессора. Разработка управляющего автомата процессора с программируемой логикой.
дипломная работа [4,0 M], добавлен 25.03.2012Проектирование цифрового автомата для выполнения арифметической операции деления двоичных чисел, алгоритм работы. Числа с плавающей запятой. Типы элементов памяти управляющего автомата JK-триггер, не имеющего запрещенных состояний на основных входах.
курсовая работа [747,4 K], добавлен 25.03.2012Синтез автомата для преобразования двоично-десятичного кода. Кодировка алфавитов и состояний. Построение булевых функций, минимизация. Разметка вход-выходных слов для автомата Мили и автомата Мура. Реализация на элементах малой степени интеграции.
контрольная работа [141,5 K], добавлен 14.10.2012Методика минимизации абстрактного автомата. Порядок построения графа полученного минимизированного автомата. Синтез на элементах ИЛИ-НЕ и Т-тригерах. Составление таблицы переходов. Разработка микропрограммного автомата, реализующего микропрограмму.
курсовая работа [997,7 K], добавлен 28.03.2011