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

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



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

ОСНОВЫ ЯЗЫКА VHDL 1. Описание типовых дискретных устройств 2 Комбинационные логические схемы Представление функции в форме бинарного дерева решений основано.
ОСНОВЫ ЯЗЫКА VHDL 1. Описание цифровых автоматов 2 Общие сведения об автоматах Устройства, содержащие элементы памяти (ЭП), имеют некоторое внутреннее.
Презентация на тему: «Программирование Разветвляющихся структур». Составила: учитель информатики Чура Н.А. 1.
ОСНОВЫ ЯЗЫКА VHDL 1. Структурное представление проекта 2 Язык VHDL предоставляет возможность структуризации описания так называемые структурные архитектурные.
ЦИКЛИЧЕСКИЙ АЛГОРИТМ Цели: -Познакомиться с понятием циклического алгоритма. -Освоить языковые средства для реализации циклических алгоритмов.
Тема 8 Мультиплексоры и демультиплексоры. Универсальные логические модули на основе мультиплексоров. Компараторы.
Ошибки при программировании линейных вычислительных процессов.
Множественный тип данных Множество в языке Паскаль – это ограниченный набор различных элементов одного (базового) типа, которые рассматриваются как единое.
Лекция 4 Программирование на Паскале. Элементы языка Турбо Паскаль 7.0. Типы данных. Управляющие конструкции.
ЗАПИСЬ ВСПОМОГАТЕЛЬНЫХ АЛГОРИТМОВ НА ЯЗЫКЕ Паскаль НАЧАЛА ПРОГРАММИРОВАНИЯ.
Условный оператор Структура ветвления. Условный оператор реализует выполнение определённых команд при условии, что некоторое логическое выражение (условие)
При решении многих задач приходится обрабатывать большое количество однотипных данных. Для хранения этих данных пришлось бы вводить большое количество.
Процедуры и функции Вербицкая Ольга Владимировна, Заозерная школа 16.
Тест классы По программированию Pascal.
Учитель НСШ Кумакшев А.Н, учитель БСШ2 Вахмистров Г.Г. Элективный курс по информатике «Процедуры и функции на языке Pascal».
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 5.
Операторы языка Паскаль Условные операторы. Оператор условия ЕСЛИ (if) Оператор условия ВЫБОР (case) Условные операторы предназначены для выбора к исполнению.
«Обработка массивов данных» Delphi. Тема 4:4: «Обработка массивов данных» План темы: l1l1. Понятие массива данных. l2l2. Описание массива в программе.
Транксрипт:

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

Параллельные операторы 2 Параллельные операторы это такие, каждый из которых выполняется при любом изменении сигналов, используемых в качестве его исходных данных. Результаты исполнения оператора доступны для других параллельных операторов не ранее, чем будут выполнены все операторы, инициализированные общим событием (а может быть и позже, если присутствуют выражения задержки). В языке VHDL к классу параллельных операторов относятся: :: = | Оператор процесса PROCESS уже рассматривался. Оператор процесса начинает исполняться при изменении сигналов, входящих в список чувствительности (при отсутствии такого списка - безусловно после выполнения всех вложенных операторов), а результаты его исполнения доступны другим параллельным операторам только после исполнения всех операторов, инициируемых теми же событиями, в том числе процессов.

Параллельные операторы 3 Параллельное присваивание Параллельное присваивание определено в трех различных формах: ::= [ : ] | [ : ] По синтаксису и правилам исполнения безусловное параллельное присваивание совпадает с последовательным присваиванием сигналу. Варианты различаются по локализации в программе и характеризуются различными условиями исполнения. Безусловное параллельное присваивание. Основные отличия от оператора последовательного присваивания: параллельное присваивание локализуется в общем разделе архитектурного тела, а последовательное - только в теле процесса; последовательное присваивание сигналу выполняется после того, как инициировано исполнение процесса и выполнены все предшествующие операторы в теле процесса; оператор параллельного присваивания выполняется сразу (с точки зрения модельного времени) после изменения сигналов в правой части этого оператора.

Параллельные операторы 4 Параллельное присваивание ::= [ : ] | [ : ] Условное присваивание и присваивание по выбору. Операторы во многом сходны с условным оператором и оператором выбора. В отличии от условного оператора и оператора выбора, в которых условие может задавать исполнение последовательности действий, в операторах присваивания возможно только присвоение одного значения. ::= ] « WHEN ELSE » ; Пример 1. Двухвходовой буфер с тремя состояниями на выходе Z_out <= TRANSPORT x0 AFTER 2 ns WHEN (adr = '0' AND en =1') ELSE x1 AFTER 2 ns WHEH (adr =1' AND en ='1') ELSE 'Z' AFTER 5 ns; :: = WITH SELECT ] « WHEN, » WHEN ; Пример 2. Двухвходовой буфер с тремя состояниями на выходе WITH a & b SELECT Z_out <= TRANSPORT x0 AFTER 2 ns WHEN "01", x1 AFTER 2 ns WHEN 11", 'Z' AFTER 5 ns WHEN OTHERS;

Параллельные операторы 5 Параллельное присваивание Важно отметить, что если условный оператор IF и оператор выбора CASE не могут выполняться над данными, вырабатываемыми модулями, представленными различными операторами процесса. Пусть, например, три блока (процесса) работают параллельно с выходом на общую шину через буфер с тремя состояниями. Причем выбор подключаемого модуля задается сигналом, подаваемым на порт Chanel_select. Программный модуль, описывающий такой буфер, представлен в примере 3. Пример 3 ENTITY three_charme1 IS PORT ( data_in: IN integer; Channel_select: IN integer RANGE 1 TO 3; z: OUT integer); END three_channel; ARCHITECTURE skeleton OF three_channel IS. SIGNAL datal, data2, data3 : integer; BEGIN WITH Channel_select SELECT z<= data1 WHEN 1; data2 WHEN 2; data3 WHEN 3; 'z' WHEN OTHERS; PROCESS….. BEGIN data1<=..... END PROCESS; PROCESS BEGIN data2<=….. END PROCESS; PROCESS BEGIN data3<=….. END PROCESS; END skeleton;

Параллельные операторы 6 Оператор блока Оператор блока BLOCK, подобно оператору PROCESS, является составным оператором, тело которого включаёт несколько операторов, но, в данном случае, параллельных. Эти операторы инициируются не по последовательному, а по событийному принципу, а результаты их исполнения становятся доступны другим операторам как включенным в блок, так и размещенным в других блоках или "индивидуально", только после исполнения всех операторов, инициирован­ных одним событием. Объединение операторов в блоки обеспечивает следующие возможности: структуризация текста описания, т.е. возможность явного и наглядного выделения совокупности операторов, описывающих законченный функциональный узел; возможность объявления в блоке локальных типов, сигналов, подпрограмм и некоторых других локальных понятий; возможность приписывания всем или некоторым операторам блока общих, условий инициализации. ::= : BLOCK [ ( охранное выражение) ] [ IS ] [ ] BEGIN END BLOCK [ ];

Параллельные операторы 7 Оператор блока Охранное выражение - это любое выражение логического типа, аргументами которого являются сигналы. Любое изменение сигналов, входящих в охранное выражению, вызывает вычисление значения этого выражения и присвоение полученного значения предопределенной переменной GUARD. Область действия переменной GUARD - все тело блока, и она может использоваться как обычная логическая переменная во вложенных операторах блока. Например, узел выборки данных из тридцатидвухразрядного регистра на восьмиразрядную линию, в котором транслируется байт, указанный двухразрядным кодом номера byte_sel может быть представлен таким блоком: Пример 4 Select_byte: BLOCK (select='1' AND read=1) IS BEGIN dbus<= reg (7 DOWNTO 0) WHEN GUARD AND byte_sel="00" ELSE reg (15 DOWNTO 0) WHEN GUARD AND byte_sel=01" ELSE reg (23 DOWNTO 16) WHEN GUARD AND byte_ sel=10" ELSE reg (31 DOWNTO 24) WHEN GUARD AND byte_ sel=11" ELSE "ZZZZZZZZ"; END BLOCK select_byte;

Параллельные операторы 8 Оператор блока Охраняемый оператор присваивания использует значение переменной GUARD без явного указания условия в программе. Если GUARD =0, 'то исполнение операторов присваивания, содержащих ключевое слово GUARDED, в таком блоке запрещено. Например, два модуля, подключенные к общей шине, могут быть представлены в одном архитектурном теле таким образом, как в примере 5. Пример 5 ARCHITECTURE guard_example ОF two_block IS SIGNAL data_bus: Std_logic_vector (N-1 DOWNTO 0); -- n определяется в разделе GENERIC проекта two_block; BEGIN unit1: BLOCK ( adr='0 AND read_data='1') SIGNAL data0 : Std_logic_vector (N-1 DOWNTO 0); BEGIN data_bus PROCESS BEGIN END PROCESS; END BLOCK unit1;;. unit2: BLOCK ( adr='1 AND read_data='1') SIGNAL data1: Std_logic_vector (N-1 DOWNTO 0); BEGIN data_bus PROCESS BEGIN END PROCESS; END BLOCK unit2;

Описание типовых дискретных устройств 9 Комбинационные логические схемы Известно много способов задания логической функции, из которых наибольшее распространение получили: алгебраическое представление; табличное представление; представление через бинарную декомпозицию; декомпозиция в априорно заданном базисе функций меньшего числа аргументов. Часто способ записи логических функций связан просто с опытом и личными предпочтениями разработчика. Язык VHDL представляет возможности выбора любой исходной формы задания без необходимости ручного перевода из одной формы в другую.

Описание типовых дискретных устройств 10 Комбинационные логические схемы Реализация комбинационной логической схемы на основе алгебраической формы записи логической функции интерпретируется оператором присваивания, в правой части которого записывается эквивалентное логическое выражение. Один из простейших способов описания - параллельные операторы присваивания. Программа (пример 6) представляет описание комбинационной логической схемы с двумя выходами, приведенной на рисунке, с использованием параллельных присваиваний. Пример 6 ENTITY simple_logic IS PORT (a,b,c,d: IN std_logic; out1, out2: OUT std_logic); END simple_logic; ARCHITECTURE concurrent OF simple_logic IS SIGNAL a_and_b: std_logic; BEGIN out 1 <= a_and_b OR ( с AND d AND not b) OR ( not a AND not b AND d) ; out2<= a_and_b OR (not a AND с AND d) OR (a AND not b AND not d) OR (b AND not с AND d); a_and_b <= a AND b; END concurrent;

Описание типовых дискретных устройств 11 Комбинационные логические схемы Можно применять также и последовательную форму записи правила функционирования, используя оператор процесса. Архитектурное тело описанного в этой форме устройства, изображенного на рисунке, представлено в примере 7. Здесь важно отметить, что все входные сигналы комбинационной схемы должны быть включены в список чувствительности процесса с тем, чтобы любое их изменение вызывало исполнение оператора присваивания. Кроме того, в данном случае недопустимо a_and_b декларировать как сигнал. Это обязательно переменная, причем ее вычисление задается оператором, предшествующим операторам вычисления результирующих сигналов. В противном случае наблюдается некорректное представление поведения, заключающееся в том, что используются значения не непосредственно полученные в процессе текущего исполнения оператора PROCESS, а значения, вычисленные ранее после предыдущего изменения одного из входных сигналов. Пример 7 ARCHITECTURE sequential OF simple_logic IS -- SIGNAL a and b: std_logic; -- недопустимо в данном контексте BEGIN PROCESS (a,b,c,d) VARIABLE a_and_b: std_logic; BEGIN a_and_b : = a and b; out1<=a_and_b OR ( с AND d AND not b) OR ( not a AND not b AND d); out2<=a_and_b OR (not a AND с AND d) OR (a AND not b AND not d) OR (b and not с and d); END PROCESS; END sequential;

Описание типовых дискретных устройств 12 Комбинационные логические схемы Если a_and_b это все-таки сигнал (например, необходимый для передачи информации другим операторам программы или на порты), то следует выделить его вычисление в отдельный процесс или параллельный оператор, как показано в примере 8. Пример 8 ARCHITECTURE two_processes OF simple_logic IS SIGNAL a_and_b: std_logic; BEGIN PROCESS (a,b) BEGIN a_and_b <= a and b; END PROCESS; PROCESS (a,b,c,d,a_and_b) BEGIN out1<=a_and_b OR (c AND d AND not b) OR (not a AND not b AND d); out2<=a_and_b OR (not a AND с AND d) OR (a AND not b AND not d) OR (b AND not с AND d); END PROCESS; END two_processes;

Описание типовых дискретных устройств 13 Комбинационные логические схемы Табличное представление логической функции можно отобразить в VHDL- программе несколькими способами. Первый способ состоит в представлении таблицы истинности логической функции в виде константного битового вектора, каждый i-й компонент которого представляет значения логической функции на наборе, численный эквивалент которого равен значению i. Очевидно, что "вычисление" функции сведется к выборке элемента массива, индекс которого равен численному эквиваленту входной кодовой комбинации. В функции conv_integer (vect), определенной в пакете std_logic_unsigned, аргумент относится к типу bit_vector или std_logic_vector произвольной длины, а возвращаемое значение - численный эквивалент двоичного кода аргумента (беззнаковое целое в диапазоне от 0 до 2 n -1, где n разрядность аргумента). В функции conv_std_logic_vector (arg1, n), определенной в пакете std_logic_arith, оба аргумента целые беззнаковые, а результат - n-разрядный двоичный код (std_logic_vector), являющийся двоичным эквивалентом arg1. Пример 9 содержит архитектурное тело, функционально соответствующее программе примера 6. В этом варианте результат определяется путем прямой выборки значения из таблицы по индексу, формируемому из входных сигналов, с помощью функции conv_integer. Пример 9 ARCHITECTURE table_ presentation OF simple_logic IS TYPE truth_table_4x1 IS ARRAY (0 TO 15) OF std_logic; CONSTANT FUNCTION1: truth_table_4x1 := ('0, '0, '0, '1', '0', '0', '0', '1',1, '0', '0, '1', 1', '1', '0', 1'); CONSTANT FUNCTION2: truth_table_4x1:= ('0, '1, '0, '1', '0', '0', '0', '1',1, '0', '0, '1', 1', '1', '0', 1'); SIGNAL digital_equivalent: integer RANGE 0 TO 15; BEGIN Digital_equivalent <= conv_integer (d & с & b & a) ; out1<= FUNCTION1 (digital_equivalent); out2<= FUNCTION2 (digital_equivalent); END table_presentation;

Описание типовых дискретных устройств 14 Комбинационные логические схемы Для выхода out1 устройства (см. рисунок) оператор присваивания по выбору, описывающий поведение сигнала во времени, может выглядеть следующим образом: Пример 10 v<=d & с & b & а; WITH v SELECT out1<='X, '0' AFTER 1 ns WHEN "0000", 'X', '0' AFTER 1 ns WHEN "0001", X', '0' AFTER 1 ns WHEN "0010", 'X', 1' AFTER 2 ns WHEN "0011", 'X', '0' AFTER 1 ns WHEN "0100", X', '0' AFTER 1 ns WHEN "0101", 'X', '0' AFTER 1 ns WHEN "0110", X', 1' AFTER 2 ns WHEN "0111", X', 1' AFTER 2 ns WHEN "1000", X', '0' AFTER 1 ns WHEN "1001", X '0' AFTER 1 ns WHEN "1010", 'X', 1' AFTER 2 ns WHEN "1011", X', '1' AFTER 2 ns WHEN "1100", 'X', '1' AFTER 2 ns WHEN "1101", X','0' AFTER 1 ns WHEN "1110", X', 1' AFTER 2 ns WHEN "1111", X' WHEN OTHERS; Применение оператора выбора может обеспечить более компактную запись Пример 11 v:=d & с & b & а; CASE v IS WHEN "0000" | "0001" | 0010" I "0100" I "0101 I "0110" I "1001" | "1010" I "1100" I "1110" =>out1<= 'X, '0' AFTER 1 ns; WHEN "0011 | "0111 I "1000 I "1011 I "1100 I "1101 I "1111" => out1<= 'X', '1' AFTER 2 ns; WHEN OTHERS => out1<= 'X'; END CASE; Такой оператор должен находиться в теле процесса, причем переменные d, с, b и а должны входить в список чувствительности этого процесса.

Описание типовых дискретных устройств 15 Комбинационные логические схемы Представление функции в форме бинарного дерева решений основано на последовательном переходе от представления функции большого числа переменных через суперпозицию функций меньшего числа переменных. Теоретической основой метода является разложение Шеннона: Тогда вычисление первого терма разложения записывается как одна возможная альтернатива условного оператора или условного присваивания, а вычисление другого - как противоположная: IF x1='0' THEN z ; ELSE z ; ЕND IF; Подформулы разложения могут быть, в свою очередь, далее разложены:

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