Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Пример проектирования УАЖЛ
Рассмотрим пример построения управляющего автомата Мура для устройства, реализующего операцию деления. Операционный автомат (см. рис. 4.4) и ГСА микропрограммы (см. рис. 4.5) этого устройства были построены ранее. Шаг 1. Выполним разметку микропрограммы. Для этого сопоставим каждой операторной вершине ГСА в произвольном порядке (например, слева направо и сверху вниз) символ состояния автомата из множества { a2, a3, …., a14}. Начальную и конечную вершины сопоставим с начальным состоянием автомата a1. Такая разметка показана на рис. 4.5. Шаг 2. Построим граф автомата, заданного размеченной микропрограммой, которую получили на предыдущем шаге. Для этого вершины графа сопоставим с состояниями автомата a2, a3, …., a14. Соединим ориентированными ребрами те пары вершин графа, между которыми на ГСА микропро- граммы существуют переходы, причем пометим ребра графа соответствующими условиями перехода. Если переход между двумя операторными вершинами микропрограммы осуществляется безусловно, то условие перехода на ребре графа — константа 1. Построив таким образом граф, мы фактически задаем алфавиты внутренних состояний и входных символов и определяем функцию переходов. Для задания алфавита выходных символов и функции выходов (для автомата Мура функция выходов зависит только от его состояний) следует сопоставить каждой вершине автомата в качестве выходного символа содержимое соответствующей операторной вершины ГСА микропрограммы. Таким образом, получим граф микропрограммного автомата, который приведен на рис. 4.6. Шаг 3. Кодирование алфавитов входных и выходных символов автомата двоичными кодами. Алфавит входных символов составляет множество двоичных переменных X = {xl, х2, x3}, поэтому проблема кодирования входных символов двоичными переменными здесь не стоит. Что касается кодирования символов выходного алфавита, то отложим обсуждение этого вопроса до шага 8. Шаг 4. В процессе кодирования внутренних состояний автомата могут решаться проблемы исключения гонок в автомате, проблемы минимизации комбинационной схемы, обеспечивающей функцию переходов автомата. Для решения этих задач разработаны достаточно сложные алгоритмы, которые описаны в литературе, например, [2, 5]. Здесь мы не будем касаться этой стороны процедуры синтеза автомата. Следует отметить, что проблемы гонок могут быть полностью решены при использовании в автомате двухтактных элементов памяти, причем способ кодирования состояний в этом случае роли не играет. Правда, затраты оборудования при таком решении несколько возрастают, по сравнению с использованием метода противогоночного кодирования, но во-первых, эффективность метода заметно проявится лишь при достаточно большом числе состояний автомата (25—40), а во-вторых, большинство современных интегральных элементов памяти (триггеров) выпускаются именно двухтактными. Применение специальных методов кодирования " с учетом сложности комбинационных схем" [2] так же обеспечивает заметный эффект лишь для достаточно громоздких автоматов. В нашем примере воспользуемся простейшим методом кодирования состояний автомата, когда код состояния совпадает с двоичным числом, соответствующим номеру состояния. В рассматриваемом автомате насчитывается 14 состояний (см. рис. 4.6), поэтому для их кодирования требуется четырехразрядный двоичный код (24 > 14; 23< 14) — табл. 4.2. Шаг 5. Выбор элемента памяти (типа триггера). При выборе элемента памяти следует учитывать простоту управления им. С этой точки зрения удобнее выбирать триггеры, управляемые по единственному информационному входу — к таким относятся D- и Т-триггеры. В нашем примере в качестве элемента памяти автомата выберем синхронный двухтактный D-триггер. Очевидно, для реализации нашего автомата понадобятся четыре D-триггера. Шаг 6. Построение автоматной таблицы переходов (табл. 4.3). Эта таблица практически описывает функцию переходов автомата, строится по графу автомата и определяет, какие значения необходимо подать на управляющие входы триггеров на каждом переходе автомата в новое состояние. Строка таблицы соответствует одному переходу автомата. Таким образом, автоматная таблица содержит столько строк, сколько ребер в графе автомата (включая и петли, если они имеются в графе).
Шаг 7. Синтез комбинационной схемы, реализующей функцию переходов автомата. Эта комбинационная схема в нашем случае реализует четыре булевы функции D1, D2, D3, D4, зависящие от четырехразрядного двоичного кода состояния автомата Т1Т2Т3Т4 и трехбитного вектора входных символов x1 x2 x3 Комбинационная схема, описываемая системой четырех булевых функций от семи переменных, должна обеспечивать переходы автомата в соответствии с графом рис. 4.6. Для построения этой схемы можно построить четыре карты Карно для D1, D2, D3, D4, пo таблицам истинности, заданным соответствующими столбцами автоматной таблицы переходов, и минимизировать эти функции. Менее трудоемкий способ состоит в предварительной дешифрации состояний автомата (булевы функции четырех переменных) и записи функций возбуждения через значения аi и xk. Воспользуемся последним способом, тем более, что дешифрированные состояния автомата пригодятся нам и на следующем шаге при формировании функции выходов. Итак, предусмотрим дешифратор, на входы которого поступает двоичный код состояния автомата , а на выходах формируется унитарный код . Кстати, поскольку на входах дешифратора не могут появиться комбинации 0000 и 1111 (их мы не использовали при кодировании состояний), то схему дешифратора можно минимизировать. (Как? Попробуйте построить такой дешифратор самостоятельно.) Рассмотрим столбец Dl автоматной таблицы переходов, отметив те наборы входных переменных функции возбуждения (из {а} и {x}), на которых Dl принимает единичные значения. Можно записать: Обратите внимание, что функция Dl не зависит от входных переменных {х} (частный случай!). Действительно, переход, например, из состояния а9 в зависимости от значения х2 может произойти в а10 или в а11, но в обоих этих состояниях значение старшего разряда кодов одинаково. То же для Dl можно сказать и обо всех остальных переходах, зависящих от входных символов a1, a5, …., a12 Теперь запишем булевы выражения для остальных функций возбуждения. Шаг 8. Синтез комбинационной схемы, реализующей функцию выходов. Функция выходов автомата Мура зависит только от его внутреннего состояния и задана непосредственно на графе автомата (см. рис. 4.6). Выходами микропрограммного автомата являются микрооперации, поступающие в точки управления операционного автомата. Поэтому выходные символы микропрограммного автомата обычно не кодируют, а формируют на выходе значение вектора микроопераций. При большом числе микроопераций с целью уменьшения связности между ОА и УА на вход ОА передают не вектор микроопераций, а номер активной в данном такте микрооперации. Подробнее об этом — в следующем разделе. Из графа автомата (см. рис. 4.6) видно, что микрооперация у1 должна вырабатываться автоматом, когда он находится в состоянии а2, микрооперация y2 — в состоянии a3 и т.д. Микрооперация у5 должна вырабатываться автоматом, находящимся в состоянии а5 и а10. Запишем функцию выходов автомата в виде системы булевых функций (Напомним, что переменные а1, а2,..., а14 являются булевыми, принимающими единичное значение, когда автомат находится в соответствующем состоянии, и нулевое значение — во всех остальных случаях) Шаг 9. Теперь изобразим функциональную схему управляющего автомата, используя выражения (4.2)—(4.6) с учетом выбранного типа элемента памяти. Управляющий микропрограммный автомат с жесткой логикой (автомат Мура), изображенный на рис. 4.7, имеет три двоичных входа xl, х2, х3, вход тактового сигнала CLK и семнадцать двоичных выходов — микрооперации yl, y2, …..., y17. Память автомата представлена четырьмя двухтактными синхронными D-триггерами, объединенными общей цепью синхронизации (CLK). Выходы триггеров поступают на вход дешифратора DC " 4 à 16", на выходах которого формируется унитарный код текущего состояния автомата. Поскольку проектируемый автомат является автоматом Мура, выходы дешифратора фактически являются выходами управляющего автомата (значениями микроопераций). Исключение составляет микрооперация у5, которая формируется как дизъюнкция двух различных состоянии автомата, поскольку эта микрооперация присутствует в двух различных операторных вершинах исходной микропрограммы (см. рис. 4.5). Функции возбуждения триггеров формируют значения Di, i {l, 2, 3, 4} на выходах одно- или двухуровневых схем, построенных согласно выражениям (4.2)—(4.5). Обратите внимание, что в выражениях (4.3) и (4.5) имеется одинаковый терм — al2х3. На функциональной схеме выход конъюнктора, реализующего этот терм, поступает на два входа различных дизъюнкторов, " обеспечивая" одновременно две функции возбуждения — D2 и D4. Схемы, реализующие функции возбуждения, можно построить иначе. Для примера рассмотрим выражение (4.4). Состояния автомата, входящие в это выражение, если выразить их через значения состояний триггеров, окажутся соседними и склеиваются. Действительно: Очевидно, схема, реализованная по выражению (4. 7), будет проще, чем схема (4.4). Проверьте, можно ли подобным образом минимизировать выражения остальных функций возбуждения. Итак, мы построили микропрограммный автомат с " жесткой" логикой. Давайте представим, что нам понадобилось незначительно изменить исходную микропрограмму, например, добавить еще одну операторную вершину. Практически это приведет к необходимости полного перепроектирования всей схемы автомата. Это особенность автоматов с " жесткой" логикой является их серьезным недостатком. Для того чтобы уменьшить зависимость структуры автомата от реализуемых им микропрограмм, используют управляющие автоматы с программируемой логикой.
|