Вы находитесь на странице: 1из 24

Явной задание процесса

(Explicit Process Statement)


„ Процесс может быть
– Подразумеваемым
-- явное задание процесса
процессом - Implied Processes PROCESS (sensitivity_list)
– Явным процессом - Explicit Constant Declarations
Processes Type Declarations
„ Подразумеваемый процесс Variable Declarations
содержит
BEGIN
– параллельные операторы
задания сигнала -- Sequential statement #1;
-- ……..
-- Sequential statement #N ;
„ Явный процесс содержит END PROCESS;
– Последовательные
операторы задания сигнала

Copyright © 2003 Тренинг партнер фирмы Altera® в России


1 Санкт-Петербург Автор Антонов А.П.
Выполнение операторов процесса
„ Выполнение операторов процесса
продолжается до тех пор пока не
PROCESS (a,b)
будет прервано оператором WAIT BEGIN
или списком чувствительности --sequential statements
(Sensitivity List) процесса
– Список чувствительности END PROCESS;
подразумевает наличие оператора
в конце процесса
– Процесс может иметь насколько PROCESS
явных операторов
BEGIN
– Процесс не может содержать список
чувствительности и явный оператор -- sequential statements
WAIT
WAIT ON (a,b) ;
Ö Note: система синтеза накладывает END PROCESS;
ограничения на использование
оператора WAIT и списка
чувствительности процесса

Copyright © 2003 Тренинг партнер фирмы Altera® в России


2 Санкт-Петербург Автор Антонов А.П.
Два типа процессов
• комбинационный - Combinatorial Process
– синтезируется комбинационная схема. a
Все входы которой должны быть указаны c
в списке чувствительности процесса b
• PROCESS(a, b, sel)
sel

• последовательностный - Sequential Process


d D Q q
– синтезируется схема с памятью.
В списке чувствительности процесса clk
указываются тактовые и управляющие ENA

сигналы CLRN

clr
•PROCESS(clr, clk)

Copyright © 2003 Тренинг партнер фирмы Altera® в России


3 Санкт-Петербург Автор Антонов А.П.
Использование нескольких процессов

A „ Архитектурное тело
R может иметь
Process 1
C Sequential
несколько явно
H Statement заданных процессов
I
T „ Каждый процесс
Signals Signals
E выполняется
C параллельно с
T другими процессами
U Process N
R
Sequential „ Однако внутри
Statement
E процесса операторы
• Describes the Functionality of Design выполняются
последовательно

Copyright © 2003 Тренинг партнер фирмы Altera® в России


4 Санкт-Петербург Автор Антонов А.П.
VHDL модель – параллельное выполнение
процессов
LIBRARY IEEE; • процессы выполняются параллельно, поэтому
USE IEEE.std_logic_1164.all;
последовательность, в которой указаны процессы
ENTITY if_case IS в архитектурном теле, не имеет значения
PORT ( a, b, c, d : IN STD_LOGIC;
sel : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
y, z : OUT STD_LOGIC); case_label: PROCESS(a, b, c, d, sel)
END if_case; BEGIN
CASE sel IS
ARCHITECTURE logic OF if_case IS WHEN "00" =>
BEGIN z <= a;
if_label: PROCESS(a, b, c, d, sel) WHEN "01" =>
BEGIN z <= b;
IF sel="00" THEN •Внутри процесса WHEN "10" =>
y <= a; операторы выполняются z <= c;
ELSIF sel="01" THEN WHEN "11" =>
y <= b; последовательно z <= d;
ELSIF sel="10" THEN WHEN OTHERS =>
y <= c; z <= '0';
ELSE END CASE;
y <= d; END PROCESS case_label;
END IF; END logic;
END PROCESS if_label;
Copyright © 2003 Тренинг партнер фирмы Altera® в России
5 Санкт-Петербург Автор Антонов А.П.
Эквивалентные проекты
LIBRARY IEEE; LIBRARY IEEE;
USE IEEE.std_logic_1164.all; USE IEEE.std_logic_1164.all;
ENTITY simp IS ENTITY simp_prc IS
PORT(a,b : IN STD_LOGIC;
PORT(a, b : IN STD_LOGIC;
y : OUT STD_LOGIC);
y : OUT STD_LOGIC); END simp_prc;
END simp; ARCHITECTURE logic OF simp_prc IS
ARCHITECTURE logic OF simp IS SIGNAL c : STD_LOGIC;
SIGNAL c : STD_LOGIC;
BEGIN
BEGIN process1: PROCESS(a, b)
BEGIN
c <= a and b;
c <= a and b;
END PROCESS process1;
y <= c; process2: PROCESS(c)
BEGIN
END logic; y <= c;
END PROCESS process2;
END logic;
• c and y обновляются по окончании процессов в одном цикле моделирования
Copyright © 2003 Тренинг партнер фирмы Altera® в России
6 Санкт-Петербург Автор Антонов А.П.
Объявление переменных - Variable

„ Переменные (Variables) объявляются внутри процессов


„ Объявление переменных (Variable Declaration)
VARIABLE <Name> : <DATA_TYPE> := <Value>;
Variable Temp : Std_logic_vector (7 Downto 0);
„ Оператор присвоения значения переменной: :=
„ Значение переменной обновляется в момент присвоения

Temporary Storage

No Delay
Copyright © 2003 Тренинг партнер фирмы Altera® в России
7 Санкт-Петербург Автор Антонов А.П.
Присвоение значений переменным

VARIABLE temp : STD_LOGIC_VECTOR (7 downto 0);

„ Все биты:
Temp := “10101010”;
Temp := X”aa” ; (1076-1993)
„ Один бит:
Temp(7) := ‘1’;
„ Набор битов:
Temp (7 downto 4) := “1010”;
„ Один бит: Single-quote (‘)
„ Набор битов: Double-quote (“)

Copyright © 2003 Тренинг партнер фирмы Altera® в России


8 Санкт-Петербург Автор Антонов А.П.
Область действия сигналов и
переменных

ARCHITECTURE
Объявляются вне
{SIGNAL Declarations} процесса
(могут использоваться
label1: PROCESS во всех процессах)
{VARIABLE Declarations}

label2: PROCESS Объявляются внутри


{VARIABLE Declarations} процесса
(могут использоваться
только в рамках своего
процесса)

Copyright © 2003 Тренинг партнер фирмы Altera® в России


9 Санкт-Петербург Автор Антонов А.П.
Анализ - сигналов и переменных

SIGNALS ( <= ) VARIABLES ( := )

ASSIGN assignee <= assignment assignee := assignment

UTILITY Represent Circuit Represent Local


Interconnect Storage

SCOPE Global Scope Local Scope


(Communicate Between (Inside PROCESS)
PROCESSES)
BEHAVIOR Updated at End of Updated Immediately
Process Statement (New Value Available)
(New Value Not Available)

Copyright © 2003 Тренинг партнер фирмы Altera® в России


10 Санкт-Петербург Автор Антонов А.П.
Пример использования переменных
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;

ENTITY var IS
PORT (a, b : IN STD_LOGIC;
y : OUT STD_LOGIC);
END var;

ARCHITECTURE logic OF var IS


BEGIN

PROCESS (a, b)
VARIABLE c : STD_LOGIC; Объявление переменной
BEGIN
c := a AND b; Присвоение значения переменной

y <= c;
Значение переменной
Присваивается сигналу
END PROCESS;
END logic;

Copyright © 2003 Тренинг партнер фирмы Altera® в России


11 Санкт-Петербург Автор Антонов А.П.
Последовательные операторы
(Sequential Statements)

„ Последовательные операторы
– IF-THEN Statement
– CASE Statement
– Looping Statements

Copyright © 2003 Тренинг партнер фирмы Altera® в России


12 Санкт-Петербург Автор Антонов А.П.
Оператор If-then
„ Формат : „ пример:
IF <condition1> THEN PROCESS(sela, selb, a, b, c)
{sequence of statement(s)} BEGIN
ELSIF <condition2> THEN IF sela=‘1’ THEN
{sequence of statement(s)} q <= a;
. ELSIF selb=‘1’ THEN
. q <= b;
ELSE ELSE
{sequence of statement(s)} q <= c;
END IF; END IF;
END PROCESS;
c
b q
a
selb
Copyright © 2003 Тренинг партнер фирмы Altera® в России
13 Санкт-Петербург Автор Антонов А.П. sela
Оператор If-then

„ Условия оцениваются последовательно


– Внутренне присущ приоритет (Prioritization)
„ Первое истинное условие приводит к выполнению
соответствующей данному условию
последовательности операторов
„ Если не выполнено ни одно условие, то
выполняется последовательность операторов,
соответствующая ключевому слову “ELSE”

Copyright © 2003 Тренинг партнер фирмы Altera® в России


14 Санкт-Петербург Автор Антонов А.П.
Оператор If-then

„ Соответствие с условным оператором назначения

Подразумеваемый процесс Implied Process Явный процесс Еxplicit Process

q <= a WHEN sela = ‘1’ ELSE PROCESS(sela, selb, a, b, c)


b WHEN selb = ‘1’ ELSE
BEGIN
c;
IF sela=‘1’ THEN
q <= a;
ELSIF selb=‘1’ THEN
c q <= b;
b ELSE
q q <= c;
a
selb END IF;
sela END PROCESS;

Copyright © 2003 Тренинг партнер фирмы Altera® в России


15 Санкт-Петербург Автор Антонов А.П.
Оператор Case
„ Формат: „ Пример:
CASE {expression} IS PROCESS(sel, a, b, c, d)
WHEN <condition1> => BEGIN
{sequence of statements} CASE sel IS
WHEN <condition2> => WHEN “00” =>
{sequence of statements}
q <= a;
WHEN “01” =>
. q <= b;
. WHEN “10” =>
WHEN OTHERS => -- (optional) q <= c;
WHEN OTHERS =>
{sequence of statements}
q <= d;
END CASE;
END CASE;
END PROCESS;
a
b q
c
d
Copyright © 2003 Тренинг партнер фирмы Altera® в России
16 Санкт-Петербург Автор Антонов А.П. sel
2
Оператор Case

„ Все возможные значения оцениваются


одновременно
– No Prioritization
„ Все возможные варианты значений должны быть
перебраны
„ Ключевые слова WHEN OTHERS позволяют
задать все неуказанные ранее варианты значений

Copyright © 2003 Тренинг партнер фирмы Altera® в России


17 Санкт-Петербург Автор Антонов А.П.
Оператор Case
„ Соответствие с оператором назначения сигнала с выбором (Selected
Signal Assignment)

Подразумеваемый процесс Implied Process Явный процесс Еxplicit Process

WITH sel SELECT PROCESS(sel, a, b, c, d)


q <= a WHEN “00”, BEGIN
b WHEN “01”, CASE sel IS
c WHEN “10”, WHEN “00” =>
d WHEN OTHERS;
q <= a;
WHEN “01” =>
q <= b;
a WHEN “10” =>
b q q <= c;
c WHEN OTHERS =>
d q <= d;
sel END CASE;
2
END PROCESS;
Copyright © 2003 Тренинг партнер фирмы Altera® в России
18 Санкт-Петербург Автор Антонов А.П.
Задание №5
„ Используя сигналы для иерархического описания логических функций, на базе
комбинационного процесса, создать текстовые описания для КНФ представления
логической функции 5 переменных из задания №2:
– Для каждого сигнала в иерархии описаний создать отдельный процесс (в списке
чувствительности каждого процесса только аргументы, на базе которых формируется значение
сигнала)
– Для описания иерархически представленной логической функции использовать только один
процесс (в списке чувствительности должны быть аргументы логической функции и сигналы,
используемые при иерархическом описании)

„ реализовать в пакете Quartus как отдельные проекты:


– Тип данных, используемый в проектах – std_logic
– каждый проект реализовать в отдельной папке
– осуществить ввод проекта в текстовом виде
– осуществить компиляцию проекта
– с помощью RTL viewer проанализировать и отобразить в отчете синтезированную пакетом
схему.
– Осуществить функциональное моделирование логической функции на основе теста,
созданного в задании №2.
Ожидаемые результаты:
• Отчет, в который включены результаты выполнения всех указанных выше пунктов.
• созданные проекты.

Copyright © 2003 Тренинг партнер фирмы Altera® в России


19 Санкт-Петербург Автор Антонов А.П.
Эквивалентные проекты
LIBRARY IEEE; LIBRARY IEEE;
USE IEEE.std_logic_1164.all; USE IEEE.std_logic_1164.all;
ENTITY simp IS ENTITY simp_prc IS
PORT(a,b : IN STD_LOGIC;
PORT(a, b : IN STD_LOGIC;
y : OUT STD_LOGIC);
y : OUT STD_LOGIC); END simp_prc;
END simp; ARCHITECTURE logic OF simp_prc IS
ARCHITECTURE logic OF simp IS SIGNAL c : STD_LOGIC;
SIGNAL c : STD_LOGIC;
BEGIN
BEGIN process1: PROCESS(a, b)
BEGIN
c <= a and b;
c <= a and b;
END PROCESS process1;
y <= c; process2: PROCESS(c)
BEGIN
END logic; y <= c;
END PROCESS process2;
END logic;
• c and y обновляются по окончании процессов в одном цикле моделирования
Copyright © 2003 Тренинг партнер фирмы Altera® в России
20 Санкт-Петербург Автор Антонов А.П.
Эквивалентные проекты
LIBRARY IEEE; LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
USE IEEE.std_logic_1164.all;
ENTITY simp_prc IS
ENTITY simp IS PORT(a, b : IN STD_LOGIC;
PORT(a, b : IN STD_LOGIC; y: OUT STD_LOGIC);
y : OUT STD_LOGIC); END simp_prc;
END simp; ARCHITECTURE logic OF simp_prc IS
ARCHITECTURE logic OF simp IS SIGNAL c: STD_LOGIC;
SIGNAL c : STD_LOGIC;
BEGIN BEGIN
PROCESS(a, b,с)
BEGIN
c <= a and b; c <= a and b;
y <= c;
y <= c; END PROCESS;
END logic;
END logic;

Copyright © 2003 Тренинг партнер фирмы Altera® в России


21 Санкт-Петербург Автор Антонов А.П.
Задание №6
„ Используя переменные для иерархического описания логических
функций, на базе комбинационного процесса, создать текстовые
описания для КНФ представления логической функции 5
переменных из задания №2:
„ реализовать в пакете Quartus как отдельные проекты:
– Тип данных, используемый в проектах – std_logic
– каждый проект реализовать в отдельной папке
– осуществить ввод проекта в текстовом виде
– осуществить компиляцию проекта
– с помощью RTL viewer проанализировать и отобразить в отчете
синтезированную пакетом схему.
– Осуществить функциональное моделирование логической функции на
основе теста, созданного в задании №2.
Ожидаемые результаты:
• Отчет, в который включены результаты выполнения всех
указанных выше пунктов.
• созданные проекты.

Copyright © 2003 Тренинг партнер фирмы Altera® в России


22 Санкт-Петербург Автор Антонов А.П.
Пример использования переменных
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;

ENTITY var IS
PORT (a, b : IN STD_LOGIC;
y : OUT STD_LOGIC);
END var;

ARCHITECTURE logic OF var IS


BEGIN

PROCESS (a, b)
VARIABLE c : STD_LOGIC; Объявление переменной
BEGIN
c := a AND b; Присвоение значения переменной

y <= c;
Значение переменной
Присваивается сигналу
END PROCESS;
END logic;

Copyright © 2003 Тренинг партнер фирмы Altera® в России


23 Санкт-Петербург Автор Антонов А.П.
Задание №7
„ Логическую функцию 4 переменных из задания №1 реализовать на
базе комбинационного процесса:
– Используя оператор case
– Используя оператор IF
„ реализовать в пакете Quartus как отдельные проекты:
– Тип данных, используемый в проектах – std_logic
– каждый проект реализовать в отдельной папке
– осуществить ввод проекта в текстовом виде
– осуществить компиляцию проекта
– с помощью RTL viewer проанализировать и отобразить в отчете
синтезированную пакетом схему.
– Осуществить функциональное моделирование логической функции на
базе тестов, созданных в упражнении№1.
Ожидаемые результаты:
• Отчет, в который включены результаты выполнения всех
указанных выше пунктов.
• созданные проекты.

Copyright © 2003 Тренинг партнер фирмы Altera® в России


24 Санкт-Петербург Автор Антонов А.П.