![]() |
Звоните! (926)274-88-54 Бесплатная доставка. Бесплатная сборка. |
Ассортимент тканей График работы: Ежедневно. С 8-00 до 20-00. Почта: soft_hous@mail.ru |
![]() ![]() ![]() |
Читальный зал --> Программные средства foundation with expression select signal-name <- signal-value vhen choicer, signaf-value when choices. Табл. 4.52. Синтаксис избирательного сигнального оператора присваивания в языке VHDL signal-value vhmi choices; В архитектуре устройства для обнаружения простыхчисел, приведенной в табл. 4.53, использован избиретельный сигнальный оператор присваивания. Все альтернативы, для которых F равно 1 могли бы быть записаны в одном предложении when; в нашем примере они разнесены по нескольким предложениям только с учебной целью. Здесь избирательный сигнальный оператор присваивания- как бы считывает запись множества включений функции F. Табл. 4,53. Архитектура устройства для обнаружения простых чисел, е которой используется избирательное присваивание сигналу его зна-чения architecture prime4 arch of prime is begin with N select F <= 1 when 0001 , when 0010 , when 0011 when 1011 when others; 1 1 1 0 0101 1101 , 0111 , end prime4 arch; Ту же самую архитектуру межно слегка видоизменить, чтобы воспользоваться более удобной числовой интерпретацией N в определении функции. Применяя приведенное ранее преобразование CONV INTEGER, можно записать альтернативу в терминах целых чисел, которые, как это можно видеть из табл. 4.54, являются простыми, что и требовалось. О ташм варианте представления структуры можно говорить как о поведенческом описании, поскольку желаемая функция отображена в нем таким образом, что поведение устройства оказывается совершенно очевидным. ПОЛНЫЙ ПЕРЕБОР При условном и избирательном присваивании сигналу его значения требуется перечисление всех возможных условий. В условном сигнальном присваивании заключительной фразой else expression покрываются опущенные условия. При избирательном сигнальном присваивании все остающиеся условия можно подобрать ключевым словом others в последнем предложении when. Глядя на табл. 4.53, можно подумать, что вместо слова others мы могли бы записать девять остающихся 4-битовых комбинаций О О О О , 010 О и тд. Но это не так! Не забывайте, что STD LOGIC -это девятизначная система, так что у 4-разрядной величины типа S Т D LOGIC VECTOR в действительности имеется 9* возможных значений. Поэтому others в данном примере на самом деле покрывает 6554 случая! ства для обнаружения простых чисел, носящее поведенческий характер end primeS.arch; 4.7.8. Элементы поведенческого проектирования Как видно из последнего примера, иногда параллельным оператором можно непосредственно описать требуемое поведение логической схемы. И это очень хорошо, потому что возможность поведенческого описания {behavioral description) и выполнение поведенческого проекта {behavioral design) является главным достоинством языков описания схем вообще и языка VHDL, в частности. Однако для большинства поведенческих описаний нужны некоторые дополнительные элементы языка, рассматриваемые в этом разделе. 1Слючевым поведенческим элементом языка VHDL является процесс . Процесс {process) - это совокупность последовательных операторов (они будут описаны чуть ниже), которые выполняются одновременно с другими параллельными операторами и с другими процессами. С помощью процесса можно задать сложное взаимодействие сигналов и событий таким способом, что при моделировании это взаимодействие реализуется практически за нулевое время в модели, а результатом синтеза становится комбинационная или последовательностная схема, которая выполняет моделируемую операцию непосредственно. Оператор процесса {process statement) в языке VHDL можно использовать повсюду, где возможно употребление параллельного оператора. Оператор процесса вводится ключевым словом process; синтаксис этого оператора приведен в табл. 4.55. OnepaTopprocess пишется внутри некоторой обьемлющей архитектуры, поэтому ему доступны все типы, сигналы, константы, функции и процедуры, обьявленные в этой архитектуре, а также так или иначе видимые из этой архитектуры. Но можно также определять и локальные типы, переменные, константы, функции и процедуры внутри данного процесса. Табл. 4.55. Син- process {signal-name, signal-name, .... signal-name) таксис оператора j , type declarations process в языке . ., . i У1Р1 variable declarations constant declarations function definitions procedure definitions begin sequential-statement sequential-statement end process; Табл. 4.54. -Г --. Описание устрой- architecture prime5 arch of prime is begin with CONV I!irrEGER(N) select F <= 1 when 1 ! 2 I 3 ! 5 I 7 ! 11 I 13, 0 when others; Обратите внимание на то, что внутри процесса можно объявлять только переменные , но не сигналы. Переменная (variable) в языке VHDL отслеживает состояние процесса только внутри него и вне процесса ее не видно. В зависимости от того, как используется переменная, ей в конце концов будет или не будет соответствовать определенный сигнал при физической реализации создаваемой схемы. Синтаксис определения переменной внутри процесса подобен синтаксису объявления сигнала в архитектуре, за исключением того, что используется ключевое слово variable: variable variable-names : variable-type; VHDL-процесс всегда либо выполняется (running process), либо приостановлен (suspended process). Перечнем сигналов в определении процесса, который называется спискам чувствительности (sensitivity list), задаются условия, когда процесс выполняется. Первоначально процесс остановлен; когда изменяется значение любого из сигналов в его списке чувствительности, исполнение процесса возобновляется, начиная с его первого последовательного оператора, и оно продолжается, пока не будет достигнут конец. Если какой-либо сигнал из списка чувствительности изменяет свое значение в результате исполнения процесса, то процесс выполняется снова. Это продолжается до тех пор, пока запуск процесса не перестанет приводить к изменению значения любого из этих сигналов. При моделировании все это происходит за нулевое время в модели. Если процесс записан надлежащим образом, то, будучи запущен, он исполняется один или несколько раз и останавливается. Однако существует возможность записать процесс неправильно, который никогда не остановится. Рассмотрим, например, процесс всего с одним последовательным оператором X <= not X и списком чувствительности (Х) . Поскольку на каждом проходе значение X изменяется, процесс будет запущен навсегда, хотя и будет занимать нулевое время в модели. Едва ли это полезно! На практике в моделирующих программах имеются средства защиты, которые обычно обнаруживают подобное нежелательное поведение и прерывают исполнение такого процесса после, скажем, тысячи проходов. Список чувствительности является необязательным; при моделировании исполнение процесса, у которого нет списка чувствительности, начинается в нулевой момент времени. Одно из применений такого процесса - это генерирование входных колебаний при тестировании (см. табл. 4.65 ниже). В языке VHDL имеются последовательные операторы нескольких видов. Первый из них - это последовательный сигнальный оператор присваивания (sequential signal-assignment statement); у него тот же самый синтаксис, что и у параллельного аналога (signal-name <= expression;), но последовательный оператор располагается в теле процесса, а не в теле архитектуры. Аналогичный оператор для переменных - это оператор присваивания значения переменной (variable-assignment statement), синтаксис которого имеет вид: variable-name: = expression; . Заметьте, что в случае переменных используется другой оператор присваивания, а именно : =. ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку. Звоните! Ежедневно! (926)274-88-54 Продажа и изготовление мебели. Копирование контента сайта запрещено. Авторские права защищаются адвокатской коллегией г. Москвы. |