Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
initial
begin
a = 'b1;
b = 'b0;
end
always
begin
#50 a = ~a;
end
always
begin
#100 b = ~b;
end
End module
Процедурные присваивания
Процедурные присваивания предназначены для обновления целых
(integer), регистров (reg), времени (time) и переменных памяти (memory).
Между процедурным присвоением и непрерывным присвоением есть
существенная разница, например:
1. Непрерывные назначения управляют сетевыми переменными (например,
wire), оцениваются и обновляются всякий раз, когда входной операнд
изменяет значение.
Процедурные присваивания обновляют значение регистровых переменных
под управлением окружающих их процедурных конструкций потока.
2. Правая часть процедурного присваивания может быть любым
выражением, результатом которого является значение. Однако частичные
выборки в правой части должны иметь постоянные индексы. В левой части
указывается переменная, которая получает назначение из правой части.
Левая часть процедурного назначения может принимать одну из следующих
форм:
Блокирующее присваивание
Блокирующий оператор процедурного присваивания должен быть выполнен
до выполнения операторов, следующих за ним в последовательном блоке.
Оператор не препятствует выполнению операторов, следующих за ним в
параллельном блоке.
Синтаксис
<lvalue> = <timing_control> <expression>