Методические указания (775196), страница 5
Текст из файла (страница 5)
3. Каково отображение кода А в код В ? Для решения задачи необходимо установить однозначное соответствие между кодом В и кодом А. Это соответствие определяется многими факторами: удобством оценки, необходимостью передачи на уровне помех, требованиями использования кодов для обнаружения и исправления ошибок, удобством индикации и многими другими факторами.
Прежде всего определим разрядность выходного кода. Выходной код В{1:k} (двоичный позиционный код) по заданию равен числу единичных символов кода А{1:32}. Легко заметить, что максимальное число "единиц", равное 32, потребует формирования шестиразрядного выходного кода B{1:6}, так как (32)10 = (100000)2 что потребует 6-ти разрядной выходной шины.
Итак, задание на проектирование может быть выражено в виде функциональной схемы и эпюр напряжения, изображенных на рис. 2.1. Входные данные приходящие по шине A{1:32} сопровождаются управляющим сигналом СТРОБ (передний фронт сигнала СТРОБ совпадает с установившимся сигналом на шине A). Выходные данные В{1:6} формируемые устройством сопровождаются управляющим сигналом УСЧИТ (передний фронт сигнала УСЧИТ совпадает с установившимся сигналом на шине B), что бы последующие устройства знали в какой момент времени необходимо считать результат работы нашего устройства. Считывание данных происходит по переднему фронту управляющих сигналов.
Примем, что в разрабатываемом устройстве не требуется введения внутренней индикации, и не будем пока накладывать никаких ограничений на потребляемую устройством мощность и, следовательно, на выбор оптимальной элементной базы. Эти вопросы могут быть решены при дальнейшей работе над заданием.
2.2. РЕГИСТРОВАЯ РЕАЛИЗАЦИЯ УСТРОЙСТВА
В основу построения регистрового варианта устройства положим идею преобразования параллельного кода в последовательный с последующим счетом числа единичных символов. Такое преобразование должно начинаться с момента прихода входного кода и сигнала СТРОБ и заканчиваться моментом окончания счета единичных символов с генерацией импульса считывания. Таким образом, задача преобразования распадается на две подзадачи: преобразование параллельного кода в последовательный и получение выходного кода с формированием УСЧИТ.
Первая подзадача решается двумя путями: первый состоит в использовании мультиплексора, второй - сдвигового регистра. Первый вариант требует фиксации входного кода на все время преобразования. Второй вариант является более универсальным. Для его реализации достаточно выставить входной код А{1:32} на время сигнала СТРОБ. В учебном пособии рассмотрим только второй вариант, хотя первый вариант также представляет интерес и может быть проработан в курсовой работе как альтернативный вариант.
Вторую подзадачу - формирование выходного кода - можно решить путем подсчета количества единичных бит проходящих через выходной разряд регистра. Окончанием анализа может быть либо проход по всем 32-м разрядам, либо очищение регистра от единичных символов в процессе сдвига. Первый вариант потребует установки дополнительного счетчика циклов, второй вариант - введения схемы анализа содержимого регистра на нулевое значение. При несколько больших затратах второй вариант обеспечивает в среднем более быстрое преобразование, поскольку последние нули кода преобразованию не подвергаются. Примем второй вариант определения конца преобразования в качестве рабочего, тогда, естественно, применение сдвигового регистра становится обязательным.
2.3.1. Разработка схемы алгоритма и составление операционного описания
Можно предложить следующий алгоритм формирования выходного кода:
-
Конечное число единичных разрядов принимается за ноль.
-
Слева направо в коде А подсчитывается число единичных разрядов.
-
Если в коде А еще имеются единичные разряды, повторяется пункт 2; в противном случае процедура заканчивается.
Примем, что входной код А{1:32} записывается в сдвигающий регистр РГД{1:32}, который обеспечивает просмотр всех разрядов кода А, начиная с первого А{1}. Это организуется засылкой в разряд РГД{1} значений разрядов РГД{2}, РГД{3} и т.д. путем сдвига кода регистра на один разряд влево. Будем подсчитывать число единичных разрядов в счетчике единиц СЧЕ{1:6}. Формировать выходной код будем прямо из счетчика СЧЕ{1:6}.
Работу устройства организуем следующим образом. В начале ожидаем прихода управляющего сигнала СТРОБ, как только СТРОБ пришел - обнулим содержимое счетчика единиц и запишем входной код А в регистр РГД. В случае если РГД=0 завершаем процесс анализа. Проанализируем значение первого разряда регистра РГД (РГД{1}). Если он равен единице, то произведем счет единиц и подготовим устройство к работе в следующем цикле - сдвинем содержимое регистра РГД влево на один разряд с записью в освободившийся разряд нуля. Проверим, не равен ли РГД нулю. Если РГД равен нулю, то закончим процесс, если нет - продолжим его для следующего разряда входного кода.
Завершение работы устройства связано с просмотром всех установленных (в 1) разрядов входного кода, что определяется появлением признака РГД = 0.
Схема алгоритма преобразования по выбранному варианту изображена на рис. 2.4.
Предложенный алгоритм может быть трансформирован в алгоритм функционирования операционного устройства, если его шаги будут выражены в терминах работы операционных элементов. Операционное описание синтезируемого устройства представлено на рис. 2.5.
В теле процедуры микропрограммы у переменных РГД и СЧЕ опущено поле разрядности. В этом случае его значение берется из раздела описания переменных микропрограммы. Под воздействием сигнала УСЧИТ не выполняется никакой операции. Этот факт отображается записью символа ";" вслед за символом ":", что равносильно введению пустой микрооперации.
Анализ микропрограммы показывает, что сигналы УЗАП и УН эквивалентны и их можно заменить одним сигналом УЗП: УЗП = УЗАП = УН. Проверку на ноль содержимого регистра РГД можно осуществить с помощью операции ИЛИ-НЕ (стрелка Пирса):
Текст микропрограммы, учитывающий вышесказанное, представлен на рис. 2.6.
Микропрограмма ЧИСЛО_ЕДИНИЦ; | Микропрограмма ЧИСЛО_ЕДИНИЦ; | |
Переменные | Переменные | |
входные: А{1:32}, СТРОБ; | входные: А{1:32}, СТРОБ; | |
внутренние: РГД{1:32}, СЧЕ{1:6}; | внутренние: РГД{1:32}, СЧЕ{1:6}; | |
выходные: B{1:6} = CЧЕ{1:6}, УСЧИТ; | выходные: В{1:6} = СЧЕ{1:6}, УСЧИТ; | |
Признаки: | Признака: | |
P1 = СТРОБ; | Р1 = СТРОБ; | |
Р2 = РГД{1:32} = 0; | Р2 = ↓РГД{1:32}; | |
Р3 = РГД{1}; | Р3 = РГД{1}; | |
Процедура | Процедура | |
M1 если ùP1, то M1; | М1 если ùP1, то M1; | |
УЗАП: РГД = А; | УЗП: РГД = А, СЧЕ = 0; | |
УН: СЧЕ = 0; | М2 если Р2, то М4; | |
М2 если Р2, то М4; | если ùР3, то М3; | |
если ùP3, то М3; | УСЧ: СЧЕ = СЧЕ + 1; | |
УСЧ: СЧЕ = СЧЕ + 1; | М3 УСДВ: РГД = РГД{2:32}.0; | |
М3 УСДВ: РГД = РГД{2:32}.0; | идти к М2; | |
идти к М2; | М4 УСЧИТ: ; | |
М4 УСЧИТ: ; | конец. | |
конец. | ||
Рис. 2.5. Микропрограмма 1. | Рис. 2.6. Микропрограмма 2. |
2.3.2. Разработка функциональной схемы устройства
Функциональная схема операционного автомата(ОА), составленная в соответствии с микропрограммой 2, изображена на рис. 2.7.
Задачи, решаемые управляющим автоматом, достаточно просты: он генерирует управляющие сигналы сдвига УСДВ до момента появления признака обнуления Р2, после чего формирует импульс считывания УСЧИТ. УА может быть построен как c жесткой логикой, так и с программируемой логикой. Рассмотрим оба способа реализации.
Управляющий автомат с жесткой логикой
УА с жесткой логикой реализуется либо в виде классического конечного автомата, либо в виде распределителя импульсов. Конечный автомат может быть построен и как автомат Мура, и как автомат Мили. Построение графов переходов и выходов УА осуществляется на основании отмеченных граф-схем алгоритмов [17]. На рис. 2.8 построены граф-схемы алгоритмов для автоматов Мура (а) и Мили (б), соответствующие микропрограмме 2 на рис.2.6 и учитывающие тот факт, что сигналы УСЧ и УСДВ являются совместными. Метки ai, отображаются в состояния автоматов, условия P1, Р2, Р3 определяют значения входных сигналов, а управляющие сигналы - значения выходных сигналов автоматов.
Графы переходов для автоматов Мура и Мили, полученные из граф-схем алгоритмов, изображены на рис. 2.9, а и б.
Сравнение графов автомата Мура и Мили позволяют сделать вывод о целесообразности построения управляющего устройства как автомата Мили, поскольку последний имеет всего два внутренних состояния и реализуется на одном триггере. В качестве последнего возьмем Д-триггер.
Осуществляем построение таблицы переходов и выходов на основании выбранного графа переходов (автомата Мили) – таблица 3.
Воспользуемся таблицей кодирования внутренних состояний автомата
и построим кодированную таблицу переходов и выходов:
На основании кодированной таблицы переходов и выходов УА (табл. 5) получим функцию возбуждения D триггера (расписываются все переходы в состояние 1) и выражения для управляющих сигналов:
D = P1 ∙ Q + P2 ∙ P3 ∙ Q + P2 ∙ P3 ∙ Q = P1 ∙ Q + P2 ∙ Q,
У
ЗП = P1 ∙ Q,