Скачиваний:
31
Добавлен:
29.12.2022
Размер:
8.96 Mб
Скачать

Классы данных

nОпределены два класса данных:

-Net

-Variable

nКласс данных Net (цепь):

-представляет физическую связь между элементами структуры

nets MUX

nets

Adder

 

nets

 

 

 

 

 

 

 

 

 

 

-Отражает значение драйвера цепи

-Имеет функцию «разрешения» - определяющую значение при подсоединении нескольких драйверов к цепи.

Объявление цепи (класс данных Net)

n Обобщенная форма объявления цепи:

- net_type <signed> <[range]> { net_name <[array]>, …}

l net_type – тип данных класса Net

l signed - <не обязательно> - знаковый (представлен в доп. коде)

l range - <не обязательно> - диапазон элементов вектора, если не задан, то – одноразрядная цепь

l net_name – имя цепи

l array - <не обязательно> - диапазон числа слов в массиве.

82

Типы данных класса Net

 

Тип данных

 

Для чего используется

 

Поддержка синтеза

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

wire

 

Используется для соединения модулей

 

Y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tri

 

 

Y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

supply0

 

Представляют константные данные (питание и

 

Y

 

 

supply1

 

землю)

 

Y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

wand

 

 

 

Y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

triand

 

Реализуют монтажную логику

 

Y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

wor

 

 

Y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

trior

 

 

 

Y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tri0

 

Цепь с z состоянием и резисторами

 

Y

 

 

tri1

 

pull-up/pull-down

 

Y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

trireg

 

Цепь, хранящая свое предыдущее значение

 

N

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Примеры объявления цепи

nПримеры:

-wire clr_n;

-wor temp;

-supply0 cnst_0;

-supply1 cnst_1;

nВыводы модуля по умолчанию имеют тип данных wire, но для выходов тип данных можно изменить:

-output wor x;

Примеры:

85

© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru )

Задание шины (вектора класса данных Net)

n Цепи могут быть объявлены как векторы (шины)

nДве способа объявление шины :

-net_type [ high : low] net_name;

-net_type [ low : high] net_name;

n Самый левый бит всегда старший

n Максимальный размер вектора – 2**32 разрядов

nПримеры:

-wire [15:0] mult_out; // шина 16 бит

-wire [0:15] busA, busB; // две шина 16 бит; старший разряд шины - 0

Обращение к элементам вектора

nПри обращении ко всем элементам вектора можно упустить квадратные скобки с индексами:

-wire [3:0] a, b;

-assign a=b;

nПри обращении к элементу вектора (bit select) значение индекса указывают в квадратных скобках:

-wire [3:0] a, b;

-assign a[3]=b[2];

87

Пример

88

Обращение к элементам вектора (2)

nПри обращении к нескольким элементам вектора

(Constant Part select):

- нельзя менять порядок перечисления его индексов:

l Не правильно: l wire [3:0] a, b; l assign a[0:3]=b;

nВ 2001 году в язык добавлена следующая возможность обращения к элементам вектора задавая (Variable Part Select):

-vector_name [ starting_bit number + : width]

-vector_name [ starting_bit number - : width]

89

Пример

90