ОСНОВЫ ЯЗЫКА VHDL 1. Последовательные операторы 2 Последовательные операторы по характеру исполнения подобны операторам традиционных языков программирования.

Презентация:



Advertisements
Похожие презентации
Глава 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор присваивания Простой и составной операторы Условный оператор Оператор множественного выбора Оператор цикла с предусловием.
Advertisements

ЦИКЛИЧЕСКИЙ АЛГОРИТМ Цели: -Познакомиться с понятием циклического алгоритма. -Освоить языковые средства для реализации циклических алгоритмов.
Циклический алгоритм –это алгоритм команды которого выполняются несколько раз подряд. В языке Паскаль имеется три различных оператора цикла: 1. Оператор.
Виды алгоритмических структур: –блок-схема. –линейный алгоритм. –алгоритмическая структура «ветвление». –алгоритмическая структура «выбор». –алгоритмическая.
Лекция 3 Операторы Цикла 1 Российский государственный университет нефти и газа имени И.М. Губкина Кафедра «Информатики»
ПРОГРАММИРОВАНИЕ ПОВТОРЕНИЙ МОУ «Средняя общеобразовательная школа 41» Учитель информатики: Рассохина Г.В. САРАНСК 2008.
ПРОГРАММИРОВАНИЕ ПОВТОРЕНИЙ. НАЧАЛО AB A, B, C A = A + C F = B + C F КОНЕЦ B = B + C F = A + B B < C A = A + B F = A + C нет да A = 1, B = 1, C = 4 F=?
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
Переменные и операторы УРОК 2. Переменные ПЕРЕМЕННАЯ – ?... контейнер для хранения данных. Переменная имеет имя – это….? последовательность букв, цифр.
Программирование Задания В2, В5. Оператор присваивания в языке программирования Задание В2 – базовый уровень, время – 2 мин.
ПРАКТИКУМ по предмету: Информатика Алгоритмический язык Турбо-Паскаль.
Презентацию составила учитель первой категории МБОУ СОШ 14 имени К.С.Федоровского г.Юрги Кемеровской области Яковлева Ирина Владимировна.
Операторы языка Паскаль. Операторы повтора (цикла)
ОСНОВЫ ЯЗЫКА VHDL 1. Параллельные операторы 2 Параллельные операторы это такие, каждый из которых выполняется при любом изменении сигналов, используемых.
Операторы цикла. Циклический процесс, или просто цикл, – это повторение одних и тех же действий. Последовательность действий, которые повторяются в цикле,
ОСНОВЫ ЯЗЫКА VHDL 1. Структурное представление проекта 2 Язык VHDL предоставляет возможность структуризации описания так называемые структурные архитектурные.
Программирование на Pascal. Темы Повторение. Составные логические условия Повторение. Составные логические условия Повторение. Составные логические условия.
Презентация на тему: «Программирование циклических структур». Составила: учитель информатики Чура Н.А. Составила: учитель информатики Чура Н.А.
класс-ПОВТОРЕНИЕ ОСНОВНЫХ ПОНЯТИЙ ТЕМЫ « ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ » 8 КЛАСС.
Транксрипт:

ОСНОВЫ ЯЗЫКА VHDL 1

Последовательные операторы 2 Последовательные операторы по характеру исполнения подобны операторам традиционных языков программирования. Операторы этого типа обязательно "вложены" в оператор PROCESS или подпрограмму и выполняются последовательно друг за другом в порядке записи. Ниже приведен полный список последовательных операторов языка. ::= I | I

Последовательные операторы 3 Последовательное сигнальное присваивание Синтаксическая формула оператора присваивания значения сигналу имеет вид: ::= ] ; ::= TRANSPORT | [ REJECT ] INERTIAL ::= «, » ::= [AFTER ] Приемник объект сигнальной категории, представленный простым именем или компонентом агрегатного сигнала. Прогноз поведения (в стандартах VHDL Wave-form, временная диаграмма) задает порядок изменения сигнала после события, инициирующего исполнение этого оператора. Значащее выражение любое выражение, дающее результат того же типа, что и приемник. Например, сигнал, соответствующий временной диаграмме, приведенной на рисунке, описывается оператором: х<='1' AFTER 5ns, '0' AFTER 20ns,'Z' AETTER 50 ns,'0' AFTER 70 ns (*); Операторы присваивания

Последовательные операторы 4 Различают транспортную и инерционную модели задержки. Если в операторе присваивания присутствует ключевое слово TRANSPORT, предполагается транспортная задержка. Транспортная модель предполагает идеализацию поведения устройства так, что любой импульс, сколь коротким он бы ни был, воспроизводится на выходе. В этом случае из временной исключаются все переходы, которые были предсказаны на время, позднее первого из новых объявляемых переходов, и добавляются новые переходы. Если через 10 нс после выполнения присвоения (*) выполнено х<= TRANSPORT 'Z' AFTER 20 ns; будет сформирована временная диаграмма, представленная на рисунке. Операторы присваивания

Последовательные операторы 5 Инерционная модель применяется для описания устройств, не реагирующих на импульсы, длительность которых меньше некоторого наперед заданного значения. В этом случае, подобно транспортной задержке, в календарь событий добавляются новые предсказанные переходы и удаляются все переходы, предсказанные в предшествующих присвоениях на время большее времени нового прогнозируемого перехода. После этого просматривается интервал модельного времени, который предшествует новому предсказываемому переходу и длительность которого определена временным выражением в подстроке REJECT. Все переходы в этом интервале, которые приводят к значению, отличающемуся от нового предсказания, удаляются. Если ключевое слово REJECT отсутствует, то интервал, в котором выполняется такое удаление, определяется значением, указанным после слова AFTER. Пусть через 10 нс модельного времени после выполнения присвоения (*) выполнен оператор х<= inertial z' after 20 ns; Тогда временная диаграмма модифицируется до вида, приведенного на рисунке. Операторы присваивания

Последовательные операторы 6 Операторы условия IF и выбора CASE позволяют описывать совокупности действий, некоторые из которых исполняются при возникновении опреде­ленных условий в реальном устройстве и при моделировании, а иные при тех же условиях не исполняются. ::= IF ТНЕN « » «ELSIF THEN « » » [ ELSE « » ] END IF; Для пояснения порядка исполнения оператора рассмотрим менее формальную, но достаточно обобщенную форму его записи: IF B 1 THEN S 1 ELSIF B 2 THEN S 2 ELSIF B 3 THEN S и т. д. ELSIF B n THEN S n ELSE S n+1 END IF; где B 1,B 2, B 3,...,B i,..., B n булевские выражения; S 1, S 2, S 3,..., S i..., S n, S n+1 совокупности последовательных операторов. Операторы условия

Последовательные операторы 7 Пример 1 example_IF_1: PROCESS (а, b) BEGIN IF а = 1 AND b = 1 THEN q <= 1; Р<= 1; ELSIF a = '0' AND b = '0' THEN q <= '0'; р<= 1; ELSE q <= '0'; р<='0'; END IF; END PROCESS example_IF_1; Здесь описана реализация двух логических функций: q= a AND b; p= a XNOR b. Операторы условия

Последовательные операторы 8 Пример 2 ENTITY temperature_controle IS PORT ( temperature: IN integer ( 50 DOWNTO 0); enable_regulation: IN bit; intensive_heat, slow_heat, cooling: OUT bit) END teirperature_controle; ARCHITECTURE behave OF temperature_controle IS BEGIN PROCESS BEGIN IF enable_regulation='0' THEN intensive_Heat<='0';--прекращение работы slow_heat<='0'; cooling<='0'; ELSIF temperature>30 THEN -- повышенная температура intensive_Heat<='0'; slow_heat<='0'; cooling<=1'; ELSIF temperature>20 THEN NULL; -- нормальная температура ELSIF temperature>10 THEN -- слегка пониженная температура intensive_Heat<='0'; slow_heat<='1'; cooling<='0'; ELSE intensive_Heat<=1'; -- низкая температура slow_heat<='0'; cooling<='0'; WAIT FOR 1 sec; END PROCESS; END behave; Операторы условия Здесь описан регулятор температуры, входами которого являются сигнал датчика температуры temperature и логический сигнал включения регулировки enable_regulation, а выходами - логические сигналы intensive_heat - сигнал включения интенсивного нагрева, slow heat - слабый подогрев, cooling - охлаждение, например, включение вентилятора.

Последовательные операторы 9 BNF-форма оператора выбора имеет вид: := CASE IS WHEN «| » => « » « WHEN «| » => « » » END CASE; ::= | | OTHERS Разделителем в списках выбираемых вариантов является вертикальная черта, т. е. в определении оператора выбора вертикальная черта это не метасимвол, в отличие от любых других определений, а синтаксический элемент определяемой конструкции. При каждом исполнении оператора выбора реализуется единственная последовательность вложенных операторов, а именно та, которой предшествует вариант, совпадающий со значением ключевого выражения в момент исполнения оператора. Ключевое слово OTHERS определяет операторы, которые исполняются, если значение ключевого выражения не совпадает ни с одним вариантом и не входит в объявленные диапазоны. Если алгоритм предусматривает варианты, при которых не производится никаких действий, то в операторной части таких вариантов записывается пустой оператор NULL. Оператор выбора

Последовательные операторы 10 Пример 3 example_qase_1:PROCESS (a,b) VARIABLE d: std_logic_vector (1 DOWNTO 0); BEGIN d:=a & b; CASE d IS WHEN "11" => q <= '1'; p<= '1'; WHEN "00" => q <= '0'; p<=1'; WHEN OTHERS=>q <= '0'; p<='0'; ЕND CASE; END PROCESS; Здесь описана реализация двух логических функций: q= a AND b; p= a XNOR b. Оператор выбора

Последовательные операторы 11 Пример 4 ARCHITECTURE FUNCTION_description OF address_generator TYPE bus_operations IS (fetch,-- цикл выборки команды immediate_read, -- выборка непосредственного операнда direct_read, direct_write, -- прямое чтение и запись -- с прямой адресацией памяти io_read, io_write, -- ввод и вывод на внешние устройства indirect_read, indirect_write-- чтение и запись по косвенному адресу); SIGNAL bus_controle: bus_operations; SIGNAL program_ counter, -- счетчик адреса команд command_register, -- регистр команд data_register -- регистр данных : std_logic_vector (31 DOWNTO 0); BEGIN PROCESS (bus_controle) BEGIN CASE bus_controle IS WHEN fetch | immediate_read => adress <=program_ counter; WHEN direct_read | direct_write | io_read | io_write =>adress <=command_register; WHEN indirect_read | indirect_write =>adress <= data_register; ЕND CASE; ЕND PROCESS; END FUNCTION_description; Оператор выбора Здесь описан порядок формирования адреса памяти address для некоторого процессорного элемента в зависимости от выполняемого цикла обмена. В различных циклах в качестве источника кода адреса могут выступать счетчик адреса команд (program counter), регистр команд (command_register) или регистр данных (data_register). Используя задания набора вариантов из диапазона значений, можно оператор выбора в предыдущем примере записать более коротко: CASE bus_controle IS WHEN fetch | immediate_read => adress <=program_ counter; WHEN direct_read TO io_write => adress <=command_register; WHEN indirect_write DOWNTO indirect_read => adress <= data_register; ЕND CASE;

Последовательные операторы 12 BNF-форма оператора ожидания имеет вид: ::= WAIT; | WAIT ON »; | WAIT UNTIL ; | WAIT FOR ; Исполнение операторов, записанных в теле процесса, приостанавливается, если очередной оператор является оператором ожидания (фактически - оператором приостанова) WAIT. При этом результаты исполнения предшествующих операторов заносятся в календарь событий и могут быть инициализированы другие процессы. Прекращение состояния приостанова процесса зависит от условий, определенных в операторе WAIT. Оператор ожидания Пример 5 с_1: PROCESS BEGIN WAIT ON a, b; IF a = 1' AND b = 1' THEN q <= 1'; p <='1'; ELSIF a = '0' AND b = '0' THEN q <= '0'; p<='1'; ELSE q <= '0'; p<=0'; END IF; END PROCESS с_1; Пример 6 с_2: PROCESS BEGIN WAIT UNTIL a = 1' AND b = 1' ; q <= 1'; p <='1';-- останов 1 WAIT UNTIL a = '0' AND b = '0' q <= '0'; p<='1'; WAIT ON a, b; q <= '0'; p<=0'; END PROCESS с_2; Пример 7 Generator: PROCESS BEGIN Clock<='0'; WAIT FOR 50 ns; clock <= not clock; END PROCESS Generator; Здесь описана реализация двух логических функций: q= a AND b; p= a XNOR b.

Последовательные операторы 13 Операторы повторения LOOP позволяют сокращенно записывать совокупности однотипных действий. BNF-форма оператора повторения имеет вид: ::= [ : ] [ ] LOOP « » END LOOP [ ]; :: = WHILE | FOR IN Последовательность операторов (здесь могут быть только последовательные операторы), заключенная между словами LOOP и END LOOP, называется телом оператора повторения или телом цикла. Операторы в теле цикла выполняются друг другом в порядке записи, причем такое выполнение повторяется многократно. Число повторений определяется итерационной схемой. Оператор повторения, не содержащий явного объявления итерационной схемы, предполагает бесконечное повторение последовательностей вложенных в него операторов. Операторы повторения

Последовательные операторы 14 Пример 8 ENTITY sequence_of_numbers IS GENERIC (max_value: integer :=63); PORT ( out_data: OUT integer RANGE 0 TO max_value; Clk : INOUT bit); END sequence_of_numbers; ARCHITECTURE behavior OF sequence_of_numbers IS BEGIN clock_generator: PROCESS BEGIN clk<='0'; LOOP WAIT FOR 50 ns; clk<= not elk; END LOOP; ЕND PROCESS clock_generator; execute: PROCESS VARIABLE int_state: integer RANGE 0 TO max_value:=0; BEGIN Out_data<=0; LOOP WAIT UNTIL (clk=1' and elk'event) IF (int_state=max value) THEN int_state:=0; ELSE int_state:=int_state+1; END IF; out_data<= int_state; END LOOP; END PROCESS execute; END behavior; Операторы повторения Пример 8 представляет описание двух процессов, каждый из которых содержит бесконечный цикл. Процесс clock generator описывает устройство, непрерывно генерирующее последовательность прямоугольных импульсов. Процесс execute после начальной установки ждет положительный фронт импульса clk, и в ответ на это событие выдает на порт очередное значение.

Последовательные операторы 15 Пример 9 WHILE param>=0 LOOP Param :=; -- некоторое выражение, изменяющее Param END LOOP; Операторы повторения Оператор с ключевым словом WHILE обязательно содержит в теле цикла операторы, изменяющие описанное в итерационной схеме условие. Операторы цикла повторяются, пока при вычислении условия не получается значения FALSE. Условие проверяется каждый раз перед исполнением тела цикла.

Последовательные операторы 16 Пример 10 ENTTITY delayer IS PORT (clk, din:IN std_logic; dout:out std_logic); END delayer; ARCHITECTURE test OF delayer IS SIGNAL shift: std_logic_vector (6 DOWNTO 0); BEGIN PROCESS (clk) VARIABLE i: integer RANGE 7 DOWNTO 0; BEGIN IF clk='1' THEN shift(0)<=din; FOR i IN 1 TO 6 LOOP shift(i)<= shift(i-1); END LOOP; dout<=shift(6); END IF; END PROCESS; END test; Операторы повторения Оператор повторения с ключевым словом FOR повторяется для всех значений переменной из заданного итерационной схемой диапазона. Отметим, что присвоенные в теле цикла значения переменных могут быть исходными данными для очередного цикла. Если же в цикле выполнено присвоение значения сигналу, то в следующих операторах тела и очередных повторениях того же цикла используются старые значения, если только тело цикла не содержит операторов ожидания. Листинга представляет описание синхронной линии задержки на время восьми тактов синхронизирующего импульса. При каждом переходе сигнала сlk в единичное состояние запоминающие элементы shift с первого по шестой переходят в состояние, соответствующее состоянию предыдущего элемента перед изменением сlk, а shift (0) принимает значение входного сигнала.

Последовательные операторы 17 Операторы повторения Кроме раздела "итерационная схема" порядок реализации повторений может задаваться дополнительными операторами: оператором перехода к следующему циклу NEXT и оператором выхода из цикла EXIT. Оператор NEXT блокирует исполнение всех последующих операторов в текущем цикле и обеспечивает автоматический переход к следующей итерации. BNF-форма оператора NEXT имеет вид: ::= [ : ] NEXT [ ] [ WHEN ] Фактически, конструкция M1: LOOP S1 NEXT WHEN В; S2 END LOOP; где S1 и S2 последовательности операторов, а В логическое выражение, эквивалентна M1: LOOP S1 IF not В THEN S2 ЕND LOOP;

Последовательные операторы 18 Операторы повторения Оператор EXIT прекращает исполнение не только текущего цикла, но и всех последующих циклов, заданных итерационной схемой исполняемого опера­тора. BNF-форма оператора EXIT имеет вид: :: = [ : ] EXIT [ ] [ WHEN ] Например, оператор вида LOOP S1 -- оператор S1 меняет значения аргументов выражения В EXIT WHEN В S2 END LOOP; эквивалентен B= TRUE; WHILE not В LOOP S1 IF not В THEN S2 END LOOP;

Последовательные операторы 19 Пример 11 m1: LOOP S11 m2: LOOP S21 m3: LOOP S31 ……………….. mk: LOOP Sk1 NEXT m2 WHEN B; Sk2 END LOOP mk; ……………….. S32 END LOOP m3; S22 END LOOP m2; S12 END LOOP m1; Операторы повторения Необязательная метка в операторах NEXT и EXIT используется при записи вложенных циклов. Такая метка указывает, что прерывается не только данный цикл, но и все иерархически предшествующие ему циклы, вплоть до цикла, оператор которого помечен этой меткой. Рассмотрим в качестве примера совокупность вложенных операторов повторения, представленных в примере 11. Здесь цикл, помеченный m1, содержит две последовательности операторов S11 и S12, между которыми включен оператор повторения, помеченный m2. И далее для последующих уровней вложения, mi - это метка уровня, a Si1 и Si2 - последовательности операторов, вложенных в оператор повторения i-го уровня. Если при вычислении условия B получено значение TRUE, прерывается исполнение циклов предыдущих уровней вложения вплоть до m2, т. е. следующей будет выполняться совокупность операторов S12. Если B = FALSE, то циклы будут завершаться "обычным образом" при возникновении условий, заданных итерационными схемами.

Последовательные операторы 20 Оператор проверки Оператор проверки ASSERT относится к категории конструкций, не подлежа­щих реализации в аппаратуре. Оператор служит для выявления специфических ситуаций, которые могут возникать в процессе компиляции и моделирования (т. е. программной интерпретации описания проекта), и выдачи в этих ситуациях сообщения разработчику. Синтаксис оператора проверки определен следующим образом: ::= ASSERT [ REPORT ] [ SEVERITY ]; При выполнении этого оператора в процессе моделирования проверяется условие и, если получено значение TRUE, выполняется переход к следующему оператору программы. В противном случае на терминал выводится строка сообщения. Если опция "REPORT " отсутствует, выдается стандартное сообщение "Assertion violation" (нарушение условий проверки). После этого поведение моделировщика определяется значением уровня важности. Уровень важности - это выражение (обычно константа) типа SEVERITY_LEVEL. Напомним, что данные этого типа могут принимать четыре значения, причем действия, которые выполняются при значении булевского выражения FALSE задаются экспериментатором как опции симулятора. По умолчанию (т. е. при отсутствии в тексте указания важности) подразумевается уровень ERROR. Следующий пример иллюстрирует введение сигнализации о возникновении при моделировании недопустимой ситуации - одновременной подачи на входы R и S триггера сигналов логической единицы: ASSERT R='1' NAND S='1'; Отсутствие в этой записи ключевых слов REPORT и SEVERITY означает, что используются значения по умолчанию. То есть, если при моделировании возникнет ситуация, когда сигналы R и S одновременно установлены в единицу, на терминал выводится строка "Assertion violation", и моделирование прекращается.

СПАСИБО ЗА ВНИМАНИЕ