Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
XilinxCourse_v2.0.doc
Скачиваний:
56
Добавлен:
22.04.2019
Размер:
3.26 Mб
Скачать

4.8.1. Константы

В HDL описаниях очень часто требуется задавать значения констант. Это может потребоваться как в выражениях, так и при определении границ массивов и т.д. Для улучшения читабельности кода и для большей гибкости можно использовать одну из двух техник:

  • Использование конструкции define препроцессора Verilog HDL. Эта техника аналогична технике применяемой в С;

  • Конструкция localparam. С помощью этого ключевого слова описываются некоторые константы, имеющие смысл в пределах модуля.

Использование констант наилучшим образом может быть пояснено на примере. На рисунке 4.8.1 представлен пример в котором константы используются для выделения бита переноса при сложении дух операндов одинаковой разрядности.

Рисунок 4.8.1 — Пример использования констант

4.8.2. Параметры

Использование констант вносит большую гибкость в описание RTL модулей, но в действительности описание можно сделать еще более удобным и гибким в использовании. Более того, можно сделать его удобным для последующего повторного использования в других проектах. Для этих целей используется конструкция, известная как parametеr, служащая для передачи информации внутрь модуля. Это позволяет нам создавать новый экземпляр модуля варьируя некоторыми значениями, что делает модуль универсальным и многократно используемым. Тем не менее, параметры не могут быть модифицированы внутри модуля, что делает их похожими на константы.

В языке Verilog HDL, секция описания параметров должна быть вставлена в начале описания модуля, до описания портов. При этом, в описании параметров модуля задаются значения по умолчанию. Так, описание регистрового файла, рассмотренное выше может быть модифицировано с применением параметров, что позволит нам создавать разные регистровые файлы с разной разрядность и количеством регистров. На рисунке 4.8.2 представлен пример такого регистрового файла.

Рисунок 4.8.2 — Вариант описания параметризированного регистрового файла

Также, с использованием параметров, мы можем описать схему многоразрядного компаратора, заменяющего однобитный компаратор из примера, рассмотренного выше. На рисунке 4.8.3 представлен пример описания компаратора с разрядностью N.

Рисунок 4.8.3 — Описание компаратора с разрядностью N

Параметры предоставляют механизм реализации «расширяемого кода», при котором ширина схемы может быть скорректирована для специфических нужд. Это делает код более мобильным и поддерживает многократное использование.

В заключении отметим, что для того, чтобы задать требуемые значения для определенного экземпляра модуля, требуется описать их, используя соответствующие конструкции языка. Пример создания экземпляра модуля с требуемыми параметрами, представлен на рисунке 4.8.4.

Рисунок 4.8.4 — Пример создания экземпляра модуля компаратора с требуемыми параметрами

4.9 Конструкции для реализации конечных автоматов. Автоматы Мура и Мили

Конечные автоматы , FSM (Finit State Mashine), используются для создания систем, которые имеют ограниченный набор состояний и перемещаются между ними при выполнении некоторых условий. Перемещение зависит от текущего состояния и внешних входов. В отличие от обычных последовательных схем, переход состояний в конечных автоматах не является простой, повторяющейся характеристикой.

В этом разделе мы обсудим проектирование простых конечных автоматов и рассмотрим их описание с помощью HDL кода. Для практических целей, FSM в основном применяются в качестве контроллеров, которые проверяют внешние события и активизируют надлежащие контрольные сигналы для контроля операций с каналом данных.

Базовое представление конечного автомата ничем не отличается от представления обычной последовательной схемы. Его составляют регистры состояния, логика следующего состояния и некоторая логика на выходе. Конечный автомат называется автоматом Мура, если его выходы являются только функциями состояния и называется автоматом Мили, если выходы являются функциями как состояния, так и внешних входов.

FSM обычно определяются абстрактной диаграммой состояния, отображающей набор состояний, переходы между этими состояниями и условия осуществления переходов. Также на таких диаграммах указывается начальное состояние в котором находится система на момент включения. На рисунке 4.9.1 представлен пример диаграммы состояния для конечного автомата.

Представленный конечный автомат имеет 3 состояния, причем в каждом из состояний внутренние сигналы X и Y принимают некоторые значения. До тех пор, пока не изменится состояние автомата, значения также не будут меняться. Переход между состояниями осуществляется при определенных значениях сигнала А. Так, например, чтобы перейти из состояния State2 в состояние State3, сигнал А должен принять значение больше 10.

Рисунок 4.9.1 — Пример диаграммы состояния для конечного автомата

Существует большое множество вариантов описаний конечных автоматов на языке Verilog HDL. Далее будет представлен один из возможных вариантов шаблонов, описывающий такой автомат.

Для начала, на рисунке 4.9.2 представлена часть шаблона, описывающая его порты ввода-вывода.

В качестве системных сигналов представлены тактовый сигнал и сигнал асинхронного сброса, переводящий конечный автомат в начальное состояние. Сигналы input_controlN представляют собой сигналы, по которым будут осуществляться переходы, а сигналы output_controlN являются контрольными сигналами, вырабатываемыми данным автоматом.

Рисунок 4.9.2 — Часть шаблона для описания конечного автомата, содержащая описание портов ввода-вывода, внутренних состояний и сигналов

На рисунке 4.9.3 представлена оставшаяся часть шаблона, дающая наглядное представление о внутренней структуре шаблона по приведенным комментариям. Отметим лишь, что как и было описано выше, результатом работы конечного автомата является генерация некоторого количества управляющих сигналов. На рисунке представлено формирование как управляющих сигналов Мура, так и Мили.

Рисунок 4.9.3 — Часть шаблона для описания конечного автомата, содержащая описание внутренней структуры

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]