Методическое пособие
.pdfСпецификация конфигурации (configuration specification) связывает копии ID
компонента, именуемого NM, с сущностью и архитектурным телом прямо либо косвенно, ссылаясь на модуль конфигурации, и устанавливает при этом фактические интерфейсы по параметрам настройки и портам.
Спецификация развязывания (disconnection specification) устанавливает
временную задержку TEX отключения драйверов сигналов с именами NM и
типом NM1.
Клоз использования (use clause) обеспечивает прямую видимость объектов
по выбору в библиотеках и пакетах. Множество видимых объектов определяется селективными именами SLN.
Объявления |
|
Таблица 7 |
|
Обоз |
Название |
Определение |
Пример |
наче |
|
|
|
ние |
|
|
|
1 |
2 |
3 |
4 |
DI |
Элемент |
SPD SPB TD STD CTD |
|
|
объявления |
SGD VRD FLD ALD CMD |
|
|
(declaration item) |
ATD ATS CFD DIS USC |
|
SPD |
Объявление |
procedure ID | SL |
procedure Adder_Bits |
|
подпрограммы |
[(IFD; … ; IFD)]; |
(A: in Bit_Vector(0 to 31); |
|
(subprogram |
function ID | SL |
N: out Integer); |
|
declaration) |
[(IFD; … ; IFD)] return |
|
|
|
NM; |
|
SPB |
Тело |
procedure ID | SL |
procedure Adder_Bits |
|
подпрограммы |
[(IFD; … ; IFD)] is |
(A: in Bit_Vector(0 to 31); |
|
(subprogram body) |
DI … DI |
N: out Integer) is |
|
|
begin SST … SST |
begin |
|
|
end [ID | SL]; |
N:=0; |
|
|
function ID | SL [(IFD; … ; |
for I in 0 to 31 loop |
|
|
IFD)] return NM is |
if A(I)=’1’ then N:=N+1; |
|
|
DI … DI |
end if; |
|
|
begin SST … SST |
end loop; |
|
|
end [ID | SL]; |
end Adder_Bits; |
TD |
Объявление типа |
SCLR CMPS ACC FIL ICD |
|
|
(type declaration) |
|
|
STD |
Объявление |
subtype ID is STI; |
subtype Word is |
|
подтипа (subtype |
|
Bit_Vector(15 downto 0); |
|
declaration) |
|
subtype Day is Integer |
|
|
|
range 1 to 31; |
STI |
Указание подтипа |
[RFN] NM range EX to EX |
RF Character range ‘A’ to ‘Z’ |
|
(subtype indication) |
[RFN] NM range EX downto |
Real range 1 downto –1 |
|
|
EX |
Integer range A’RANGE |
|
|
[RFN] NM range ATN |
Memory(0 to 1024, |
|
|
[RFN] NM (EX to EX, … , |
31 downto 0) |
|
|
EX downto EX) |
|
11
|
|
|
Окончание табл.7 |
|
|
|
|
1 |
2 |
3 |
4 |
CTD |
Объявление |
constant ID, … ,ID: |
constant Bound : Integer |
|
константы (constant |
STI [:=EX]; |
:=255; |
|
declaration) |
|
|
SGD |
Объявление |
signal ID, … ,ID: STI [:=EX]; |
signal Register: |
|
сигнала (signal |
|
Bit_Vector(0 to 7) |
|
declaration) |
|
:=”00000000”; |
VRD |
Объявление |
variable ID, … ,ID: |
variable RAM: |
|
переменной |
STI [:=EX]; |
Memory(0 to X”FFFF”); |
|
(variable |
|
|
|
declaration) |
|
|
FLD |
Объявление файла |
file ID : STI is [MODE] NM; |
file Fil: Stud_Data is out |
|
(file declaration) |
|
Students; |
ALD |
Повторное |
alias ID : STI is NM; |
alias Sign: Bit is Word(31); |
|
объявление (alias |
|
|
|
declaration) |
|
|
CMD |
Объявление |
component ID |
component Register |
|
компонента |
generic (IFD; … ;IFD); |
generic (N:Integer:=32); |
|
(component |
port (IFD; … ;IFD); |
port (R,A,B,Cl: in Bit; |
|
declaration) |
end component; |
Q: out |
|
|
|
Bit_Vector(1 to N)); |
|
|
|
end component; |
ATD |
Объявление |
attribute ID : NM; |
attribute Probability: Real; |
|
атрибута (attribute |
|
|
|
declaration) |
|
|
ATS |
Спецификация |
attribute ID of |
attribute Probability of |
|
атрибута (attribute |
NM, … ,NM | others | all : |
Flag1,Flag2: variable |
|
specification) |
entity | architecture | |
is 0.1; |
|
|
configuration | procedure | |
|
|
|
function | package | type | |
|
|
|
subtype | constant | signal | |
|
|
|
variable | component | |
|
|
|
label |
|
|
|
is EX; |
|
CFD |
Спецификация |
for ID, … ,ID : NM use |
for Mult7,Mult8,Mult9: |
|
конфигурации |
entity NM [(ID)] | |
Multiplier |
|
(configuration |
configuration NM | |
use entity |
|
specification) |
open |
Multipl (Behavior); |
|
|
[generic map (AE, … ,AE)] |
|
|
|
[port map (AE, … ,AE)]; |
|
DIS |
Спецификация |
disconnect |
disconnect Sig_0: Integer |
|
развязывания |
NM, … ,NM | |
after 0.5ns; |
|
(disconnection |
others | |
|
|
specification) |
all : |
|
|
|
NM1 after TEX; |
|
USC |
Клоз |
use SLN, … ,SLN; |
use Standard.all, |
|
использования (use |
|
High_Synt.Cost; |
|
clause) |
|
|
12
1.9. Типы
Тип характеризуется множеством значений и множеством операций над ними. Язык содержит четыре класса типов (табл.8). К классу скалярный SCLR
(scalar) относятся перечислимый ENU (enumeration), целый INT (integer), с
плавающей точкой FLO (floating) и физический PHY (physical) типы. Класс составных CMPS (composite) типов включает массивы ARR (array) и записи
REC (record). Тип класса доступ ACC (access) обеспечивает доступ к объектам некоторого типа. Тип класса файл FIL (file) обеспечивает доступ к объектам, содержащим последовательность значений некоторого типа. Неполное определение типа (incomplete type declaration) используется для рекурсивного построения описаний типов посредством типа доступ.
Перечислимый тип определяется именем и множеством значений, представляемых идентификаторами или символьными литералами.
Целый тип и тип с плавающей точкой определяются восходящим или нисходящим диапазоном значений, описываемым парой выражений или посредством атрибута.
Физический тип определяет базовую физическую единицу и вторичные физические единицы, выраженные через ранее описанные посредством некоторого множителя. Этот тип определяет также целочисленный диапазон значений в базовых единицах.
Язык VHDL различает массивы двух типов: ограниченные (constrained) и
неограниченные (unconstrained). Массив характеризуется размерностью
(количеством индексов), диапазоном дискретных значений каждого индекса, подтипом элементов. В неограниченном массиве индексы определяются именами подтипов с последующим словом range <>, в ограниченном массиве диапазон значений индексов указывается явно или посредством атрибута.
Тип запись определяет множество именованных элементов. Имена всех элементов должны быть уникальными. Для каждого из них определяется подтип значения.
Тип доступ определяет подтип объектов, к которым осуществляется доступ. Тип файл определяет объекты, представляющие файлы в окружающей операционной среде. В объявлении файла указывается имя подтипа элементов
файла.
1.10. Выражения
Выражения в языке VHDL строятся из операндов и операций. К операндам относятся имена NM (names), (обозначающие объекты (object), значения
(value), атрибуты (attribute)), литералы LT (literal), агрегаты AGR (aggregate),
вызовы функций FUC (function call), квалифицирующие выражения QEX (qualified expression), преобразования типов TPC (type conversion) и аллокаторы ALC (allocator).
Имена описаны в разделе 1.3, литералы - в разделе 1.2.
13
Типы |
|
|
Таблица 8 |
|
Обоз |
|
|
|
|
наче |
Название |
Определение |
Пример |
|
ние |
|
|
|
|
SCLR |
Скалярный |
ENU INT FLO PHY |
|
|
|
(scalar) |
|
|
|
ENU |
Перечислимый |
type ID is (ID|CL, … ,ID|CL); |
type ID is (red, blue, green); |
|
|
(enumeration) |
|
|
|
INT |
Целый (integer) |
type ID is range EX to EX; |
type Month is range 1 to 12; |
|
|
|
type ID is range EX downto EX; |
type Index is range |
|
|
|
type ID is range ATN; |
0 downto 31; |
|
FLO |
Плавающий |
type ID is range EX to EX; |
type Probability is range 0 to 1; |
|
|
(floating) |
type ID is range EX downto EX; |
type Tempr is range |
|
|
|
type ID is range ATN; |
2000 downto -80; |
|
PHY |
Физический |
type ID is range EX to EX |
type Distance is range 0 to 1e16 |
|
|
(physical) |
units |
units |
|
|
|
ID; |
A; |
--angstrom |
|
|
ID = PHL; |
nm=10A; |
--nanometer |
|
|
end units; |
um=1000nm; --micron |
|
|
|
|
mm=1000um; --millimeter |
|
|
|
|
cm=10mm; |
--centimeter |
|
|
|
end units; |
|
CMP |
Составной |
ARR REC |
|
|
S |
(composite) |
|
|
|
ARR |
Массив (array) |
type ID is array (NM range <>, |
type Word is array (Natural |
|
|
|
… ,NM range <>) of STI; |
range <>) of Bit; |
|
|
|
type ID is array (STI, … ,STI) of |
type Memory is array (Natural |
|
|
|
STI; |
||
|
|
type ID is array (EX to EX, … , |
range <>) of Word; |
|
|
|
EX downto EX) of STI; |
|
|
|
|
type ID is array (ATN, … , |
type ROM is array |
|
|
|
ATN) of STI; |
(0 to 65535,15 to 0) of Bit; |
|
REC |
Запись (record) |
type ID is |
type Time is |
|
|
|
record |
record |
|
|
|
ID, … ,ID : STI; |
hour: Natural range 0 to 24; |
|
|
|
• • • |
min: Natural range 0 to 60; |
|
|
|
ID, … ,ID : STI; |
||
|
|
sec: Natural range 0 to 60; |
||
|
|
end record; |
end record; |
|
ACC |
Доступ (access) |
type ID is access STI; |
type ROM_Pointer is access |
|
|
|
|
ROM; |
|
FIL |
Файл (file) |
type ID is file of NM; |
type Text is file of String; |
|
ICD |
Неполное |
type ID; |
type Node; |
|
|
определение |
|
type Arc is access Node; |
|
|
типа |
|
type Node is |
|
|
(type incomplete |
|
record |
|
|
definition) |
|
Name: String; |
|
|
|
|
Left: Arc; |
|
|
|
|
Right: Arc; |
|
|
|
|
end record; |
|
14
Операнды |
|
Таблица 9 |
|
Обозна |
Название |
Определение |
Пример |
чение |
|
|
|
PRM |
Операнд (operand) |
NM LT AGR FUC QEX |
|
|
|
TPC ALC |
|
AGR |
Агрегат (aggregate) |
([EX| … |EX=>]EX, … , |
(hour=>7,min=>23,sec=>15) |
|
|
[EX| … |EX=>]EX) |
(8 to 15=>0,others=>1) |
FUC |
Вызов функции |
NM[( [NM[(NM)] =>]EX, |
factorial(9) |
|
(function call) |
…, [NM[(NM)] =>]EX )] |
find(N, Num_Array, LESS) |
QEX |
Квалифицирующее |
NM’ (EX) |
Integer’(A+B) |
|
выражение (qualified |
NM’ AGR |
Date’(1999,2,8) |
|
expression) |
|
|
TPC |
Преобразователь типа |
NM (EX) |
Real(N) |
|
(type conversion) |
|
|
ALC |
Аллокатор (allocator) |
new STI |
new Cell’(“OR”,1.2ns,2) |
|
|
new QEX |
new Bit_Vector(31 downto 0) |
Агрегат (табл. 9) объединяет одно или несколько значений в составное значение типа массив или запись. Он представляет собой последовательность разделенных запятой ассоциаций элементов массива или записи с некоторыми выражениями. Ассоциация может быть именованной (элементы массива или записи указываются явно и разделяются вертикальной чертой) и позиционной.
Вызов функции влечет выполнение тела функции. В нем определяются имя функции и фактические параметры, ассоциируемые с формальными параме-
трами. Результат выполнения функции имеет тип, определенный в ее описании.
Квалифицирующее выражение используется для явного указания подтипа операнда, являющегося выражением или агрегатом. Вычисление квалифицирующего выражения сводится к вычислению значения операнда и проверке его принадлежности к указанному подтипу.
Преобразование типа предназначено для перехода от значения одного типа к эквивалентному значению другого близкого типа.
Выполнение аллокатора создает объект и возвращает значение доступа к этому объекту.
Множество операций VHDL делится (табл. 10) на классы логических,
отношений, аддитивных, мультипликативных, оставшихся.
Логические операции AND, OR, NAND, NOR, XOR и NOT предопределены для скалярных типов BIT и BOOLEAN, а также для одномерных массивов, состоящих из элементов этих типов.
Операции-отношения =, =/, <, <=, >, >= возвращают значение типа BOOLEAN. Тип операндов первых двух операций произволен. Тип операндов четырех оставшихся операций должен быть скалярным или одномерным массивом.
Аддитивные операции + и – предопределены для любых числовых типов. Операция конкатенации & предопределена для одномерных массивов и их элементов.
15
Мультипликативные операции * и / предопределены для целых типов, типов с плавающей точкой и физических типов. Операции MOD и REM предопределены только для целых типов.
Операция ABS выполняется над числовыми типами. Левый операнд операции ** имеет числовой тип, правый операнд – целый тип.
Операции |
|
|
Таблица 10 |
|
Обозна |
|
Название |
Типы операндов и результата |
|
чение |
|
|
|
|
|
|
Логические операции |
|
|
AND |
|
Конъюнкция (conjunction) |
BIT BIT_VECTOR BOOLEAN |
|
|
|
|
BOOLEAN_VECTOR |
|
OR |
|
Дизъюнкция (disjunction) |
BIT BIT_VECTOR BOOLEAN |
|
|
|
|
BOOLEAN_VECTOR |
|
NAND |
|
Штрих Шеффера (Sheffer stroke) |
BIT BIT_VECTOR BOOLEAN |
|
|
|
|
BOOLEAN_VECTOR |
|
NOR |
|
Стрелка Пирса (Pierce arrow) |
BIT BIT_VECTOR BOOLEAN |
|
|
|
|
BOOLEAN_VECTOR |
|
XOR |
|
Исключающее ИЛИ (exclusive OR) |
BIT BIT_VECTOR BOOLEAN |
|
|
|
|
BOOLEAN_VECTOR |
|
|
|
Операции-отношения |
|
|
= |
|
Равенство (equality) |
Операнды – любые |
|
|
|
|
Результат – BOOLEAN |
|
/= |
|
Неравенство (inequality) |
Операнды – любые |
|
|
|
|
Результат - BOOLEAN |
|
< |
|
Меньше (less) |
Операнды – скалярные, одномерные |
|
|
|
|
массивы |
Результат - BOOLEAN |
<= |
|
Меньше либо равно (less-equal) |
Операнды – скалярные, одномерные |
|
|
|
|
массивы |
Результат - BOOLEAN |
> |
|
Больше (greater) |
Операнды – скалярные, одномерные |
|
|
|
|
массивы |
Результат - BOOLEAN |
>= |
|
Больше либо равно (greater-than) |
Операнды – скалярные, одномерные |
|
|
|
|
массивы |
Результат - BOOLEAN |
|
|
Аддитивные |
операции |
|
+ |
|
Сложение (addition) |
Числовые типы |
|
− |
|
Вычитание (subtraction) |
Числовые типы |
|
& |
|
Конкатенация (concatenation) |
Одномерные массивы и их элементы |
|
|
|
Мультипликативные |
операции |
|
|
|
Умножение (multiplication) |
Числовые типы |
|
/ |
|
Деление (division) |
Числовые типы |
|
MOD |
|
Модуль (modulus) |
Целые типы |
|
REM |
|
Остаток (remainder) |
Целые типы |
|
|
|
Разные операции |
|
|
|
|
Экспонента (exponentiation) |
Числовые типы |
|
ABS |
|
Абсолютное значение (absolute value) |
Числовые типы |
|
NOT |
|
Отрицание (negation) |
BIT BIT_VECTOR BOOLEAN |
|
|
|
|
BOOLEAN_VECTOR |
16
1.11. Параллельные операторы
Они предназначены для определения взаимосвязанных блоков и процессов, которые в совокупности описывают общее поведение и структуру VHDLпроекта. По отношению друг к другу параллельные операторы выполняются асинхронно. Все они могут быть помечены метками (табл. 11).
Оператор блок (block) определяет некоторый внутренний фрагмент проекта. С целью построения иерархической декомпозиции проекта блоки вкладываются друг в друга. Если присутствует защитное выражение EX, то с ним автоматически связывается сигнал с именем GUARD типа BOOLEAN, влияющий на выполнение операторов внутри блока. Голова блока, включающая описания параметров настройки и портов, определяет интерфейс блока с внешней средой.
Оператор процесс (process) описывает поведение некоторой части проекта. Если он включает список чувствительности с именами сигналов NM, то считается, что последним в операторе является оператор ожидания с этим списком чувствительности. Такой процесс не должен содержать других явных операторов ожидания. Выполнение оператора процесс заключается в
повторяющемся выполнении последовательных операторов, входящих в него.
Процесс пассивен, если в нем или в вызываемых им процедурах не содержатся операторы назначения сигнала.
Оператор параллельного вызова процедуры представляется оператором процесс без списка чувствительности, но с двумя последовательными операторами: последовательным вызовом процедуры и оператором ожидания. Параллельный оператор утверждения сводится к процессу аналогичным образом.
Параллельный оператор назначения сигнала также трансформируется в оператор процесс. Признак guarded означает, что оператор выполняется, когда сигнал GUARD меняет значение с TRUE на FALSE или когда сигнал имел значение TRUE и произошло событие на входах оператора. При наличии признака transport имеет место транспортная задержка сигнала, в противном случае - инерционная. В языке VHDL параллельный оператор назначения сигнала обобщен на условный и селективный.
Оператор конкретизации компонента определяет очередную копию внешнего объекта проекта и ассоциирует сигналы с портами компонента.
Оператор генерации представляет способ циклического или условного
порождения отдельного фрагмента полного описания VHDL–проекта.
17
Параллельные операторы |
|
Таблица 11 |
||
Обозн- |
Название |
|
Определение |
Пример |
ачение |
|
|
|
|
BL |
Блок (block) |
|
ID : block [(EX)] |
B1 : block (Cl) |
|
|
|
[generic (IFD; … ;IFD); |
port (I1,I2: in Bit; |
|
|
|
[generic map (AE, … ,AE);]] |
O1: out Bit); |
|
|
|
[port (IFD; … ;IFD); |
port map (I1=>S1,I2=>S5, |
|
|
|
[port map (AE, … ,AE);]] |
O1=>Sig); |
|
|
|
DI … DI |
begin |
|
|
|
begin |
O1<=I1 xor I2; |
|
|
|
CST …CST |
end block B1; |
|
|
|
end block [ID] ; |
|
PRC |
Процесс |
|
[ID:] process [(NM, … ,NM)] |
P0: process (Clock, A) |
|
(process) |
|
DI … DI |
variable V3: Integer; |
|
|
|
begin |
begin |
|
|
|
SST …SST |
V3:=A*S1; S7<=V3+S2; |
|
|
|
end process [ID] ; |
end process P0; |
CPC |
Вызов |
|
[ID:] NM |
PC5: Circuit_Synthesis(Basis, |
|
процедуры |
|
[( [NM[(NM)]=>]EX, … , |
Behavior, Timec, Costc); |
|
(procedure call) |
|
[NM[(NM)] =>]EX )] ; |
|
CAS |
Утверждение |
|
[ID:] assert EX |
assert Cond |
|
(assertion) |
|
[report EX] |
report “Illegal Signal Value” |
|
|
|
[severity EX] ; |
severity WARNING; |
CSA |
Назначение |
|
[ID:]NM<=[transport][guarded] |
AS_9: Sig_7 <= transport |
|
сигнала (signal |
|
EX [after EX], … , |
“0101” after 5ns, |
|
assignment) |
|
EX [after EX] ; |
“1111” after 12ns; |
|
|
|
[ID:] AGR <= [transport] |
|
|
|
|
[guarded] |
|
|
|
|
EX [after EX], … , |
|
|
|
|
EX [after EX] ; |
|
CCSA |
Условное назна- |
|
[ID:]NM<=WF when EX else |
SG <= ‘1’ after 2ns |
|
чение сигнала |
|
... |
when c=’0’ else |
|
(conditional sig- |
|
WF when EX else |
‘0’ after 3.3ns |
|
nal assignment) |
|
WF; |
|
CCSA |
Селективное |
|
[ID:] with EX select |
SA: with Cond select |
|
назначение |
|
NM<=WF when CHO, |
A <= B+C when “01”, |
|
сигнала (selected |
|
... |
B-C when others; |
|
signal |
|
WF when CHO; |
|
|
assignment) |
|
|
|
CMI |
Конкретизация |
ID : NM |
ADD_1: Adder |
|
|
компонента |
|
[generic map (AE, … ,AE)] |
generic map (17ns, 9ns) |
|
(component |
|
[port map (AE, … ,AE)]; |
port map (C0,A,B,S,C1); |
|
instantiation) |
|
|
|
GEN |
Генерация |
|
ID : for ID in EX to EX |
G1: for I in 0 to 15 |
|
(generate) |
|
generate |
generate |
|
|
|
CST … CST |
C(I)<=A(I)+B(I); |
|
|
|
end generate [ID]; |
end generate G1; |
|
|
|
ID : if EX |
G2: if N=1 generate |
|
|
|
generate |
Cl: Cell port map(S); |
|
|
|
CST … CST |
end generate G2; |
|
|
|
end generate [ID]; |
|
18
1.12. Последовательные операторы
Последовательные операторы (табл. 12) используются для описания алгоритмов в процессах и подпрограммах. Операторы выполняются в том порядке, в котором появляются.
Оператор ожидания wait приостанавливает процесс или процедуру. Он состоит из трех частей: списка чувствительности, условия продолжения выполнения и выражения для максимального времени выполнения. Список чувствительности включает имена сигналов, события на которых позволяют начать оператору выполняться. Если список чувствительности отсутствует, в него включаются имена сигналов, входящих в условие продолжения выполнения. Если отсутствует условие продолжения выполнения оператора ожидания, в его качестве принимается true. Если отсутствует максимальное время выполнения, то принимается максимально возможное время. Операторы ожидания не могут использоваться в функциях и процессах со списком чувствительности.
Оператор утверждения assert проверяет истинность условия и сообщает об ошибке, если условие ложно. Он состоит из выражения условия, выражения сообщения и выражения уровня ошибки.
Оператор назначения сигнала модифицирует планируемую временную диаграмму, содержащуюся в драйвере сигнала. Слово transport указывает на транспортную задержку, его отсутствие указывает на инерционную задержку. Временная диаграмма представляется последовательностью транзакций, которые добавляются в драйвер при выполнении оператора назначения сигнала.
Оператор присваивания заменяет текущее значение переменной, входящей в его левую часть на значение, определяемое выражением его правой части.
Оператор вызова процедуры влечет выполнение процедурного тела. Каждому формальному параметру ставится в соответствие не более одного фактического, в случае отсутствия фактического параметра формальному параметру назначается значение по умолчанию.
Условный оператор if выбирает для выполнения не более одной вложенной последовательности операторов в зависимости от значения одного или более условий. Выражения, описывающие условия, имеют тип BOOLEAN.
Оператор выбора case вычисляет выражение и в зависимости от его значения выбирает для выполнения одну из определенных последовательностей операторов. Выражение должно иметь дискретный тип или тип одномерного массива. Элемент выбора задается именем, литералом, диапазоном, others.
Оператор цикла loop содержит в теле последовательность операторов, выполнение которой повторяется нулевое или большее число раз. Повторением управляет схема итерации типа for или типа while.
Оператор next предназначен для завершения очередной итерации некоторого вложенного цикла. Завершение может быть условным или безусловным. Цикл может указываться меткой, а условие завершения представляется выражением типа BOOLEAN. Оператор exit предназначен для условного или безусловного завершения выполнения одного из циклов.
19
Оператор возврата return используется для выхода из наиболее вложенного тела функции или процедуры.
Пустой оператор null не выполняет никаких действий.
Последовательные операторы |
Таблица 12 |
||
Обозна |
Название |
Определение |
Пример |
чение |
|
|
|
WT |
Ожидание (wait) |
wait [on NM, … ,NM] |
wait on Clock |
|
|
[until EX] |
until A>B for 38ns; |
|
|
[for EX]; |
|
SAS |
Утверждение |
assert EX |
assert A and B = False |
|
(assertion) |
[report EX] |
report “A and B equals |
|
|
[severity EX] ; |
true simultaneously” |
|
|
|
severity NOTE; |
SSA |
Назначение |
NM <= [transport] |
Flag <= True after 700 fs; |
|
сигнала (signal |
EX [after EX], … , |
|
|
assignment) |
EX [after EX] ; |
|
|
|
AGR <= [transport] |
|
|
|
EX [after EX], … , |
|
|
|
EX [after EX] ; |
|
SVA |
Присваивание |
NM := EX ; |
S := A xor B xor C0; |
|
переменой (vari- |
AGR := EX ; |
|
|
able assignment) |
|
|
SPC |
Вызов |
NM [( [NM[(NM)] =>]EX, … , |
Multiply (Vector(3 to 12), M2, |
|
процедуры |
[NM[(NM)] =>]EX )]; |
M5); |
|
(procedure call) |
|
|
IF |
Условный (if) |
if EX then SST …SST |
if A>B then R:=B+1; |
|
|
[elsif EX then SST … SST |
elsif B<0 then R:=2; |
|
|
… |
else R:=0; |
|
|
elsif EX then SST … SST] |
end if; |
|
|
[else SST … SST] |
|
|
|
end if; |
|
CASE |
Выбор (case) |
case EX is |
case Iv is |
|
|
when EX|…|EX => SST…SST |
when “00” => Res:=0; |
|
|
… |
when “11” => Res:=0; |
|
|
when EX|…|EX => SST…SST |
when others => Res:=1; |
|
|
end case; |
end case; |
LOOP |
Цикл (loop) |
[ID:] while EX loop |
while X/=Y loop |
|
|
SST … SST |
if X>Y then X:=X-Y; |
|
|
end loop [ID] ; |
else Y:=Y-X; |
|
|
[ID:] for ID in EX to EX loop |
end loop; |
|
|
SST … SST |
L1: for J in 1 to N loop |
|
|
end loop [ID] ; |
S:=S+A(J); |
|
|
|
end loop L1; |
NEXT |
Следующий |
next [ID] [when EX] ; |
next when Flag=False; |
|
(next) |
|
|
EXIT |
Выход (exit) |
exit [ID] [when EX] ; |
exit L2 when A and B; |
RET |
Возврат (return) |
return [EX] ; |
return 0; |
NULL |
Пусто (null) |
null; |
null; |
20