Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Операторы последовательной (sequential ) логики, которые включаются в тело оператора process

Методы программного проектирования цифровых устройств | Общая характеристика языка VHDL | Программные единицы языка VHDL | Типы программных объектов (Types) | Project 8-bit Shift Register include component DFF |


Читайте также:
  1. A (Statistical Process Control (SPC), moderate)
  2. A Process of Communication
  3. a) Использование Past Indefinite является обязательным с глаголами, которые
  4. A. A Data Processing Department
  5. Academia in the process of globalization. Its intercultural nature
  6. B (Process capability, moderate)
  7. B (Statistical Process Control (SPC), difficult)

VHDL имеет несколько наименований операторов последовательной логики (sequential logic), которые включаются в тело оператора process:

А) Оператор декларирующий Переменную (variable declaration) имеет такую конструкцию:

variable variable-names: variable-typ e;


Б) Оператор
присвоения значения переменной (variable-assignment statement) имеет такую конструкцию:

 

variable-name := expressio n

 

Переменная (variable) в языке VHDLподобна сигналам, за исключением того, что она обычно не имеют физической реализации. Она используются только в функциях, процедурах и в теле оператора процесс, чтобы следить за состоянием некоторых промежуточных данных в пределах оператора process и являются не видимой вне оператора process.

 

 

Example - Пример показывающий применение переменной в теле оператора proces s. VHDL Архитектура обрабатывает поток данных и описывает проект детектора простых чисел)

architecture prime6_arch of prime is

Begin

proces s(N)

variable N3L_N0, N3L_N2L_N1, N2L_N1_N0, N2_N1L_N0: STD_LOGIC;

Begin

N3L_N0:= not N(3) and N(0);

N3L_N2L_N1:= not N(3) and not N(2) and N(1);

N2L_N1_N0:= not N(2) and N(1) and N(0);

N2_N1L_N0:= N(2) and not N(1) and N(0);

F <= N3L_N0 or N3L_N2L_N1 or N2L_N1_N0 or N2_N1L_N0;

end proces s;

end prime6_arch;

 

В) Оператор sequential signal-assignmentоператор назначения сигнала для проектирования устройств последовательной логики имеет такую конструкцию:

signal-name <= expressio n;

 

По конструктивному оформлению он такой же как конкурентныйоператор назначения сигнала (concurrent signal-assignment statement). Однако он - последовательный (sequential), потому что располагается в теле оператора process, а не в теле архитектуры.

Так как, мы не имеем начальных определений сигнала, которому назначается значение при выполнении оператора process, имя сигнала (signal-name) при оформлении sequential signal-assignment должно быть указано в списке чувствительности.

Г) Оператор if...then (if statement ) – Оператор условной передачи управления имеет несколько вариантов конструктивного оформления:

if boolean-expression then sequential-statement end if; --вид 1

if boolean-expression then --вид 2

sequential-statement

else sequential-statement

End if;

--вид 3

if boolean-expression then

sequential-statement

elsif boolean-expression then sequential-statement

…………………………………………………………………………………..

elsif boolean-expression then sequential-statement

else sequential-statement

End if;

Принцип действия оператора if...then в языке VHDL аналогичен принципу действия оператора if в традиционных языках программирования.

Example – Пример, показывающий применение оператора if...then для детектирования простых чисел:

architecture prime7_arch of prime is

Begin

proces s(N)

variable NI: intege r;

Begin

NI:= CONV_INTEGER(N);

if NI=1 or NI=2 then F <= '1';

elsif NI=3 or NI=5 or NI=7 or NI=11 or NI=13 then F <= '1';

else F <= '0';

End if;

end proces s;

end prime7_arch;

Д). Оператор case (case statement ) -Оператор выбора имеет такую конструкцию:

case expression is

when choices => sequential-statements -- one or more sequential

-- statements can be used

…………………………………………………………………………………………..

when choices => sequential-statements

when others => sequential-statements -- optional; to denote all

--values that have not yet been covered.

End case;

Принцип действия оператора case в языке VHDL аналогичен принципу действия оператора case в традиционных языках программирования.При синтезе цифровых устройств

оператор case обычно более читаем, и имеет более высокий уровень выхода годных СБИС.

Конструктивные элементы choices (выбор) должен быть взаимоисключающими и содержать все возможные варианты.

Example – Пример показывающий применение оператора case для детектирования простых чисел:

architecture prime8_arch of prime is

Begin

proces s(N)

Begin

case CONV_INTEGER(N) is

when 1 => F <= '1';

when 2 => F <= '1';

when 3 | 5 | 7 | 11 | 13 => F <= '1';

when others => F <= '0';

End case;

end proces s;

end prime8_arch;

 

 

Е) Оператор loop (loop statements) - Оператор цикла имеет несколько вариантов конструктивного оформления:

for identifier in range loop -- for loop --вид 1

sequential-statement

sequential-statement

End loop;

loop -- infinite loop --(бесконечный цикл) --вид 2

sequential-statement

sequential-statement

End loop;

 

Принцип действия оператора loop в языке VHDL аналогичен принципу действия операторов цикла в традиционных языках программирования. В операторе for... loop конструктивныйэлемент identifier объявлен неявно своим написанием {видом}. Он должен и иметь тот же тип как и диапазон (rang e ). Эта переменная может использоваться в теле оператора for... loop. Однако ни один из операторов содержащихся в теле цикла for... loop не должен изменять ее значения.

 

 

Example – Пример - поведенческого описания VHDL проекта для детектирования простых чисел, где применен оператор loop:

library IEEE;

use IEEE.std_logic_1164.all;

 

entity prime9 is

port (N: in STD_LOGIC_VECTOR (15 downto 0);

F: out STD_LOGIC);

end prime9;

architecture prime9_arch of prime9 is

Begin

proces s(N)

variable NI: intege r;

variable prime: boolea n;

Begin

NI:= CONV_INTEGER(N);

prime:= true;

 

if NI=1 or NI=2 then nul l; -- анализ граничных значений

Else

for i in 2 to 253 loop

if NI mod i = 0 then

prime:= fals e;

exi t;

end i f;

end loo p;

end i f;

if prime then F <= '1';

else F <= '0';

end i f;

end proces s;

end prime9_arch;

 

Ж) Оператор exit (exit statements) – Вспомогательный Оператор передачи управления, обеспечивающий выхода из цикла. Управление передается на оператор стоящий после тела оператора цикла (после end loo p;). Он имеет следующий синтаксис:

exit; -- transfers control to the statement immediately

- -following the loop end(Оператор выхода из цикла)

З) Оператор next (next statements) – Вспомогательный Оператор передачи управления, обеспечивающий прекращение выполнения очередной циклической итерации с последующей передачей управления на следующий шаг цикла. Он имеет следующий синтаксис:

next; -- causes any remaining statements in the

-- loop to be bypassed and begins the next iteration

-- of the loop

И) Оператор null (null statements) - Пустой оператор. Этотоператор не выполняет никаких действий. Его функция только переход к следующему оператору. Он имеет следующий синтаксис:

Null;

 

 


Дата добавления: 2015-11-14; просмотров: 40 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Элементы проектирования устройств комбинаторной логики через поток данных (Dataflow design elements)| На потоке данных (Dataflow design data)

mybiblioteka.su - 2015-2024 год. (0.013 сек.)