Бабак VHDL
.pdf
210 Приложение. Основы языка VHDL в реферативном изложении
Имеются два механизма задержки, доступные в VHDL: инерцион ная задержка и транспортная задержка. Транспортная задержка опре деляется c помощью ключевого слова transport и типична для элек трических проводников. Инерционная задержка определяется с помо щью ключевого слова inertial и используется для моделирования приборов, которым присуща инерционная природа. На практике это означает, что импульсы, длина которых короче, чем указанное время переключения, не будут передаваться.
Если механизм задержки не определен, по умолчанию использует ся инерционная задержка. Механизмы задержек могут применяться только к сигналам.
Константа (constant) — это программный элемент данных, значе ние которого в процессе моделирования никогда не меняется.
Используйте константы в программном коде настолько часто, на сколько это возможно, потому что они создают более наглядный и ма шинно совместимый код.
П.5. Поведенческая форма проекта на основе явно заданного оператора PROCESS
Поведенческая форма представления проекта ЦУ — это описание того, как компонент, устройство или система преобразовывает вход ные данные в выходные. Иными словами, поведенческая форма — это описание набора операций, которые должны быть выполнены систе мой для получения нужного результата. Базовым оператором, дающим возможность реализовать поведенческую форму представления проек та, является оператор process. Язык VHDL поддерживает работу с операторами process двух классов:
явно заданный оператор process (в конструкции оператора со держится ключевое слово process), который может иметь одну из двух форм:
—явно заданный оператор process со списком чувствитель ности;
—явно заданный оператор process без списка чувствитель ности;
П.5. Поведенческая форма проекта на основе явно заданного оператора PROCESS 211
неявно заданный оператор process (в конструкции оператора ключевое слово process отсутствует). Неявно заданный опера тор process может иметь одну из трех форм, которые обычно называют: параллельная установка значений сигналов (simple concurrent signal assignments) — ПУЗС; условная установка значе ний сигналов (conditional signal assignments) — УУЗС; селектив
ная установка значений сигналов (selected signal assignments) — СУЗС.
Выполнение явно заданного оператора process без списка чувствительности (в силу того, что по своей природе он является цик лическим) не заканчивается при выполнении последнего оператора в его теле, так как его выполнение повторяется в бесконечном цикле. Цикл выполнения этого оператора может быть приостановлен или во зобновлен с помощью оператора wait.
Когда оператор wait встречается в операторе process, выполне ние последнего приостанавливается, пока не будет выполнено усло вие, указанное в операторе wait. В языке VHDL используются следу ющие формы оператора wait:
оператор wait until <временной интервал> — продолжение после истечения заданного временного интервала;
оператор wait for <логическое условие> — продолжение после выполнения логического условия;
оператор wait on <список чувствительности> — продолжение
после свершения события хотя бы на одном из сигналов, пере численных в списке чувствительности.
Возобновленный оператор process выполняет содержащиеся в нем операторы последовательно, пока опять не дойдет до очередного или того же оператора wait. Когда это происходит, процесс снова приостанавливается в ожидании выполнения условия, определенного оператором wait.
Оператор wait может появляться в любом месте оператора process. Обычно он используется либо в начале процесса (когда про цесс нужно приостановить сразу же после запуска, до выполнения дру гих операторов, содержащихся в операторе process), либо в конце процесса (когда нужно сначала выполнить все операторы, содержащи еся в операторе process, и лишь затем приостановить выполнение процесса).
212 Приложение. Основы языка VHDL в реферативном изложении
В языке VHDL можно использовать оператор process с явно за данным списком чувствительности. Это позволяет определить набор сигналов или результатов, которые могут возобновлять выполнение оператора process. Список чувствительности указывается справа после ключевого слова process. Оператор process с явно заданным списком чувствительности эквивалентен оператору process, кото рый содержит оператор wait on <список чувствительности>, указан ный последним оператором раздела выполняемых операторов. Следует подчеркнуть, что оператор process, который содержит оператор wait on <список чувствительности>, указанный первым оператором в разделе выполняемых операторов, не эквивалентен оператору process с явно заданным списком чувствительности.
Также очень важно заметить, что оператор process с явно задан ным списком чувствительности не может содержать оператор wait любой формы.
Новое значение сигнала, который содержится в разделе выполняе мых операторов, устанавливается только после приостановки выпол нения оператора process. При этом учитывается только то значение, которое поступило на сигнал последним за время, прошедшее от мо мента предыдущей приостановки процесса. Сигналы не могут быть объявлены внутри раздела объявлений оператора process.
П.6. Поведенческая форма проекта на основе неявно заданного оператора PROCESS
Поскольку язык VHDL является языком параллельного и ситуаци онного моделирования, с его помощью можно проектировать ЦУ в ви де набора параллельно работающих последовательных компонентов. Каждый из этих компонентов в свою очередь может быть представлен либо в виде отдельного параллельного процесса, либо в виде отдельно го параллельно последовательного процесса, либо в виде отдельного последовательного процесса. При этом каждый отдельный компонент может функционировать параллельно с другими компонентами. Фи зическая имитация протекания параллельных процессов реализуется посредством специальных операторов параллельной обработки (ОПО): ОПО ПУЗС (неявно заданных операторов process) или ОПО
П.6. Поведенческая.6форма. Поведенческпроектаянаформаосновепронеявнокта наз данногоос ове неявнооператорзаданногоPROCESSоператора213
PROCESS 213 process (явно заданных операторов process). Эти операторы в про екте обычно содержатся в разделе ОПО архитектуры проекта.
Как и большинство составных конструкций VHDL, архитектура проекта, объявляемая с помощью оператора architecture, содер жит имя архитектуры и идентификатор компонента, с которым связа на данная архитектура. Объявление архитектуры ограничивается клю чевым словом end. Архитектура проекта содержит два раздела: раздел объявлений и раздел выполняемых операторов. Раздел объявлений — это раздел архитектуры проекта, в котором прежде всего объявляется набор внутренних сигналов, участвующих в работе проектируемого ЦУ. Раздел выполняемых операторов — это раздел, в котором находятся ОПО, предназначенные для установки сигналов в процессе функцио нирования проектируемого ЦУ.
Сигналы — это единственное средство для пересылки информации между параллельно выполняющимися процессами.
В архитектуре проекта могут использоваться ОПО process, уста навливающие значения сигналов в явной и неявной форме. Режим вы полнения определяется способностью операторов выполнить запрос на обслуживание и количеством разного вида запросов на обслужива ние в текущий момент времени.
Неявно заданные операторы process для выполнения запроса на обслуживание должны быть чувствительны к изменению любого сиг нала, который появляется в выражении, стоящем справа от символа операции установки значения сигнала (<=). Изменение значения лю бого сигнала в выражении активизирует выполнение операции уста новки.
При разработке проектов ЦУ комбинаторного типа установка зна чения сигнала должна выполняться только тогда, когда некоторое ус ловие является истинным. Однако САПР, основанные на VHDL, не позволяют использовать для проверки истинности подобных условий конструкцию if ... then ... else ..., поскольку такая конс трукция допустима только в явно заданном операторе process. Если по каким либо причинам явно заданный оператор process использо вать нежелательно или невозможно, следует использовать ОПО УУЗС или СУЗС. Синтаксис операторов УУЗС позволяет выполнить анализ нескольких условий и установку сигнала как при истинности всех ана лизируемых условий, так и при истинности одного из них. В тех случа ях, когда сигналу нужно установить одно из заранее определенных зна
214 Приложение. Основы языка VHDL в реферативном изложении
чений, выбор которого зависит от значения задающего выражения, ис пользуется ОПО СУЗС. Для решения подобной задачи внутри явно заданного оператора process следует применять оператор case.
Язык VHDL позволяет обрабатывать особые ситуации, которые могут возникать при работе ЦУ. Такой особой ситуацией является, ког да один и тот же сигнал одновременно устанавливается несколькими источниками. Для принятия решения о значении сигнала каждое но вое устанавливаемое значение, прежде чем вступить в силу, предвари тельно сохраняется в ячейках специальной памяти. В языке VHDL эта процедура называется формированием значения сигнала, или управ лением значением сигнала драйвером. Каждый раз, когда в проекте VHDL встречается оператор установки значения сигнала, автомати чески генерируется драйвер для этого сигнала и вся информация отно сительно всех новых изменений значения сигнала сохраняется в драй вере сигнала. Когда выявлены все новые значения, поступившие на сигнал, они анализируются специальной подпрограммой (разрешаю щей функцией), которая и устанавливает окончательное значение для сигнала.
Каждый драйвер представлен временной диаграммой сигнала, со стоящей из одной или нескольких последовательных транзакций. Транзакция состоит из значения сигнала и момента времени, когда сигнал принял новое значение.
П.7. Структурная форма проекта
Поведенческая форма представления определяет проектируемое ЦУ в терминах выполняемых им операций, без привязки к тому, как оно устроено. Структурная форма представления описывает именно внутреннее устройство проектируемого ЦУ: из каких компонентов оно состоит и как они связаны между собой с помощью сигналов.
Структурная форма позволяет представить проект ЦУ в виде мно гоуровневой иерархии компонентов, проект каждого из которых в свою очередь может быть представлен как в поведенческой, так и в структурной форме. Только компоненты самого нижнего уровня ие рархии всегда должны представляться в поведенческой форме.
Компонент (component) может быть определен как отдельный ра нее созданный VHDL проект со своим интерфейсом и архитектурой,
П.7. Структурная форма проекта 215
представленными соответствующей парой операторов entity и architecture в отдельном файле проекта или пакете. Компонент может быть также определен внутри архитектуры текущего проекта, имеющего структурную форму. В любом случае, для того чтобы компо нент можно было использовать в текущем проекте со структурной формой, компонент должен быть объявлен с помощью оператора component в разделе объявлений архитектуры текущего проекта. Пос ле этого в разделе выполняемых операторов архитектуры можно реа лизовывать экземпляры компонента.
Оператор реализации компонента port map — это основной опе ратор при использовании структурной формы представления VHDL проектов. Этот оператор располагается в разделе выполняемых ОПО архитектуры проекта. Иными словами, оператор port map работает параллельно с другими ОПО проекта.
Оператор port map фактически реализует межкомпонентные свя зи экземпляра компонента с портами других компонентов, содержа щихся в проекте структурной формы. Часто говорят, что оператор port map ассоциирует (отображает) внутренние сигналы структур ного проекта с портами реализуемого экземпляра компонента.
Сигналы, используемые при реализации экземпляра компонента, могут быть как внешними портами ЦУ, так и внутренними сигналами проекта структурной формы.
В операторе port map реализация междукомпонентных связей может осуществляться в одной из двух следующих форм.
Позиционная реализация порта компонента с внутренним сиг налом, при котором внутренние сигналы перечислены в том же самом порядке, в котором объявлены порты в соответствующем операторе component компонента, экземпляр которого реализу ется данным оператором port map.
Именованная реализация порта компонента с внутренним сиг налом, при котором внутренние сигналы связываются с портами путем указания имени порта и имени внутреннего сигнала, свя занных символами =>. Обратите внимание на то, что этот символ не имеет никакого отношения к направлению информационного
потока через порт.
При разработке мастер проекта в нем допускается использовать операторы component, которые объявляют еще не существующие компоненты. Такие объявления игнорируются компиляторами, что
216 Приложение. Основы языка VHDL в реферативном изложении
позволяет разработчику создавать проект, имеющий структурную фор му, по принципу «сверху вниз», продвигаясь по мере работы над проек том от верхнего уровня иерархии к нижним.
Если проект имеет структурную форму, для его успешной компиля ции нужно иметь определение компонента (пара операторов entity и architecture), объявление компонента (оператор component) и ре ализацию как минимум одного экземпляра компонента (оператор port map).
Оператор реализации компонентов port map относится к классу ОПО. Поэтому эти операторы выполняются по параллельному принципу и, следовательно, моделируют протекание параллельных процессов в проектах ЦУ структурной формы.
Гл
В. П. Бабак, А. Г. Корченко, Н. П. Тимошенко, С. Ф. Филоненко
VHDL: Справочное пособие по основам языка
Главный редактор Д. А. Мовчан
dmkpress@gmail.com
Ответственный редактор И. А. Корабельникова Технический редактор Н. В. Тищенко Верстка и графика А. В. Кольцовой
Корректор Г. Б. Абудеева
Объем 14,0 п. л. Усл. п. л. 14,0. Тираж 100 экз.
Издательство «ДМК Пресс» www.дмк.рф
