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

Циклы (LOOPS)

Бесконечный цикл (Infinite Loop)

Loops Infinitely Unless EXIT Statement Exists

While Loop

Проверяется условие выхода из цикла

For Loop

Итерационный цикл - Iteration Loop

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

в России

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

[loop_label]LOOP --sequential statement EXIT loop_label ; END LOOP;

WHILE <condition> LOOP --sequential statements END LOOP;

FOR <identifier> IN <range> LOOP --sequential statements END LOOP;

statements END LOOP; FOR <identifier> IN <range> LOOP -- sequential statements END LOOP;

FOR LOOP с использованием переменной

LIBRARY IEEE; USE IEEE.std_logic_1164.all; USE IEEE.std_logic_unsigned.all; ENTITY shift4 IS PORT ( shft_lft : in std_logic; d_in : in std_logic_vector(3 downto 0); q_out : out std_logic_vector(7 downto 0));

END shift4; ARCHITECTURE logic OF shift4 IS BEGIN

Объявление

переменной

shift4 IS BEGIN Объявление переменной PROCESS(d_in, shft_lft) VARIABLE shft_var :

PROCESS(d_in, shft_lft) VARIABLE shft_var : std_logic_vector(7 DOWNTO 0);

BEGIN

VARIABLE shft_var : std_logic_vector(7 DOWNTO 0); BEGIN shft_var(7 downto 4) := "0000"; shft_var(3 downto

shft_var(7 downto 4) := "0000"; shft_var(3 downto 0) := d_in;

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

в России

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

Инициализация переменной
Инициализация переменной
Инициализация переменной
Инициализация переменной
Инициализация переменной

Инициализация

Инициализация

переменной

2 Санкт - Петербург Автор Антонов А . П . Инициализация переменной

FOR LOOP с использованием переменной

IF shft_lft = '1' THEN

переменной IF shft_lft = '1' THEN Разрешает сдвиг влево FOR i IN 7 DOWNTO 4

Разрешает сдвиг влево

FOR i IN 7 DOWNTO 4 LOOP shft_var(i) := shft_var(i-4); END LOOP; shft_var(3 downto 0) := "0000";

ELSE

shft_var := shft_var;

END IF;

0) := "0000"; ELSE shft_var := shft_var; END IF; i – внутренний индекс цикла ( не

i внутренний индекс цикла (не требует объявления)

цикла ( не требует объявления ) Сдвиг влево на 4 разряда

Сдвиг влево на 4 разряда

) Сдвиг влево на 4 разряда Заполняет LSBs нулями Нет сдвига
) Сдвиг влево на 4 разряда Заполняет LSBs нулями Нет сдвига

Заполняет LSBs нулями

Нет сдвига

q_out <= shft_var;

END PROCESS; END logic;

сдвига q_out <= shft_var; END PROCESS; END logic; Значение переменной

Значение переменной присваивается сигналу в конце процесса.

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

в России

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

партнер фирмы Altera® в России 3 Санкт - Петербург Автор Антонов А . П .

Атрибуты (ATTRIBUTES)

<signal_name> : IN STD_LOGIC_VECTOR(7 DOWNTO 0)

‘HIGH - 7

‘LOW

‘RIGHT - 0 ‘LEFT - 7 ‘RANGE - 7 DOWNTO 0 ‘REVERSE RANGE - 0 TO 7

‘LENGTH - 8

- 0

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

в России

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

партнер фирмы Altera® в России 4 Санкт - Петербург Автор Антонов А . П .

FOR LOOP: счетчик единиц

LIBRARY IEEE; USE IEEE.std_logic_1164.all; USE IEEE.std_logic_unsigned.all; USE IEEE.std_logic_arith.all;

ENTITY bc IS PORT (invec: in std_logic_vector(31 downto 0); outvec: out std_logic_vector(7 downto 0));

END bc; ARCHITECTURE rtl OF bc IS BEGIN PROCESS(invec)

END bc; ARCHITECTURE rtl OF bc IS BEGIN PROCESS(invec) VARIABLE count: std_logic_vector(7 downto 0); Copyright ©

VARIABLE count: std_logic_vector(7 downto 0);

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

в России

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

Объявление

переменной

5 Санкт - Петербург Автор Антонов А . П . Объявление переменной

FOR LOOP: счетчик единиц

BEGIN

Count:=(others=>’0’);

FOR i IN invec’right TO Invec’left LOOP

IF (invec(i)/’0’) THEN

END IF; END LOOP;

count:=count+1;

(invec(i)/’0’) THEN END IF; END LOOP; count:=count+1; outvec<=count; END PROCESS; END rtl;

outvec<=count;

END PROCESS; END rtl;

count:=count+1; outvec<=count; END PROCESS; END rtl; Инициализация переменной i –

Инициализация переменной

i – внутренний индекс цикла изменяющий свое значение от 0 до 31.

Если текущий бит не равен нулю, то значение счетчика увеличивается на единицу.

увеличивается на единицу . Значение переменной

Значение переменной присваивается сигналу в конце процесса.

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

в России

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

партнер фирмы Altera® в России 6 Санкт - Петербург Автор Антонов А . П .

Два типа процессов

комбинационный - Combinatorial Process синтезируется комбинационная схема. Все входы которой должны быть указаны в списке чувствительности процесса

PROCESS(a, b, sel)

a

b

sel

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

PROCESS(clr, clk)

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

в России

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

d

clk

clr

в России 7 Санкт - Петербург Автор Антонов А . П . d clk clr c

c

D Q q ENA CLRN
D
Q
q
ENA
CLRN

Задание №8

Описать 3 разрядный дешифратор (3->8):

Используя условный оператора назначения сигнала

Используя оператор назначения сигнала с выбором.

Используя оператор case

Используя оператор IF

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

Тип данных, используемый в проектах – std_logic

каждый проект реализовать в отдельной папке

осуществить ввод проекта в текстовом виде

осуществить компиляцию проекта

с помощью RTL viewer проанализировать и отобразить в отчете синтезированную пакетом схему.

Осуществить сравнение аппаратных затрат на реализацию при использовании разных операторов.

Осуществить функциональное моделирование и привести результаты.

Ожидаемые результаты:

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

созданные проекты.

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

в России

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

партнер фирмы Altera® в России 8 Санкт - Петербург Автор Антонов А . П .

Задание №9

Описать 3 разрядный шифратор (8->3):

Используя условный оператора назначения сигнала

Используя оператор назначения сигнала с выбором.

Используя оператор case

Используя оператор IF

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

Тип данных, используемый в проектах – std_logic

каждый проект реализовать в отдельной папке

осуществить ввод проекта в текстовом виде

осуществить компиляцию проекта

с помощью RTL viewer проанализировать и отобразить в отчете синтезированную пакетом схему.

Осуществить сравнение аппаратных затрат на реализацию при использовании разных операторов.

Осуществить функциональное моделирование и привести результаты.

Ожидаемые результаты:

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

созданные проекты.

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

в России

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

партнер фирмы Altera® в России 9 Санкт - Петербург Автор Антонов А . П .

Задание №10

Описать мультиплексор 4 ->1( числа 8-разрядные):

Используя условный оператора назначения сигнала

Используя оператор назначения сигнала с выбором.

Используя оператор case

Используя оператор IF

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

Тип данных, используемый в проектах – std_logic

каждый проект реализовать в отдельной папке

осуществить ввод проекта в текстовом виде

осуществить компиляцию проекта

с помощью RTL viewer проанализировать и отобразить в отчете синтезированную пакетом схему.

Осуществить сравнение аппаратных затрат на реализацию при использовании разных операторов.

Осуществить функциональное моделирование и привести результаты.

Ожидаемые результаты:

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

созданные проекты.

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

в России

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

фирмы Altera® в России 10 Санкт - Петербург Автор Антонов А . П .

Задание №11

Описать демультиплексор 1 ->4 ( числа 8-разрядные):

Используя условный оператора назначения сигнала

Используя оператор назначения сигнала с выбором.

Используя оператор case

Используя оператор IF

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

Тип данных, используемый в проектах – std_logic

каждый проект реализовать в отдельной папке

осуществить ввод проекта в текстовом виде

осуществить компиляцию проекта

с помощью RTL viewer проанализировать и отобразить в отчете синтезированную пакетом схему.

Осуществить сравнение аппаратных затрат на реализацию при использовании разных операторов.

Осуществить функциональное моделирование и привести результаты.

Ожидаемые результаты:

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

созданные проекты.

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

в России

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

фирмы Altera® в России 11 Санкт - Петербург Автор Антонов А . П .

Задание №12

Описать преобразователь кода двоичный ->семисегментный (числа от 0 до

9):

Используя условный оператора назначения сигнала

Используя оператор назначения сигнала с выбором.

Используя оператор case

Используя оператор IF

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

Тип данных, используемый в проектах – std_logic

каждый проект реализовать в отдельной папке

осуществить ввод проекта в текстовом виде

осуществить компиляцию проекта

с помощью RTL viewer проанализировать и отобразить в отчете синтезированную пакетом схему.

Осуществить сравнение аппаратных затрат на реализацию при использовании разных операторов.

Осуществить функциональное моделирование и привести результаты.

Ожидаемые результаты:

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

созданные проекты.

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

в России

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

фирмы Altera® в России 12 Санкт - Петербург Автор Антонов А . П .

Задание №13

Описать преобразователь кода двоичный ->двоично-десятичный ( двоичный код- 4 разряда, двоично-десятичный 5 разрядов):

Используя условный оператора назначения сигнала

Используя оператор назначения сигнала с выбором.

Используя оператор case

Используя оператор IF

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

Тип данных, используемый в проектах – std_logic

каждый проект реализовать в отдельной папке

осуществить ввод проекта в текстовом виде

осуществить компиляцию проекта

с помощью RTL viewer проанализировать и отобразить в отчете синтезированную пакетом схему.

Осуществить сравнение аппаратных затрат на реализацию при использовании разных операторов.

Осуществить функциональное моделирование и привести результаты.

Ожидаемые результаты:

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

созданные проекты.

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

в России

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

фирмы Altera® в России 13 Санкт - Петербург Автор Антонов А . П .

Задание №14

Описать компаратор на =, >, <:

Используя условный оператора назначения сигнала

Используя оператор IF

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

Тип данных, используемый в проектах – std_logic

каждый проект реализовать в отдельной папке

осуществить ввод проекта в текстовом виде

осуществить компиляцию проекта

с помощью RTL viewer проанализировать и отобразить в отчете синтезированную пакетом схему.

Осуществить сравнение аппаратных затрат на реализацию при использовании разных операторов.

Осуществить функциональное моделирование и привести результаты.

Ожидаемые результаты:

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

созданные проекты.

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

в России

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

фирмы Altera® в России 14 Санкт - Петербург Автор Антонов А . П .

Задание №15

Описать без знаковые сумматоры (8 разрядные), т.е. работающие только с положительными числами: простейший, с выходом переноса, с выходом и входом переноса.

Используя тип данных integer

Используя тип данных std_logic_vector

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

Тип данных, используемый в проектах – std_logic

каждый проект реализовать в отдельной папке

осуществить ввод проекта в текстовом виде

осуществить компиляцию проекта

с помощью RTL viewer проанализировать и отобразить в отчете синтезированную пакетом схему.

Осуществить сравнение аппаратных затрат на реализацию при использовании разных операторов.

Осуществить функциональное моделирование и привести результаты.

Ожидаемые результаты:

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

созданные проекты.

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

в России

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

фирмы Altera® в России 15 Санкт - Петербург Автор Антонов А . П .

Задание №16

Описать сумматоры (8 разрядные), работающие с положительными и отрицательными (представленными в доп.коде) числами: простейший, с выходом переноса\заема .

Используя тип данных integer

Используя тип данных std_logic_vector

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

Тип данных, используемый в проектах – std_logic

каждый проект реализовать в отдельной папке

осуществить ввод проекта в текстовом виде

осуществить компиляцию проекта

с помощью RTL viewer проанализировать и отобразить в отчете синтезированную пакетом схему.

Осуществить сравнение аппаратных затрат на реализацию при использовании разных операторов.

Осуществить функциональное моделирование и привести результаты.

Ожидаемые результаты:

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

созданные проекты.

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

в России

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

фирмы Altera® в России 16 Санкт - Петербург Автор Антонов А . П .

Два типа процессов

комбинационный - Combinatorial Process PROCESS(a, b, sel)

последовательностный - Sequential Process синтезируется схема с памятью. В списке чувствительности процесса указываются тактовые и управляющие сигналы

PROCESS(clr, clk)

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

в России

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

d

clk

clr

D Q q ENA CLRN
D
Q
q
ENA
CLRN

Триггер DFF (использование Clk’event and Clk=‘1’)

LIBRARY IEEE; USE IEEE.std_logic_1164.all; ENTITY dff_a IS PORT ( d : in std_logic; clk :
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
ENTITY dff_a IS
PORT ( d : in std_logic;
clk : in std_logic;
q
: out std_logic
);
END dff_a;
ARCHITECTURE behavior OF dff_a IS
BEGIN
PROCESS (clk)
BEGIN
IF clk'event and clk = '1' THEN
q
<= d;
END IF;
END PROCESS;
END behavior;

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

в России

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

d

clk

D

ENA

CLRN

Q

Автор Антонов А . П . d clk D ENA CLRN Q q clk’event and clk=‘1’

q

clk’event and clk=‘1’

clk имя тактового сигнала

‘event атрибут (Attribute), сигнализирует об изменении сигнала

clk=‘1’ определяет синхронизацию по переднему фронту тактового сигнала

синхронизацию по переднему фронту тактового сигнала –

Триггер DFF с асинхронным сбросом

LIBRARY IEEE; USE IEEE.std_logic_1164.all; USE IEEE.std_logic_unsigned.all;

ENTITY dff_clr IS

PORT (

d, clk : in std_logic; q : out std_logic ); END dff_clr;

clr : in bit;

ARCHITECTURE behavior OF dff_clr IS BEGIN PROCESS(clk, clr) BEGIN

IF clr = '0' THEN

 
 

q

<= '0';

ELSIF clk’event and clk=‘1’ THEN

q <= d;

END IF; END PROCESS; END behavior;

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

в России

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

d

clk

clr

D Q ENA CLRN
D
Q
ENA
CLRN

q

Проверка данного условия осуществляется до проверки переднего фронта тактового

сигнала. Следовательно асинхронный сброс имеет абсолютный приоритет

и не зависит от тактового сигнала

имеет абсолютный приоритет и не зависит от тактового сигнала

Сколько триггеров?

LIBRARY IEEE; USE IEEE.std_logic_1164.all;

 

USE IEEE.std_logic_unsigned.all; ENTITY reg1 IS

PORT ( d

: in STD_LOGIC;

clk

: in STD_LOGIC;

 

q

: out STD_LOGIC);

END reg1;

ARCHITECTURE reg1 OF reg1 IS SIGNAL a, b : STD_LOGIC; BEGIN PROCESS (clk) BEGIN IF clk’event and clk=‘1’ THEN

 

a

<= d;

 

b

<= a;

q

<= b;

END IF; END PROCESS; END reg1;

в России

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

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

Тренинг партнер фирмы Altera® 20 Санкт - Петербург Автор Антонов А . П .

Сколько триггеров?

Присвоение значения сигналу внутри оператора IF-THEN, в котором проверяется условие синхронизации, приводит к использованию триггера.

d

clk

 

a

 

b

D

Q

D

Q

 

D

Q

clk

ENA

clk

ENA

 
ENA CLRN
ENA
CLRN

CLRN

CLRN

  a   b D Q D Q   D Q clk ENA clk ENA  
  a   b D Q D Q   D Q clk ENA clk ENA  

q

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

в России

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

фирмы Altera® в России 21 Санкт - Петербург Автор Антонов А . П .

Сколько триггеров?

LIBRARY IEEE; USE IEEE.std_logic_1164.all; USE IEEE.std_logic_unsigned.all;

ENTITY reg1 IS PORT ( d

: in STD_LOGIC;

clk

: in STD_LOGIC;

q

: out STD_LOGIC);

END reg1; ARCHITECTURE reg1 OF reg1 IS SIGNAL a, b : STD_LOGIC; BEGIN PROCESS (clk) BEGIN IF clk’event and clk=‘1’ THEN

Присвоение значения сигналу вынесено из процесса

сигналу вынесено из процесса a <= d; b <= a; END IF; END PROCESS; q <=

a <= d;

b <= a;

END IF; END PROCESS;

a <= d; b <= a; END IF; END PROCESS; q <= b; END reg1; в

q <= b;

END reg1;

в России

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

22

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

Сколько триггеров?

d

clk

a D Q D Q clk ENA ENA CLRN CLRN
a
D
Q
D
Q
clk
ENA
ENA
CLRN
CLRN

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

в России

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

q

фирмы Altera® в России 23 Санкт - Петербург Автор Антонов А . П . q

Сколько триггеров?

LIBRARY IEEE; USE IEEE.std_logic_1164.all;

USE IEEE.std_logic_unsigned.all; ENTITY reg1 IS

PORT ( d

: in STD_LOGIC;

 

clk

: in STD_LOGIC;

q

: out STD_LOGIC);

END reg1;

ARCHITECTURE reg1 OF reg1 IS BEGIN PROCESS (clk)

VARIABLE a, b : STD_LOGIC; BEGIN IF clk’event and clk=‘1’ THEN

 
 

a

:= d;

b

:= a;

q

<= b;

END IF; END PROCESS; END reg1;

в России

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

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

Используются переменные

24 Санкт - Петербург Автор Антонов А . П . Используются переменные

Сколько триггеров?

Значения переменным присваиваются сразу Значения сигналов изменяются по переднему фронту тактового сигнала

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

d

clk

D

ENA

CLRN

Q

партнер фирмы Altera® d clk D ENA CLRN Q в России q 25 Санкт - Петербург

в России

q

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

d clk D ENA CLRN Q в России q 25 Санкт - Петербург Автор Антонов А

Использование переменных

Использование переменных (Variable) внутри оператора IF-THEN, в котором проверяются условия синхронизации, в общем случае не ведет к использованию триггеров

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

Присвоение значения переменной не предполагает аппаратную реализацию устройства памяти (триггера)

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

в России

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

фирмы Altera® в России 26 Санкт - Петербург Автор Антонов А . П .

Пример - счетчик с использованием переменных

Счетчик накапливающий сумматор, к содержимому которого всегда добавляется (или вычитается ) ‘1’ Аппаратные затраты - 17 LEs

Переменной присваивается значение арифметического выражения

LIBRARY IEEE; USE IEEE.std_logic_1164.all; USE IEEE.std_logic_unsigned.all; ENTITY count_a IS PORT (clk, rst, updn : in std_logic;

q : out std_logic_vector(15 downto 0));

END count_a; ARCHITECTURE logic OF count_a IS BEGIN PROCESS(rst, clk) VARIABLE tmp_q : std_logic_vector(15 downto 0); BEGIN

IF rst = '0' THEN tmp_q := (others => '0'); ELSIF clk’event and clk=‘1’ THEN IF updn = '1' THEN

tmp_q := tmp_q + 1; ELSE tmp_q := tmp_q - 1; END IF; END IF;
tmp_q := tmp_q + 1;
ELSE
tmp_q := tmp_q - 1;
END IF;
END IF;
q
<= tmp_q;
Значение переменной присваивается
сигналу

END PROCESS; END logic;

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

в России

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

фирмы Altera® в России 27 Санкт - Петербург Автор Антонов А . П .