Главная страница

Цук. 118 компоненты и технологии 2 '2010 проектирование моделирование работы


Скачать 0.68 Mb.
Название118 компоненты и технологии 2 '2010 проектирование моделирование работы
Дата07.10.2022
Размер0.68 Mb.
Формат файлаpdf
Имя файлаactive-hdl-2010_02_118.pdf
ТипДокументы
#719932

118
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 2 '2010
проектирование
моделирование работы
Александр ШАлАгинов
shalag@vt.cs.nstu.ru
Г
лавное достоинство графического представления проекта — его нагляд- ность, удобство восприятия человеком.
Но для компьютера — это лишнее звено в маршруте проектирования: схему все равно приходится конвертировать в текстовый фор- мат, например в
VHDL- или Verilog-код.
Заметим, что наглядность графического изображения проявляет себя в полной мере только для простых проектов. Когда же описание превращается в толстый «Альбом схем» с многочисленными межстраничными ссылками, даже разработчики старой закалки теряют энтузиазм.
Конечно, схема в какой-то мере защи- щает пользователя от необходимости изу- чать языки описания аппаратуры (Hardware
Description Language,
HDL). Но противиться новым технологиям автоматизированного проектирования просто неразумно. Время, когда можно было вручную нарисовать при- нципиальную схему или составить карту прошивки, безвозвратно уходит.
Сказанное ни в коей мере не означает, что данный урок можно пропустить. Вероят- нее всего, правильное решение, как всегда, лежит посередине: нужно овладеть всеми возможными инструментами описания ап- паратуры и использовать их совместно.
Например, поведенческое (языковое) опи- сание компонентов нижнего уровня удачно сочетается с графическим представлением структуры проекта на верхнем уровне.
Знакомство с редактором
State Diagram Editor
Со схемным редактором
Block Diagram
Editor мы познакомились на седьмом и вось- мом уроках. Теперь нам предстоит встреча еще с одним графическим редактором —
State Diagram Editor (SDE). Он предназначен для создания диаграмм состояний цифровых автоматов.
Запустим
Active-HDL 7.1 и создадим в ра- бочем пространстве
Lessons новый рабочий проект
Lesson_12. Активизируем закладку
Design Flow (рис. 1) и щелкнем мышкой по иконке
FSM (аббревиатура от слов Finite
State Machine — «конечный автомат»).
Появится «старый знакомый» — «мастер»
New Source File Wizard. Но теперь он наме- рен создать
asf-файл, содержимым которого будет диаграмма состояний автомата.
Следуя указаниям «мастера», выполним все, что он от нас потребует: укажем язык проектирования
VHDL, имя файла, напри- мер
T_trigger («счетный триггер»), и зададим внешние сигналы (порты):
R
• — асинхронный сброс;
C
• — счетный вход;
Q
• — прямой выход;
NQ

— инверсный выход.
На вопрос «Хотите ли вы добавить такто- вый вход с именем
‘CLK’?» ответим «Нет».
Получив нужную информацию, «мастер» за- кончит свою работу и передаст управление редактору диаграмм (
State Diagram Editor).
В основном окне среды проектирования
Active-HDL 7.1 появится новая закладка с име- нем открытого файла —
T_trigger.asf (рис. 2).
Нам предстоит построить элементар- ный автомат, описывающий работу счет- ного триггера. Это синхронный автомат, и «мастер» неспроста предлагал добавить тактовый вход. Но мы отказались, потому что роль тактового входа будет играть счет- ный вход
C. Двойным щелчком по графи- ческому обозначению порта откроем диа- логовую панель
Port Properties («свойства
не секрет, что графические методы описания цифровой аппаратуры ус-
тупают текстовым по многим показателям и постепенно сдают им свои
позиции. однако, несмотря на это, они остаются непременным атрибутом
современных САПР.
изучаем Active-HDL 7.1.
Урок 12. Проектирование цифровых автоматов
Продолжение. Начало в № 3`2009
Рис. 1. Фрагмент закладки менеджера маршрута проектирования Design Flow
Рис. 2. В редактор State Diagram Editor загружен файл T_trigger.asf

119
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 2 '2010
www.kite.ru
проектирование
моделирование работы порта») и установим флажок
Clock («такто- вый импульс»). Сигнал
C получит статус так- тового входа, о чем говорят изменения в его обозначении .
Если вы забудете проделать эту операцию, то при компиляции проекта в окне
Console получите сообщение об отсутствии тактового сигнала для автомата
Sreg0 (Missing CLOCK
signal for the Sreg0 machine). Кстати, задан- ное по умолчанию имя автомата
Sreg0 всегда можно изменить (например, на
T_trigger), щелкнув по нему правой кнопкой мыши и вы- брав в контекстном меню команду
Properties.
Как видно, у нас есть два способа изменять свойства объекта:
напрямую — дважды щелкнув на редакти-
• руемом объекте;
косвенно — вызвав сначала контекстное
• меню, а затем активизировав команду
Properties.
Первый способ немного быстрее, второй дает большие возможности.
Для создания и редактирования диаграмм состояний цифровых автоматов нам потре- буются специальные инструменты. Их можно найти в выпадающем меню
FSM, которое по- является только в том случае, когда активна закладка редактора диаграмм
SDE. Меню со- держит полный набор возможных операций.
Однако удобнее пользоваться пиктограм- мами инструментальных панелей. В редакто- ре
SDE их три:
FSM VHDL (или Verilog) Diagram Toolbar

;
FSM Edit Toolbar

;
FSM Hierarchy Toolbar

Сейчас нас интересует первая панель, пред- назначенная для рисования диаграмм состоя- ний конечного автомата (рис. 3).
Фундаментальными понятиями в теории автоматов являются два объекта: состояние
(
State) и переход (Transition). Они-то и по- надобятся нам в первую очередь. Нажмем на пиктограмму
State и поместим в ра- бочей области диаграммы (она выделена сплошной рамкой) два состояния —
S1 и S2.
Затем с помощью кнопки
Transition соеди- ним их переходами (рис. 4).
Если вы хотите сразу увидеть дугу, а не прямую линию, поставьте на предпола- гаемой траектории хотя бы одну промежу- точную точку. И наоборот, дугу всегда мож- но выпрямить командой
Straight Transition
(«прямой переход») из контекстного меню.
В принципе наш проект уже можно моде- лировать. Откомпилируем файл
T_trigger.asf
(пиктограмма или горячая клавиша
F11), убедимся, что в окне
Console нет ошибок
(
Compile success 0 Errors 0 Warnings), и вы- полним пробный модельный эксперимент
(рис. 5). Обратите внимание, триггер изме- няет свое состояние на каждом периоде так- тового сигнала
C, то есть так, как и должен работать Т-триггер.
Но почему работа началась с состояния
S1, а переходы происходят на фронтах сигнала
C?
Возможно, вы уже знаете ответ. Состояние
S1 на диаграмме появилось первым. И если посмотреть
VHDL-код (файл T_trigger.vhd), автоматически сгенерированный при компи- ляции проекта, то мы увидим строку:
type T_trigger_type is (S1, S2);
В объявленном перечислимом типе значе- ние
S1 занимает левую позицию, а по умол- чанию именно эта позиция использует- ся при инициализации моделирования.
Поменяйте местами имена состояний
S1 и S2 и вы увидите, что автомат начинает работу с состояния
S2 (после эксперимента восста- новите все, как было).
Чтобы гарантировать старт с любого жела- емого состояния, в редакторе
SDE есть специ- альный символ
Reset (рис. 3). Сброс (ина- че — установка исходного состояния) может привязываться к тактовому сигналу и л и в ы п ол н я т ь с я а с и н х р о н н о
По внешнему виду их легко отличить.
Добавим объект
Reset в наш проект, подведя переход к состоянию
S2. По умолчанию мы по- лучили синхронный сброс. Щелкнем по значку правой кнопкой и установим переключатель в положение
Asynchronous (
).
Зададим условие, при выполнении кото- рого будет происходить сброс, то есть вы- полняться переход в исходное состояние
S2.
Мы уже знаем, что на панели инструментов
(рис. 3) для этих целей имеется подходящий значок
Condition («условие») .
Активизируем данную операцию, подве- дем небольшой прямоугольник , привязан- ный к курсору мыши, так, чтобы он пересе- кал дугу перехода , и снова щелкнем левой кнопкой мыши.
Откроется небольшое окно, в которое введем желаемое условие перехода, напри- мер
R=’1’. Написанное условие означает, что в момент времени, когда сигнал сброса
R примет уровень «логической единицы», авто- мат должен перейти в
S2, каким бы ни было его текущее состояние.
Повторим модельный эксперимент с но- вой версией автомата (рис. 6).
Прежде всего, отметим, что сброс действи- тельно выполняется асинхронно и перево- дит автомат в состояние
S2 (момент време- ни 20 нс). На третьем такте (250 нс) автомат должен был перейти в состояние
S1, но ему
«помешал» сигнал сброса, имеющий более высокий приоритет.
Чтобы «заставить» Т-триггер реагировать на срез (
Falling) тактового сигнала C, надо
Рис. 3. Инструментальная панель SDE-редактора для проектирования диаграмм состояний цифровых автоматов
Рис. 4. Элементарный автомат Т-триггера
Рис. 5. Результаты моделирования «полуфабриката» Т-триггера
Рис. 6. Сигнал сброса R исправно выполняет свои функции

120
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 2 '2010
проектирование
моделирование работы щелкнуть мышью на свободной области ав- томата (внутри прямоугольной рамки), вы- брать в контекстном меню опцию
Properties и в разделе
Clock диалоговой панели Machine
Properties («свойства автомата») установить переключатель в положение
Falling.
Раз уж мы оказались на панели
Machine
Properties, то проделаем еще одну вещь: в разделе
Encoding («кодирование») заме- ним символическое кодирование (
Symbolic) на альтернативное значение
Encoded и выбе- рем двоичное кодирование состояний авто- мата (
Binary/sequential), как самое эконом- ное (рис. 7).
Строго говоря, эта информация исполь- зуется для последующего синтеза автомата, и нам она пока что не нужна. Однако заданное по умолчанию инструментальное средство синтеза
Synopsys FPGA Express не поддержи- вает атрибут
ENUM_ENCODING в режиме символического кодирования. Поэтому каж- дый раз при генерации
VHDL-кода появля- ется неприятное предупреждение
(Warning):
Attribute ENUM_ENCODING is not supported
for Symbolic encoding. Больше вы его не уви- дите, а вот под именем каждого состояния появится его двоичный кодовый эквивалент:
/0/ и /1/.
Однако мы отвлеклись. Выходные сиг- налы
Q и NQ до сих пор не определены.
Присвоение (назначение) им конкретных значений называется действием. На панели инструментов (рис. 3) для этих целей имеют- ся две пиктограммы: —
State Action («дейс- твие в состоянии») и —
Transition Action
(«действие на переходе»). Но какую выбрать?
Оказывается, все просто: первая иконка ис- пользуется для автоматов Мура, вторая — для автоматов Мили.
В схемотехнике преобладают автоматы
Мура, и наш триггер не является исключением.
В автоматах Мура выходные сигналы зависят только от его текущего состояния и не могут измениться, если состояние остается прежним.
Значит, действие следует «вложить» в состояние.
Нажмем на кнопку
State Action, на кур- соре мыши «повиснет» специальный значок
, левым краем которого надо указать на ре- дактируемое состояние. Особенно целиться не имеет смысла: действие в любом случае ока- жется привязанным к правой крайней точке кружка, изображающего состояние. Подведем курсор к состоянию
S1 и зафиксируем пози- цию левой кнопкой мыши. В появившееся окно введем текст:
Q<=’0’; NQ<=’1’; и сно- ва щелкнем мышью на свободной области.
Напомним, что символ
<= в языке VHDL на- зывается назначением (
assignment) или при- своением сигналу конкретного значения.
Другой способ, на наш взгляд, более удоб- ный, задает действия с помощью диалоговой панели
State Properties. Мы уже знаем, что па- нель свойств любого элемента диаграммы вы- зывается двойным щелчком левой кнопкой мыши или одинарным правой с последую- щим выполнением команды
Properties.
Зададим действия для состояния
S2.
Дважды щелкнем на нем, активизируем за- кладку Actions и в среднее поле State введем нужный текст:
Q<=’1’; NQ<=’0’;. Обратите внимание, действия можно задавать не толь- ко в состоянии, но и на входе (
Entry Action) и выходе (
Exit Action) из него.
Законченный проект будет выглядеть так, как показано на рис. 8 (сброс перенесен в со- стояние
S1), и функционировать он должен в соответствии с рис. 9.
Вам не нравится, что первый сброс не про- извел никакого действия? Тогда выполните в выпадающем меню
FSM команду View/Sort
Objects и на закладке State отбуксируйте состо- яние
S2 на первую позицию. Теперь перечис- лимый тип будет начинаться с состояния
S2:
type T_trigger_type is (S2, S1);
По умолчанию оно и будет приниматься за исходное. При этом двоичные коды состо- яний тоже изменятся на противоположные, но не ранее, чем вы выполните повторную компиляцию.
Построение асинхронных
цифровых автоматов
Графический редактор
SDE позволяет строить не только синхронные, но и асинх- ронные автоматы. Мы рассмотрим эту воз- можность на простейшем
RS-триггере, часто называемом защелкой (
latch).
Создадим новый
asf-файл в том же самом рабочем проекте
Lesson_12. Назовем его test_
RS_latch. Введем входные S, R и выходные Q,
NQ порты.
На диалоговой панели
Machine Properties
в разделе
Machine установим переключатель в положение
Asynchronous («асинхронный») и в поле
Propagation Delay («задержка рас- пространения») введем абстрактное, но близ- кое к реальному значение задержки, напри- мер 10 нс. Заменим предлагаемое по умолча- нию имя автомата
Sreg0 на RS_latch.
Нарисуем диаграмму состояний, как пока- зано на рис. 10.
S1 и S2 — это рабочие состо- яния триггера. Состояние
Ban («запрет») до- бавлено в диаграмму для того, чтобы «отлав- ливать» запрещенную комбинацию входных сигналов:
S=’1’ и R=’1’. Обратите внимание на косую штриховку символа. В редакторе
SDE таким способом помечается особое со- стояние, называемое состоянием по умолча- нию (
Default State).
Автомат переходит в состояние по умол- чанию во всех случаях, когда ни одно из ус- ловий, назначенных на выходящие из теку- щего состояния переходы, не выполняется.
В нашем примере таким способом имитиру- ется реакция автомата на запрещенный на- бор сигналов:
S=’1’ и R=’1’.
Чтобы состояние получило статус
Default
State, дважды щелкните на нем левой кноп- кой мыши и установите флажок
Default на закладке
General.
Состояние по умолчанию особенно полез- но при отладке цифровых автоматов, когда у вас остаются сомнения относительно пол- ноты его переходов.
Обратите внимание еще на одну вещь.
Символ
Reset , используемый в синхрон-
Рис. 7. Выбор значения Encoded в панели Encoding
Рис. 8. Цифровой автомат, реализующий функцию Т-триггера
Рис. 9. Результаты моделирования элементарного автомата
Рис. 10. Цифровой автомат асинхронного RS триггера-защелки

121
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 2 '2010
www.kite.ru
проектирование
моделирование работы ных автоматах, заменен здесь другим объ- ектом , который называется индикатором инициализированного состояния (
Initial
State Indicator). Назначение у него пре- жнее — указать начальное состояние, в ко- торое автомат должен перейти в момент его инициализации.
Но есть и разница. В синхронных автома- тах вы можете многократно возвращать схе- му в исходное состояние на интервале одного модельного эксперимента. В асинхронных автоматах такой возможности нет. Поэтому на дуге, соединяющей индикатор с инициа- лизируемым состоянием, не задается никако- го условия перехода.
Добавим, что
SDE-редактор автоматически заменяет символ
Reset на символ Initial State
Indicator , как только вы захотите сменить тип синхронного автомата на асинхронный.
При этом будет удалено и потеряно условие перехода к инициализируемому состоянию.
Кроме того, если в синхронных автоматах разрешено использовать несколько символов
Reset, то в асинхронных — всего один инди- катор. Как только вы разместите на чертеже первую копию индикатора, его пиктограмма на панели инструментов (рис. 3) станет недо- ступной для использования.
Не стоит забывать еще про одну особен- ность асинхронных автоматов. Дело в том, что в режиме
One Process («один процесс»), ко- торый установлен по умолчанию, программа конвертации не может сгенерировать шаблон для асинхронного автомата, и в окне
Console будет выдано соответствующее сообщение:
Cannot generate code for asynchronous machine in 1 process template.
Please choose 2/3 process template.
Поэтому лучше сразу открыть выпадаю- щее меню
FSM и выполнить команду Code
Generation Setting («установка генерации кода»). В разделе
HDL-style надо поставить переключатель в положение
Two Processes
(«два процесса») или
Three Processes («три процесса»).
Результаты моделирования
RS триггера- защелки показаны на рис. 11. В момент вре- мени 250 нс на триггер поступает запрещен- ный набор сигналов, и автомат переходит в состояние
Ban, информируя разработчика проекта о некорректном наборе входных сиг- налов.
Конечно, модель можно улучшить, до- бавив в нее запрещенное состояние и дру- гие аномальные состояния триггера (мета- стабильные и колебательные). Но стоит ли овчинка выделки? Проще убедиться, что схе- ма не попадает в такие состояния.
Асинхронные автоматы вполне годятся и для описания поведения комбинационных схем. Возможно, этот тезис звучит странно, ведь комбинационная схема не является ав- томатом с памятью, а ее выходные сигналы не зависят от предыдущего состояния. Тем не менее все работает.
В подтверждение этих слов рассмотрим двухвходовой мультиплексор
mux2, работа- ющий как асинхронный автомат (рис. 12).
Процесс создания цифрового автомата
mux2 мы не станем подробно комментировать, предполагая, что он уже хорошо усвоен.
Мультиплексор может находиться в одном из двух состояний. В состоянии
S1 на выход Y передается сигнал с входа
D0, в состоянии S2 на выход коммутируется сигнал
D1. Переход из одного состояния в другое определяется значением сигнала на селекторном входе
A.
Условие перехода — булевское выражение, например
A=’1’ или A=’0’. Однако вместо явного выражения мы можем использовать конструкцию
@else, которая считается ис- тинной, если никакие другие условия для вы- ходящих из состояния переходов не прини- мают значение
True («истинно»). Другими словами, условие
@else читается как «во всех остальных случаях».
На рис. 13 показан фрагмент сгенериро- ванного по диаграмме состояний
VHDL-кода для мультиплексора
mux2. Конструкция @else представлена в условном операторе
IF пред- ложением
else, выделенным красным цветом.
Рассмотренная конструкция
@else особен- но полезна при проектировании сложных ав- томатов, когда трудно заранее предусмотреть все возможные переходы. Временные диа- граммы, показанные на рис. 14, подтвержда- ют правильность работы мультиплексора.
Мы уже отмечали, что новое состояние ав- томата для комбинационных схем не зависит от предыстории, а это значит, что переход в новое состояние возможен из любого пре- дыдущего состояния.
Возникают опасения, что для сложных схем число переходов окажется настолько боль- шим, что сделает неэффективным автомат- ный способ описания комбинационных схем.
Однако на деле этого не происходит, выруча- ют так называемые глобальные переходы.
На рис. 15 показана диаграмма состояний мультиплексора, имеющего четыре инфор- мационных (
D0, D1, D2, D3) и два селектор- ных (
A0, A1) входа. Но вместо 12 обычных переходов, которыми пришлось бы соеди- нить все возможные сочетания состояний, на рисунке всего 4 глобальных перехода.
Как видно, глобальный переход не име- ет стартового состояния. Предполагается, что он может начинаться «ниоткуда», точнее из любого состояния. Другими словами, если условие перехода выполняется, то происхо- дит переход в указанное им состояние неза- висимо от прежнего состояния автомата.
Рис. 11. Результаты моделирования RS триггера-защелки
Рис. 12. Мультиплексор mux2, описанный в терминах цифрового автомата
Рис. 13. Конструкция @else диаграммы состояний замещается в условном операторе VHDL-кода предложением else
Рис. 14. Результаты моделирования асинхронного цифрового автомата mux2

122
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 2 '2010
проектирование
моделирование работы
Глобальный переход создается так. Сначала вы рисуете обычный переход. Затем щелкаете на нем правой кнопкой мыши и выполняете команду
Global. На исходящем конце перехода появляется жирная точка — признак глобального перехода. Попробуйте отбуксировать ее на какое-нибудь состояние, и, в отличие от обычного перехода,
«соединения» не произойдет.
Результаты работы мультиплексора
mux4 показаны на рис. 16.
Обратите внимание, сигналы с информационных входов
D0…D3 передаются на выход без задержки (момент времени 68 нс), а смена состояний запаздывает на указанную в параметре
Propagation Delay величину в 10 нс (момент времени 260 нс). Поэтому на выход
Y про- никает только часть сигнала с входа
D1.
Способы описания
цифровых автоматов
Создавая диаграммы состояний цифровых автоматов, вы можете использовать несколько стилей описания: низкоуровневое (структур- ное), потоковое и высокоуровневое (поведенческое). Отличаются они уровнем абстракции и числом рабочих состояний.
При низкоуровневом (структурном) описании проект представля- ется взаимосвязанными параллельными автоматами (рис. 17), каж- дый из которых имитирует работу одного или нескольких входящих в систему элементов.
На рис. 17 показана диаграмма состояний трехразрядного двоич- ного счетчика с параллельным переносом. Каждый из трех автоматов фактически описывает работу одного разряда счетчика (триггера и соответствующей логики формирования переносов).
Для всех трех автоматов общими являются сигнал сброса
R и так- тирования
C. Триггер Q1 будет переключаться только в том случае, если младший разряд счетчика
Q0 находится в ‘1’ (см. автомат Sreg1, условие
Q0=’1’).
Для переключения старшего разряда
Q2 должно выполняться аналогичное условие — оба предыдущих разряда установлены в ‘1’:
Q1=’1’ and Q0=’1’.
Обратите внимание, выходы счетчика
Q2…Q0 объявлены дву- направленными (
Inout) . Это сделано по необходимости, чтобы их можно было использовать в булевых выражениях, задающих усло- вия на переходах.
Результаты моделирования счетчика показаны на рис. 18.
Потоковый стиль описания реализуется с помощью одного циф- рового автомата. Отличительным признаком этого стиля является полное соответствие числа состояний реального объекта и его диа- граммы состояний. Например, 2-разрядный двоичный реверсивный счетчик имеет четыре состояния, столько же состояний должно быть и на его диаграмме (рис. 19).
Направление счета задается сигналом
UpDn. При UpDn=’1’ счетчик работает на сложение, и автомат последовательно проходит состоя- ния:
S1–S2–S3–S4 (рис. 20). При UpDn=’0’ счетчик работает в обрат- ном направлении:
S4–S3–S2–S1.
Рис. 15. Глобальные переходы позволяют создавать очень компактные автоматные описания комбинационных схем
Рис. 16. Результаты моделирования мультиплексора mux4
Рис. 17. Диаграмма состояний 3-разрядного двоичного счетчика, представленная тремя взаимосвязанными автоматами
Рис. 18. Результаты моделирования двоичного суммирующего счетчика
Рис. 19. Потоковый стиль описания работы 2-разрядного реверсивного счетчика

123
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 2 '2010
www.kite.ru
проектирование
моделирование работы
Обратите внимание на один новый графический элемент
, с кото- рым мы встречаемся впервые (на рис. 19 он расположен в правом верх- нем углу). Он называется
link («связь») и применяется в тех случаях, ког- да возникают трудности с непосредственным проведением переходов.
В нашем примере при переполнении счетчика автомат должен перейти из состояния
S4 в состояние S1. Чтобы не тянуть длинную дугу через весь рисунок, можно создать короткий переход, закан- чивающийся на объекте
link, заменив заданное по умолчанию имя
StateName на имя состояния S1, которым должен заканчиваться дан- ный переход.
Добавим, что этот механизм работает и при подключении состоя- ний, расположенных на различных иерархических уровнях диаграм- мы. Подробнее об этом мы поговорим позднее.
Потоковый стиль описания неудобен тем, что для схем с боль- шим числом состояний диаграмма получается очень сложной.
Действительно, для 3-разрядного счетчика потребуется уже 8 состоя- ний, для 4-разрядного — 16, для 8-разрядного — 256 состояний.
Этот недостаток отсутствует в поведенческом стиле описания цифрового автомата. Показанная на рис. 21 диаграмма состояний
2-разрядного реверсивного счетчика выполнена именно в таком сти- ле. Она строится на основании логической таблицы, описывающей работу (поведение) проектируемого объекта. Отсюда и название —
«поведенческий стиль описания автомата».
В нашем примере счетчик имеет три режима работы: сброс
Reset, счет вверх
Up и счет вниз Down. На графе переходов автомата им со- ответствуют три состояния с теми же самыми именами.
Исходное состояние счетчика задается асинхронно высоким уровнем на входе
R (R=’1’). Направление счета определяется значени- ем сигнала на входе
UpDn. При UpDn=’1’ счетчик работает на сложе- ние, при
UpDn=’0’ — на вычитание (рис. 22).
Для того чтобы заставить данную реализацию правильно работать, пришлось пойти на определенные уловки. Прежде всего, это касается выходного сигнала
Q. Его нельзя использовать в правых частях выра- жений типа
Q<=Q+’1’ или Q<=Q–“01” (рис. 21). Поэтому пришлось заменить выходной порт
Q на двунаправленный
, что нельзя назвать изящным решением.
Кроме того, потребовалось сделать этот порт регистровым
(
Registered) и использовать команду FSM/Action/Entry («действия на входах») вместо рекомендуемой по умолчанию команды
FSM/
Action/State («действия в состояниях»).
Итак, для получения верного результата потребовались весьма не- очевидные манипуляции. Поэтому в название объекта проекта UpDn_
count_bad включено слово bad («плохой»). И мы не рекомендуем действовать подобным образом.
Способы построения эффективных, компактных и наглядных диаграмм состояний цифровых автоматов будут рассмотрены на следующем уроке. n
Продолжение следует
Рис. 20. Результаты моделирования реверсивного счетчика
Рис. 21. Поведенческий стиль описания цифрового автомата
Рис. 22. Результаты моделирования реверсивного счетчика при использовании поведенческого стиля описания его диаграммы состояний


написать администратору сайта