Введение Ключевые вопросы




Скачать 77.17 Kb.
НазваниеВведение Ключевые вопросы
Дата публикации10.02.2014
Размер77.17 Kb.
ТипДокументы
Управление Последовательностью положений

Введение

Ключевые вопросы:

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

Изменяющиеся условия внешней среды представлены в VHDL четырьмя классами условных операторов:

 Условное выполнение операторов (если … затем … операторы);

 Условное выполнение с альтернативами (если … затем … еще … и если … затем … elsif … операторы);

 Многократный выбор операторов (случай … операторы);

 Циклы позволяют повторение выполнения некоторых операторов (до тех пор пока делать………. и для …, делать … операторы).

Примеры:

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



Рисунок:



^ Оператор Условный

Ключевые вопросы:

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

if condition_met then execute_operations

Это VHDL действие подразумевает следующую процедуру:

 'Condition_met' предложение принимает значения типа Boolean ( истинна или ложь); если оно истинно, то предложение ‘then’ активизировано;

 После ‘then’ имеется список операторов, которые нужно выполнить; каждый оператор заканчивается точкой с запятой;

 Завершить условные операторы и отделить их от операторов, которые следуют после оператора 'end if '.

Примеры:

I1 : if Status_Signal = hold

then A1: Outputs <= 'X';

end if I1;

Signal Code_of_Operation : bit_vector(2 downto 0);

if Code_of_Operation(2) = '1'

then F := Operand_1 + Operand_2;

end if;

if Code_of_Operation(1) = '1'

then F := Operand_1 - Operand_2;

end if;

if Code_of_Operation(0) = '1'

then F := "00000000";

end if;

Рисунок:



^ Альтернативные Условные Операторы

Ключевые вопросы:

Выше описанные условные операторы совершенно просты и требуют некоторых расширений для большей гибкости. Например, нам нужно реализовать случай типа, ", если условие выполнено, некоторые действия предприняты, но если нет, другой набор действий выполняется ". Это конструирует, представления типа " если … затем … еще … " операторы.

Эти операторы ветвления могут быть далее расширены. Когда 'еще' предложение активно, то оно может содержать другое условные операторы, формируя иерархические условия. Такая ситуация может быть обработана в VHDL конструкцией " если … затем … elsif … ".

Примеры:

Ниже приведена поведенческая модель схем ExOr и Or.В модели применяют операторы если … затем … еще … и если … затем … elsif …, соответственно. Все сигналы (In1, In2 и Y) имеют бит тип.

architecture ExOr_Gate_Arch1 of ExOr_Gate is

begin

process (InA, InB)

begin

if InA=InB then Y <= '0';

else Y <= '1';

end if;

end process;

end architecture ExOr_Gate_Arch1;

architecture Or_Gate_Arch1 of Or_Gate is

begin

process (InA, InB)

begin

if InA='1' then Y <= '1';

elsif InB='1'

then Y <= '1';

else Y <= '0';

end if;

end process;

end architecture ExOr_Gate_Arch1;

Рисунок:



^ Множественный Выбор

Ключевые вопросы:

Конструкции " Если … затем … elsif … " – это операторы множественного выбора, которые позволяют выбирать отдельные ветви в зависимости от проанализированных условий. Однако, такие конструкции трудночитаемы, если число ветвей больше трех. В этих случаях применение операторов множественного выбора - намного лучший выбор.

Вместо Булева условия, операторы проверяют выражение дискретного типа (любое перечисление или тип целого числа) или типа массив литер. Практически, это выражение – обычно имя объекта.

Каждая альтернативная группа действий определяется выражением " когда выбор = > " предложение "выбора", которое определяет значения выражения. Одни значения могут быть единственные, другие находиться в диапазоне значений, однако они не могут использоваться совместно друг с другом.

Примеры:

Конструкции из предыдущей страницы, если … затем … еще …, могут быть заменены оператором case:

architecture ExOr_Gate_Arch2 of ExOr_Gate is

begin

process (InA, InB)

variable temp : bit_vector (1 downto 0);

begin

temp := InA & InB;

case temp is

when "00" => Y <= '0';

when "01" => Y <= '1';

when "10" => Y <= '1''

when "11" => Y <= '0';

end case;

end process;

end architecture ExOr_Gate_Arch2;

Рисунок:



^ Условные Циклы

Ключевые вопросы:

Операторы условных циклов начинаются с логических условий и функционируют аналогично условному оператору " если … затем … ", но выполняют переход к началу цикла после самого последнего оператора.

Цикл повторяется до тех пор пока условие в начале цикла истинно. Сначала, условие проверяется и если оно истинно, то операторы внутри цикла выполняются. Если условие ложно, цикл заканчивается, и управление передается к самому первому оператору, который следует после цикла.

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

Пример приведенный справа счетчик, который считает накопление CLK до тех пор, пока сигнал Level '1'. Заметьте, что устойчивость сигнала Level не анализируется. Все что только проверяется в начале цикла - это то является ли Level = '1', тогда ребро накопления CLK обнаружено. При этом не имеет значение, если Level изменил значение по сравнению с предыдущей проверкой.

Примеры:

Shift_1: process (Input_X)

variable i : positive := 1;

begin

L1: while i <= 8 loop

Output_X(i) <= Input_X(i+8) after 5 ns;

i := i + 1;

end loop L1;

end process Shift_1;

Рисунок:



^ Цикл со Счетчиком

Ключевые вопросы:

Цикл с условием продолжения повторяет тело неограниченное число раз, пока условие, указанное в заголовке цикла истинно. Однако, иногда необходимо повторить действия заданное число раз. Чтобы выполнить это, более удобно использовать цикл со счетчиком вместо цикла с условием продолжения. Фактически такой цикл используются на практике намного чаще чем циклы с условием продолжения.

Цикл со счетчиком не содержит Булево условие. Вместо него, дискретный диапазон начала и конца цикла задается. После того, как закончен один проход цикла , переменной цикла присваивается следующее значение из указанного диапазона. Счетчик, который не объявляется (по спецификации в заголовке цикла он равен декларации), трактуется как постоянный внутренний цикл и не может использоваться в операциях присваивания, индексации или выражениях, где он может быть изменен. Кроме того, счетчик существует только внутри цикла, в котором он объявлен.

Счетный диапазон не должен быть определен в классической форме как от … до …. Он может быть внесен в список как перечисляемый тип или подтип. В таком случае только подтип определен как диапазон счетчика.

Примеры:

Shift_2: process (Input_X)

begin

L2: for count_value in 1 to 8 loop

Output_X(count_value) <= Input_X(count_value + 8) after 5 ns;

end loop L2;

end process Shift_2;

Shift_3: process (Input_X)

subtype Range_Type is positive range 1 to 8;

begin

L3: for count_value in Range_Type loop

Output_X(count_value) <= Input_X(count_value +8) after 5 ns;

end loop L3;

end process Shift_3;

Рисунок:



^ Неполные Циклы

Ключевые вопросы:

Итерации условных и безусловных циклов повторяются и выполняют все свои операторыдо тех пор, пока условие цикла истино. Однако иногда, , желательно игнорировать некоторые из операторов цикла на текущей итерации и идти непосредственно на следующую итерацию того же самого цикла. Такая ситуация встречается например при подсчете битов со значением '1' в бит векторе (рисунок справа): когда бит – 1 то происходит приращение счетчика, а если бит нулевой, цикл должна игнорировать эту итерацию. Оператор next выполняет этот вид действий.

Помимо оператора next, который выполняет переход на следующую итерацию, имеются ситуации, которые требуют завершения итераций, даже если условие истинно. Оператор exit может выполнять это.

Переход на следующую итерацию и выход из цикла может быть назначен при помощи условия их выполнения. Так как это действие используется довольно часто, VHDL имеет упрощенный метод поддержки для next и exit операторов: это условие определено в предложении when, которое следует за оператором.

Примеры:

L4: loop

A:= A+1;

exit L4 when A > 10;

end loop L4;

L5: for count_value in 1 to 10 loop

exit L5 when reset = '1';

A_1: A(count_value) := '0';

end loop L5;

A_2: B <= A after 10 ns;

Рисунок:



Резюме

  1. Поведение системы - способ, которым система преобразовывает входные данные в выходные. Спецификация Поведения - последовательность действий, которые должны выполниться, чтобы получить ожидаемые результаты.

  2. Процесс представляет поведение некоторого блока проекта. Он состоит из последовательности операторов, порядок выполнения которых определяется пользователем.

  3. Выполнение операторов однако не заканчивается при выполнении последнего оператора в процессе, они повторяются в бесконечном цикле. Цикл может быть приостановлен и возобновлен оператором wait.

  4. Когда с оператором wait сталкивается в процесс,то он становится приостановленным, то есть при этом останавливается его выполнение, пока условие, поддержанное оператором wait не выполнено. В зависимости от типа оператора wait, могут иметься отдельные условия для продолжения выполнения приостановленного процесса: блокировка по указанному времени истекла (оператор wait), логическое условие выполнено (оператор wait for), пришел нужный сигнал (оператор wait on)

  5. Возобновленный процесс выполняет операторы последовательно в цикле, пока не сталкиваются с оператором wait. Когда это происходит, процесс становится приостановленным снова.

  6. Оператор wait может появляться в любом месте процесса. Обычно, он используется, или в начале (процесс будет приостановлен немедленно без любых выполняемых операторов) или в конце процесса (некоторые операторы будут выполнены до приостановки процесса).

  7. VHDL обеспечивает конструкции, которые назваются список чувствительности процесса, и используются для возобновления процесса. Список чувствительности - способ определения набора сигналов или результатов, которые могут возобновлять процесс. Список чувствительности - указывается справа после ключевого слова process. Список чувствительности эквивалентен оператору wait, который является последним оператором в секции операторов (оператор wait on в начале процесса - НЕ эквивалент к списку чувствительности процесса).

  8. Также очень важно заметить, что процесс со списком чувствительности не может содержать любой оператор wait.

  9. Присваивание значения сигналу имеет эффект только, когда процесс приостанавливает и только последнее назначение на любой частный сигнал внутри процесса эффективно в данном выполнении процесса. Сигналы не могут быть объявлены внутри процессов.

  10. Переменные - объекты, совместимые с сигналами. Они способны обслужить цели, для которых сигналы не подходят - описание алгоритмов внутри процессов. Переменные объявляются внутри процессов и не могут быть использованы в их наружной части.

  11. Сигнал имеет три реквизита, присущие ему: type, value, и time. Имеется особенно близкая связь между значением и временем: сигнал имеет временную диаграмму, которая называется хронологией сигнала. Этим способом, возможно проверить то, какое значение сигнал имел ранее или когда последнее изменение значения происходило.

  12. Переменная имеет два реквизита: тип и значение. Не имеется никакого выбора времени, присущего переменной, и единственное значение - текущая значение.

  13. Процессы, которые выполняют операторы последовательно, являются совершенно редкими. Практические, процессы представляют реальные действия

Добавить документ в свой блог или на сайт

Похожие:

Введение Ключевые вопросы iconКомпоненты и Конфигурации Введение в Компоненты Ключевые вопросы
Если именованный объект может использоваться как компонент тогда, почему мы должны рассматривать другие конструкции для той же самой...

Введение Ключевые вопросы iconНе-логические Типы данных Введение к Типам данных Ключевые вопросы
Однако, часто неудобно использовать эту форму. Так как одна буква представлена 8 битами, и каждое обращение к памяти pc требует,...

Введение Ключевые вопросы iconПоиск информации в Internet
Найди в Internet ответы на следующие вопросы. Запиши ключевые слова, которые использовались для поиска. Запиши адреса серверов, на...

Введение Ключевые вопросы iconП ротокол опроса. /3 февраля 2001
Ключевые вопросы анамнеза, которые необходимо выяснить у беременнной или роженицы во время визита анестезиолога

Введение Ключевые вопросы iconПятница, 24 декабря 2010 г. Ключевые вопросы, ответы и их толкование
«Не дай бог реформировать чиновников и просвещение!!!» сказал в конце 19-го века Премьер России С. Ю. Витте

Введение Ключевые вопросы iconСтатьи, доклада или сообщения
Аннотация и ключевые слова приводятся на трех языках (украинском, русском и английском). Аннотацию и ключевые слова на языке публикуемого...

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

Введение Ключевые вопросы iconПредложение порта Значение Порта Ключевые вопросы
Концепция порта уже была упомянута ранее и пришло время обсудить ее более подробно

Введение Ключевые вопросы iconЫ: Решения Пражского саммита. Ключевые вопросы. Документы. Историческая...
Хартія про особливе партнерство між Україною та Організацію Північно-Атлантичного договору, Мадрид, 9 липня 1997 року

Введение Ключевые вопросы iconОсобенности кардиогемодинамики, изменений маркеров дисфункции почек...
Ключевые слова: сердечная недостаточность, кардиогемодинамика, почки, цистатин С, тфр- β1, β2-мг, фно- α

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
uchebilka.ru
Главная страница


<