Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Altera / MAX+PLUS II - AHDL.doc
Скачиваний:
139
Добавлен:
10.12.2013
Размер:
7.02 Mб
Скачать

2.2.4 Использование операторов ветвления

В MAX+PLUS II есть два оператора ветвления: IF…THEN и CASE.

  • При использовании оператора IF сначала вычисляется значение условия и если условие истинно, то выполняются операторы стоящие после THEN, если это условие ложно, то выполняются операторы стоящие после ELSE.

  • Часто возникающая в программировании задача – задача выбора одного варианта из многих. Можно это сделать с помощью вложенных операторов IF. Однако более удобный способ – использование оператора CASE.

Использование оператора if…then

Вследующем примере (priority.tdf) описано устройство – кодер, преобразующий уровень сигнала в двух битное число.

В данном примере в зависимости от входа, на который подан сигнал «Лог. 1», будут выполняться различные действия. Так например если на вход highподан сигнал «Лог. 1», то на выходеhighest_level[] будет значение 3, если на входlowподан сигнал «Лог. 1», то на выходеhighest_level[] будет значение 1, если на все входы будет подано значение «Лог. 0», то на выходеhighest_level[] будет значение 0.

На рисунке 2.4 представлена схема устройства, описанного в примере 2.9.

Для получения более подробной информации см. разделы:

  • Сравнение операторов IF…THEN и CASE

Использование оператора case

Вследующем примере (decoder.tdf) спроектировано устройство, преобразующее 2-х битный код в 4-х битное значение.

В данном примере возможными значениями входов code[1..0]являются 0, 1, 2 и 3. Если например значение входов равно 1 на выходахout[3..0]установится значениеB”0010”. Особенностью оператора CASE является то, что в данный момент времени активной может быть только одна строка.

На рисунке 2.4 представлена схема устройства, описанного в примере 2.10.

Для получения более подробной информации см. разделы:

  • Сравнение операторов IF…THEN и CASE

  • Создание декодеров

Сравнение операторов if…then и case

Операторы IF…THEN и CASE подобны. В некоторых случаях вы можете использовать любой из операторов. В следующем примере показана запись одних и тех же условий при использовании обоих операторов:

Однако, в некоторых случаях вместо того чтобы использовать вложенные конструкции IF…THEN проще и нагляднее использовать структуру CASE.

2.2.5 Создание декодеров

Декодер – комбинационное устройство (автомат), преобразующее один код, поступающий им на вход, в другой, снимающийся с выходов.

В примере 2.11 будет спроектирован дешифратор, управляющий работой светодиодов.

В данном примере все возможные комбинации входных сигналов (16 комбинаций) описаны таблицей истинности.

Следующий пример (decode3.tdf) – может служить дешифратором адреса в 16-битной микропроцессорной системе:

Вданном примере возможны тысячи входных значений, которые в таблице истинности указать очень сложно. Поэтому вы можете пользоваться символомX, указывающим на безразличное (don’t care) состояние данного бита, т.е. указанный выход не будет зависеть от сигнала на данном входе. Например, для первой строки таблицы истинности: выходromбудет равен «Лог. 1» при всех 16384 входных комбинациях, начинающихся с 00. Таким образом, для создания подобных таблиц истинности вы должны будете указать шаблон (например, 00), а вместо остальных бит поставить Х.

При использовании битовых шаблонов не допускайте присвоение этого шаблона переменной или другому шаблону, т.к. это может привести к непредсказуемым результатам.

Если вы используете безразличное состояние Х (don’t care) для задания битовых шаблонов вы должны быть уверены в том, что во всех строках таблицы не найдется двух одинаковых шаблонов. Из всей таблицы компилятор MAX+PLUS II выбираеттолько однустроку.

Устройство, спроектированное в следующем примере (decode4.tdf) выполняет те же функции что и устройство, описанное в примереdecode1.tdf, но для реализации этих функций использует функциюlpm_decode:

Для получения более подробной информации см. разделы:

  • Использование операторов ветвления

Соседние файлы в папке Altera