Эта функция подобна 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)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.