Типы сигналов

При написании Verilog-проекта необходима следующая информа­ция о сигналах: значения, с помощью которых описывается поведение сигналов, и характер поведения (или тип) сигналов.

Как указывалось в главе 1, существуют четыре значения, которые могут принимать сигналы: 0, 1, z и х. Первые два соответствуют логиче­ским уровням, третье — состоянию с высоким импедансом, четвертое оз­начает неопределенное состояние и используется во всех случаях, когда симулятор не может определить значение данного сигнала (для входно­го сигналa х означает безразличное состояние).

В зависимости от характера (типа) сигнала порт может быть объ­явлен в Verilog-тексте как цепь или как регистр.

Цепи характеризуют непрерывное изменение (модифицирование) сигнала на выходе цифрового устройства относительно изменения сиг­налов на его входах. Цепь принимает значение источника (драйвера) сигнала. Если драйверы цепи имеют различную силу (параграф 1.4), цепь принимает значение более сильного сигнала; если сигналы по силе равнозначны, то цепь принимает неопределенное состояние х. Наи­меньшую силу имеет сигнал z.

Ключевое слово и формат записи при объявлении порта (портов)

цепью:

wire <имя порта или перечень имен через запятую»;

Например: wire prm; wire a,b;

По умолчанию порту, объявленному как wire, назначается величи­на z (default value) и разрядность — 1 бит.

Данные типа wire не могут быть назначены явно (т.е. им не могут быть присвоены численные значения в тексте), они нуждаются в сигна­ле-драйвере. Такое назначение называется непрерывным.

Цепь может также называться проводом.

Цепи характеризуются тем, что не могут хранить информацию (в качестве аналога цепи можно представить комбинационные схемы).

Если тип сигнала не объявлен, то по умолчанию порту присваива­ется тип wire. Хотя опыт показывает, что у всех портов лучше указывать все характеристики.

Рассмотренные ранее ключевые слова supply0 и supply1 также ис­пользуются для обозначения цепей.

Тип сигнала не является раз и навсегда установленной величиной, а может меняться от модуля к модулю.

Регистры. Основное различие между цепями и регистрами состоит в том, что значение регистра должно быть назначено явно. Эта величина сохраняется до тех пор, пока не сделано новое назначение. Такое назна­чение называется процедурным. Ключевое слово — reg, величина по умолчанию — x (величины z в регистре быть не может); разрядность по умолчанию — 1 бит.

Формат записи:

reg <имя порта или перечень имен через запятую»;

Например: reg out counter; reg out_nq,out_q;

В этом случае говорят: данные типа reg или данные типа wire.

Аналогом регистра является элемент памяти.

Для D-триггера, изображенного на рис.2.1, тип портов может быть объявлен следующим образом: reg data, enable, reset; wire q_tr;

Процедурное назначение характеризует не только данные типа reg, но также integer и real. Однако типы integer и real представляют собой абстрактные понятия, а типы wire и reg непосредственно отражаются в аппаратуре.

О правилах назначения испей и регистров. Общий принцип со­стоит в том, что характеристики всех портов должны быть объявлены. При этом могут быть исключения.

Входы внутренних модулей всегда должны иметь тип wire (цепь), так как они управляются внешними сигналами. Входы промежуточных модулей могут быть как цепью, так и регистром. Входы внешнего по отношению ко всем другим модулям имеют тип reg (регистр).

Выходы внутренних модулей могут иметь тип как reg, так и wire. Это зависит от введенных понятий и от применяемых в модуле конструк­ций. Выходы внешнего модуля должны быть типа wire, поскольку управ­ляются внутренними модулями (здесь также могут быть исключения).

Каждый модуль кроме входов и выходов может иметь также внут­ренние связи. Они не являются ни входами, ни выходами и должны быть объявлены с помощью ключевого слова wire.

Двунаправленный порт всегда имеет тип wire.

Ссылка на основную публикацию
Adblock detector
x