Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Языки VHDL и VERILOG в проектировании цифровой аппаратуры

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Приложение 1 271
procedure READ(L:inout LINE; VALUE: out time);
-- changed for vhdl92 syntax (and now a built-in): procedure WRITELINE(file f : TEXT; L : inout LINE); procedure WRITE(L : inout LINE; VALUE : in bit;
JUSTIFIED: in SIDE := right; FIELD: in WIDTH := 0);
procedure WRITE(L : inout LINE; VALUE : in bit_vector;
JUSTIFIED: in SIDE := right; FIELD: in WIDTH := 0);
procedure WRITE(L : inout LINE; VALUE : in BOOLEAN;
JUSTIFIED: in SIDE := right; FIELD: in WIDTH := 0);
procedure WRITE(L : inout LINE; VALUE : in character;
JUSTIFIED: in SIDE := right; FIELD: in WIDTH := 0);
procedure WRITE(L : inout LINE; VALUE : in integer;
JUSTIFIED: in SIDE := right; FIELD: in WIDTH := 0);
procedure WRITE(L : inout LINE; VALUE : in real;
JUSTIFIED: in SIDE := right; FIELD: in WIDTH := 0; DIGITS: in NATURAL := 0);
procedure WRITE(L : inout LINE; VALUE : in string;
JUSTIFIED: in SIDE := right; FIELD: in WIDTH := 0);
procedure WRITE(L : inout LINE; VALUE : in time;
JUSTIFIED: in SIDE := right; FIELD: in WIDTH := 0; UNIT: in TIME := ns);
end;
4.3. Предопределенные атрибуты
Атрибут определяет некоторую характеристику именованного понятия. Ряд
атрибутов относится к предопределенным и может одним из следующих видов: типом, диапазоном, значением, сигналом или функцией. Остальные атрибуты определяются пользователем и являются константами.
Ряд предопределенных атрибутов сигналов уже был рассмотрен в разделе 2.
Ниже приведена часть остальных предопределенных атрибутов.
Атрибты массивов на примере массива AХ и строки СХ: type TT is: array (10 downto 0) of integer; variable AX:TT;
variable CX: string (1 to 7); AX'left равно 10, СХ'left равно 1
AX'right равно 0, CX'right равно 7 AX'low равно 0, CX'low равно 1 AX'high равно 10, CX'high равно 7 AX'range равно 10 downto 1, CX'range равно 1 to 7 AX'length равно 11, CX'length равно 7.
272 Приложение 1
Атрибуты типов на примере типа EE: Type EE is range 10 to 70; EE'left равно 10 EE'right равно 70 EE'low равно 10 EE'high равно 70 EE'image(11) равно "11" EE'value("11") равно 11 EE'Pos (11) равно 2 EE'suc(11) равно 12
5. Многозначная логика — IEEE пакеты и функции преобразования типов
Используемые обозначения.
Русскими словами обозначены понятия — например МАССИВ. В символы [] заключена необязательная конструкция. Cимволы/и|означают металингвистическое ИЛИ. Например to | downto означает возможность употребления либо того, либо
другого ключевого слова.
Cокращение — эквивалент. b — BIT u/l — STD_ULOGIC/STD_LOGIC bv — BIT_VECTOR uv — STD_ULOGIC_VECTOR lv — STD_LOGIC_VECTOR un — UNSIGNED sg — SIGNED na — NATURAL (целое > 0) In — INTEGER sm — SMALL_INT это подтип (subtype INTEGER range 0 to 1)
Обозначения групп типов данных: STD_ULV_T ::= u/l |uv | lv --наименование общее для трех типов
Обозначения групп операций: ARITH_OP ::=+|-|*|/|rem|mod--АРИФМЕТИЧЕСКИЕ RELAT_OP ::=<|>|<=|>=|=|/=--ОТНОШЕНИЯ
1. Пакет IEEE STD_LOGIC_1164
1.1. Логические значения
'U' Неинициализированное 'X'/'W' Сильная/Слабая неопределенность '0'/'L' Сильный/слабый 0 'I'/'H' Сильная/Слабая 1 'Z' Высокий импеданс '~' Безразличное
1.2. Предопределенные типы
Скалярные типы
STD_ULOGIC — базовый тип
Приложение 1 273
Подтипы: STD_LOGIC — разрешенный STD_ULOGIC
X01 — разрешенный X,0,1 X01Z — разрешенный X,0,1,Z UX01 — разрешенный U,X,0,1 UX01Z — разрешенный U,X,0,1,Z
Векторные типы
STD_ULOGIC_VECTOR(na to| downto na) — массив STD_ULOGIC STD_LOGIC_VECTOR(na to | downto na) — массив STD_LOGIC
1.3. Переопределенные операции
Операция Левый операнд Символ Правый операнд
Поразрядное И STD_ULV_T and STD_ULV_T Поразрядное ИЛИ STD_ULV_T or STD_ULV_T Поразрядное Исключающее ИЛИ STD_ULV_T xor STD_ULV_T Поразрядное НЕ not STD_ULV_T
Внимание! Арифметические операции над std_logic векторами не допускаются!
1.4. Функции преобразования типов данных
xmap — необязательный аргумент, управляющий способом преобразования
значений, отличных от1и0.Безнего, например Х, обычно преобразуется в 0.
Èç Â Функция Пример, пояснение
u/l b TO_BIT(àðã[,xmap]) TO_BIT('X') äàåò '0' uv,lv bv TO_BITVECTOR(àðã,[xmap]) TO_BITVECTOR("0ZU1")="0001" b ul,lv TO_STDULOGIC(àðã) TO_STDULOGIC("0101")="0101" bv,ul lv TO_STDLOGICVECTOR(àðã) bv,lv uv TO_STDULOGICVECTOR(àðã)
1.5. Функции над сигналами
Фронт RISING_EDGE (ИМЯ СИГНАЛА) — фронт сигнала Срез FALLING_EDGE (ИМЯ СИГНАЛА) — срез Есть ли Хl IS_X (ИМЯ ОБЬЕКТА) — есть ли значение Х в обьекте?
Пример: Is_x("0X1") äàåò TRUE.
2. Пакет IEEE NUMERIC_STD
Нужен при арифметических операциях над std_logic векторами. Переопределяет арифметические операции и операции отношения. Предопределенные типы — массивы STD_LOGIC. UNSIGNED(na to | downto na) array of STD_LOGIC -- беззнаковый вектор (число) SIGNED(na to | downto na) array of STD_LOGIC -- левый разряд знаковый
2.1. Переопределенные операции
Левый Операция Правый Результат oперанд операнд
abs sg sg
—sgsg un ARITH_OP un un sg ARITH_OP sg sg
274 Приложение 1
un ARITH_OP na un sg ARITH_OP In sg un RELAT_OP un bool sg RELAT_OP sg bool un RELAT_OP na bool sg RELAT_OP In bool
Из приведенного видно что применение этого пакета позволяет например
складывать данные типа unsigned как числа без знака и т. д.
2.2 Функции преобразования типов
Èç Â Функция
un,lv sg SIGNED(àðã) sg,lv un UNSIGNED(àðã) sg,un lv STD_LOGIC_VECTOR(àðã) un,sg In TO_INTEGER(àðã) lna un TO_UNSIGNED(àðã) In sg TO_SIGNED(àðã)
Пример: to_integer("0101") дает целое 5.
2.3. Предопределенные функции сдвигов
Функция Тип результата
SHlFT_LEFT(un,na) un -- сдвиг влево SHIFT_RIGHT(un, na) un SHlFT_LEFT(sg,na) sg SHIFT_RIGHT(sg,na) sg ROTATE_LEFT(un,na) un ROTATE_RIGHT(un, na) un ROTATE_LEFT(sg, na) sg ROTATE_RIGHT(sg,na) sg RESIZE(sg, na) sg RESIZE(un, na) un
3. Пакет IEEE NUMERIC_BIT
Позволяет производить арифметические операции над двоичными векторами. Переопределяет арифметические операции и операции отношения. Предопределенные типы — массивы BIT. UNSIGNED(na to | downto na)array of bit SIGNED(na to | downto na)array of bit
3.1. Переопределенные операции
Левый Операция Правый Результат oперанд операнд
abs sg sg
—sgsg un ARITH_OP un un sg ARITH_OP sg sg un ARITH_OP na un sg ARITH_OP In sg
Приложение 1 275
un RELAT_OP un bool sg RELAT_OP sg bool un RELAT_OP na bool sg RELAT_OP In bool
Имена функций сдвига те же, что в пакете NUMERIC_STD.
3.2. Функции преобразования типов
Èç Â Функция
un,bv sg SIGNED(àðã) sg,bv un UNSIGNED(àðã) sg,un bv STD_LOGIC_VECTOR(àðã) un,sg In TO_INTEGER(àðã) lna un TO_UNSIGNED(àðã) In sg TO_SIGNED(àðã)
4. Пакет STD_LOGIC_ARITH
Включает арифметические операции, операции отношения и сдвига. Предопределенные типы — массивы STD_LOGIC. UNSIGNED(na to | downto na) SIGNED(na to | downto na) SMALL_INT Integer значения 0 или 1 Переопределенные операции-описание опущено
Функции преобразования типов
Èç Â Функция
un,lv sg SIGNED(àðã) sg,lv un UNSIGNED(àðã) sg,un lv STD_LOGIC_VECTOR(àðã) un,sg In CONV_INTEGER(àðã) In,un,sg,u un CONV_UNSIGNED(àðã,paçìåð) In,un,sg,u sg CONV_SIGNED(àðã, paçìåð) In,un,sg,u lv CONV_STD_LOGIC_VECTOR(àðã, paçìåð)
Пример:
CONV_STD_LOGIC_VECTOR(5, 4) дает вектор "0101".
5. Пакеты STD_LOGIC_UNSIGNED и STD_LOGIC_UNSIGNED
Unsigned обеспечивает возможность отношений и арифметических операций
над std_logic_vector как над беззнаковыми числами, а signed — как над числами со знаком (левый разряд) в дополнительном коде.
Пример использования функции преобразования conv_integer ниже. library IEEE; use IEEE.STD_LOGIC_1164.all;
use work.STD_LOGIC_arith.all;use work.STD_LOGIC_unsigned.all; architecture beh of pol5 is
s ignal i : integer; signal a,b,c : std_logic_vector(0 to 10):=(others=>'0') begin c<=unsigned(b)+1;
i<= conv_integer(a);-- unsigned b<=conv_std_logic_vector(i,5);-- arith
end beh;
Приложение 2
VERILOG — краткий справочник
В данном справочнике в основном представлено подмножество языка, исполь-
зуемое при функциональном описании систем и тестов. Опущены вопросы схемотех­нического уровня описаний,встроенных и пользовательских примитивов,интерфейса с другими языками — PLI, конфигурирование, генерация и т. п. Специально отмече­ны новые свойства версии стандарта IEEE 1364—2001 (ниже VERILOG-2000), кото­рый полностью включает свойства предыдущей версии VERILOG—1995.
Принятые обозначения: ... — повторяющиеся элементы синтаксической конструкции; [] — в квадратных скобках заключены необязательные элементы синтаксиче-
ской конструкции (исключение — случаи использования [] в самих синтаксиче­ских конструкциях);
или — разделяет альтернативные варианты конструкции, как и символ |.
1. Лексические элементы
1.1. Символы
Символы кода ASCII и невидимые знаки, именуемые ниже как пустое_место:
пробел, табуляция, конец строки, перевод каретки, EOF — «конец файла».
1.2. Комментарии и атрибуты
1.2.1. Комментарий
// начало одной строки комментариев, заканчивающейся концом строки. /* начало многострочного комментария, заканчивающегося */
Пример: f=1;//XOXO-ПАРНИША
1.2.2. Атрибут (VERILOG-2000) — текст в скобках (* *)
Специальный комментарий для систем синтеза, отражающий свойства моду-
лей, операторов или портов.
Пример: (* full_case *) case (k)1:a=b;2: a=c; endcase // атрибут оператора case
1.3. Символы операций и скобок
VERILOG-1995 и дополнительные VERILOG-2000
Скобки ( ) [ ] { } ? : (* *) V-2000 Операции Арифметические + - * / % ** V-2000 Логические побитовые & | ^ ~^ ~
Приложение 2 277
Отношения < > <= >= Редукции & ~& | ~| ^ ~^ Логические && || ! Сравнения == != Идентичности === !== Сдвига << >> <<< >>> V-2000 Разные -> @* V-2000 Присваивание = <=
1.4. Имена
1.4.1. Простые
Имена(идентификаторы) начинаются с букв a-z A-Z или символа _ или сим-
вола $ и могут включать помимо них цифры 0-9.
Примеры: reset_n, clr, e2_e4, _F, A___B_ Большие и малые буквы в именах различаются. Пример разных имен: VàS è Vas.
1.4.2. Системные
Имена, начинающиеся с $ зарезервированы за системными процедурами и
функциями:
Пример: $time.
1.4.3. Расширенные имена
Начинаются со знака обратной косой черты, могут включать любые символы
и заканчиваются пустым местом.
Пример: \f+d-pad1.
1.4.4. Ключевые слова (зарезервированные имена)
always and assign attribute begin buf bufif0 bufif1 case casex casez cmos deassign default defparam disable edge else end endcase endfunction
endmodule endprimitive endspecify endtable endtask event for force forever fork function highz0 highz1 if ifnone initial inout input integer join medium module
large macromodule nand negedge nmos nor not notif0 notif1 or output parameter pmos posedge primitive pull0 pull1 pulldown pullup rcmos real realtime
reg release repeat rnmos rpmos rtran rtranif0 rtranif1 scalared signed small specify specparam strength strong0 strong1 supply0 supply1 table task time tran
tranif0 tranif1 tri tri0 tri1 triand trior trireg unsigned vectored wait wand weak0 weak1 while wire wor xnor xor
278 Приложение 2
1.4.4.1. Новые(дополнительные) ключевые слова VERILOG-2000
Блок конфигурации — config , endconfig , design, instance, cell, use, liblist. Блок генерации — generate, endgenerate, genvar, localparam. Прочие — automatic, cell, noshowcancelled, pulsestyle_onevent, pulsestyle_ondetect,
showcancelled.
Новые системные функции и процедуры — $ferror, $fgetc, $fgets, $fflush, $fre-
ad, $fscanf, $fseek, $fsscanf, $ftel, $rewind, $sformat, $swrite, $swriteb, $swriteh, $swri­teo, $ungetc.
Директивы компиляции — `ifndef, `elsif, `undef,`line.
1.4.4.2. Ключевые слова — cинтезабельное подмножество VERILOG-95 (более точно см. в описании конкретной системы синтеза)
and always assign begin buf bufif0 bufif1 case casez casex default defparam disable else end endcase endfunction endmodule endtask function for if inout input integer module macromodule nand negedge nor not notif0 notif1 or output parameter posedge reg endtask supply0 supply1 task tri tri0 tri1 wand wire while wor xnor xor
1.4.4.3. Ключевые слова — неcинтезабельное подмножество VERILOG-95 (более точно см. в описании конкретной системы синтеза)
cmos deassign disable edge endprimitive endspecify endtable event force forever fork highz0 highz1 ifnone join large medium nmos pmos primitive pull0 pull1 pulldown pullup rcmos real realtime release repeat rnmos rpmos rtran rtranif0 rtranif1 scalare small specify specparam strong0 strong1 table task time tran tranif0 tranif1 triand trior trireg vectored wait weak0 weak1
1.4.4.4. Ключевые слова — верификабельное подмножество VERILOG-95
always assign begin case casex default defparam else end endcase endfunction endmodule function if initial inout input module negedge or output parameter posedge reg tri tri0 tri1 wire
1.4.5. Составные (иерархические) имена
Они организуют доступ к переменной, соединению, процедуре или функции из любого места описания проекта. Доступ может быть организован с помощью иерархического имени, определяющего путь к обьекту. Полный путь начинается с имени старшего модуля проекта и содержит имена конкретизаций модулей, со­держащих обьект; относительный путь начинается с имени конкретизации данно го модуля.
Пример: ALU.carry.bl1.cin
-
Приложение 2 279
1.5. Логические значения
1.5.1. Алфавит
Значения четырехзначного алфавита :1'b0,1'b1,1'bz,1'bx.
Символ ? — это еще один способ представления логического значения Z.
Обозначение Пояснения
0 Ноль, низкий уровень, ложь
1 Единица, высокий уровень, истинно
z èëè Z
x èëè X Неопределенное, неизвестное, неинициализированое
Состояние высокого импенданса
(третье состояние)
1.5.2. Сила (вес) сигнала
Verilog-сигналы ( данные вида соединение) могут принимать значение восьми сил(весов): 4 управляющих, 3 емкостных и силу третьего состояния (сила высоко­го импенданса).
Уровень
ñèëû
7 (питание) Supply Drive supply0 supply1 Su0 Su1
(сильный сигнал -с выхода элемента)
6
Strong Drive (привязака шины к источнику)
5
Pull Drive (большая емкость соединения)
4
Large Capacitive (слабый сигнал — с выхода элемента)
3
Weak Drive
2 (средняя емкость) Med. Capacitive medium Me0 Me1
(малая емкость соединения)
1
Small Capacitive
0 (третье состояние) High Impedance highz0 highz1 HiZ0 HiZ1
Название силы Ключевое слово Мнемоника
strong0 strong1 St0 St1
pull0 pull1 Pu0 Pu1
large La0 La1
weak0 weak1 We0 We1
small Sm0 Sm1
2. Литералы
2.1. Целые
Синтаксис: размер'основание код или размер'sоснование код
Размер — необязателен, задает разрядность числа. Если разрядность не указа­на, то по умолчанию число 32-разрядное.
'основание — необязателен. Определяет основание системы счисления (d — десятичное, b — двоичное, o — восьмеричное, h — шестнадцатеричное). По умол чанию основание десятичное.
s — признак знакового литерала (sb, sd, so, sk).
-
280 Приложение 2
2.1.1. Целые литералы без указания числа разрядов (размера), но с системой кодировки (основанием)
Примеры:
17255, 'd17255 // десятичная система 'sd441 // десятичная система cо знаком 'b10x1 // двоичная система 'sb1011 // двоичная система cо знаком 'hAZX1 // шестнадцатиричная система 'sh1019 // шестнадцатиричная система cо знаком
2.1.2. Целые литералы с указанием количества разрядов (размера) и системы кодировки (основанием)
Примеры изображения числа 57: Двоичная система 8'b0011_1001 // символ _ используется для наглядности Шестнадцатиричная 8'h39 // в векторе 8 разрядов Восьмиричная 8'o071 Размер числа считается справа налево (от младших разрядов -lsb до стар-
ших- msb). Для беззнаковых литералов действуют правила дополнения до размера.
Когда указанный в описании размер числа меньше, чем фактическое значе-
ние, то старшие левые разряды обрезаются (3'hA равно 3'b010).
Когда указанный размер числа больше, чем фактическое значение и самый левый бит имеет значение 0 или 1, то все остальные старшие биты заполняются нулями (6'hA равно 6'b001010).
Когда указанный размер числа больше, чем фактическое значение и самый левый бит имеет значение Z или X, то все остальные старшие биты заполняются соответственно Z или X (6'bX равно 6'bXXXXXX).
Для чисел со знаком — дополнение знаком (6'shA равно 111010).
2.2. Вещественные (реальные — real) литералы
Синтаксис
Значение.значение Запись с точкой
Основание E Степень
Основание e Степень
Запись в экспоненциальной форме
Примеры записи числа ПИ: 3.14 .314Å1.
3. Типы и виды данных
Тип определяет множество принимаемых значений данных, вид-свойства и множество операторов над данными. Имеется два основных вида данных: пере­менные и связи.
3.1. Вид переменная
Может быть разных типов — вектором, целым, вещественным, временем (reg, integer, real, time, realtime).
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]