Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Языки VHDL и VERILOG в проектировании цифровой аппаратуры
.pdf
Приложение 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, $swriteo, $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).
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
