Введение в стандарт IEEE. Справочное руководство по языку VHDL (Пересмотр стандарта IEEE. 1076-1987), страница 20

     Эта функция подобна mult, но теперь векторы представляются в двоичном представлении. Знаковый разряд - самый левый разряд в каждом векторе. В случае неравных входных векторов, у самого маленького вектора - знаковый разряд, расширяется до размера самого большого входного вектора прежде, чем будет выполнено умножение.

sl

sl (l: std_logic_vector; r: integer) возвращает std_logic_vector;

     Берет вектор l и целое число r и возвращает вектор. Результирующий вектор имеет тот же самый размер как l, но все биты вектора перемещены влево на r разрядов. Биты в правой стороне вектора заполнены нулем. Целое число r должно быть неотрицательным.

sl2

sl2 (l: std_logic_vector; r: integer) возвращает std_logic_vector;

     То же самое как sl, но вектор l представлен в двоичном виде. Знаковый разряд самый левый бит в векторе. Биты справа заполненны нулями.

sr

sr (l: std_logic_vector; r: integer) возвращает std_logic_vector;

То же самое, что и sl, но биты сдвигаются вправо. Биты в левой стороне заполнены нулями.

sr2

     То же самое что и sr, но вектор l представлен в двоичном виде. Знаковый разряд - левый бит в векторе.

sub

sub (op_l, op_r: std_logic_vector) возвращает std_logic_vector;

     Тот же самый что add, но осуществляется функция вычитания для векторов без знака. Правый операнд вычитается из левого.

sub ("1011","0100")result : "00111" (sub (11,4) == 7)

sub ("0011","100") result : "11111" (sub(3,4) == 31)

Фактически это антипереполнение без знака!

sub2

sub2 (op_l, op_r: std_logic_vector) возвращает std_logic_vector;

     То же самое что и add2, но функция вычитания осуществляется над 2-мя векторами в двоичном представлении. Правый операнд вычитается из левого.

sub2 ("1011","0100") result : "10111" (sub2(-5,4) == -9)

sub2 ("1011", "100") result : "11111" (sub2(-5,-4) == -1)

+

+ (op_l, op_r: std_logic_vector) возвращает std_logic_vector;

Берет два вектора и возвращает вектор. То же что и add, но теперь бит переноса не сохраняется. Результирующий вектор имеет тот же самый размер, что и самый большой входной вектор. Переполнение переносится циклически. Это функциональное сложение векторов без знака.

"10110" + "101" result : "11011" (22 + 5 == 27)

-

- (op_l, op_r: std_logic_vector) возвращает std_logic_vector;

     Тот же самое что и +, только осуществляется функция вычитания. Правый операнд вычитается из левого. Это функциональное вычитание векторов без знака.

"10110" - "101" result : "10001" (22 - 5 == 17)

Предопределенные процедуры.

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

     Пакет образца определяет эти процедуры как сигналы типа bit, и bit_vector, elbit и elbit_vector, в то время как пакет exemplar_1164 определяет те же самые процедуры для IEEE 1164 типа std_logic, std_ulogic, std_logic_vector и std_ulogic_vector. В описании ниже приведены только примеры для bit и bit_vector, однако полное определение процедур, для типов, перечисленных выше, является доступным при моделировании файлов exemplar.vhd и exemplar_1164.vhd.

Триггеры

dff[_v](data, clock, q)

dffc[_v](data, clear, clock, q)

dffp[_v](data, preset, clock, q)

dffpc[_v](data, preset, clear, clock, q)