Вы находитесь на странице: 1из 9

1. Какие типы данных существуют в Verilog?

Два класса типов данных.

Классы данных: net (wire, wand, wor, supply0,


supply1, tri0, tri1, trireg, trior, triand, tri), register (reg,
integer, real, time, realtime)
2. Как описываются вектора в Verilog?
3. Что такое стандартный примитив?

4. Как описываются структурные,


поведенческие и DataFlow модели в Verilog?
Модель уровня dataflow выполняет реализацию
схемы с помощью оператора assign в виде булевых
уравнений или условного оператора. В операторе
assign значение получают переменные, имеющие тип
данных класса цепи (net).
Модель уровня dataflow-модель
//Пример модели уровня передачи данных(data
flow) задание а
module mux4_to_1 (out, i0, i1, i2, i3, s1, s0);

//Декларация портов
output out;
input i0, i1, i2, i3;
input s1, s0;
assign out =
(~s1&~s0&i0)|(~s1&s0&i1)|(s1&~s0&i2)|(s1&s0&i3
);
endmodule
Поведенческие модели строятся на основе
операторов initial и always. В этих операторах
присваивать значения можно только переменные
регистрового типа. Поэтому выходы счетчика
COUNTER (листинг 1.5) и регистра Q (Листинг 1.6)
имеют тип reg.
Вентильная модель
module mux_4_to_1 ( output Out,
input In0, In1, In2, In3, Sel1, Sel0);
wire NotSel0, NotSel1, Y0, Y1, Y2, Y3;
and #8 (Y1, In1, NotSel1, Sel0);
not #2 (NotSel0, Sel0);
and #8 (Y3, In3, Sel1, Sel0);
or #10 (Out, Y0, Y1, Y2, Y3);
and #8 (Y0, In0, NotSel1, NotSel0);
not #2 (NotSel1, Sel1);
and #8 (Y2, In2, Sel1, NotSel0);
endmodule
Элементами структурного описания в языке
Verilog являются различные логические вентили,
специфические библиотечные компоненты и
компоненты, определяемые пользователем. Само
структурное описание как таковое представляет
собой набор компонентов, установленных в проект и
связанных проводами. В простейшем случае
структурное описание может рассмотриваться как
простой netlist, в котором представлены
установленные в проекте вентили, порты которых
связаны проводами между собой. Однако, в отличие
от списка связей (netlist), цепи в структурном
описании могут быть также представлены в виде
произвольных выражений, которые описывают то,
как будет функционировать та или иная цепь. Такое
назначение на цепь называют непрерывным
назначением. Непрерывные назначения — удобное
средство для связи между простыми списками связей
(netlist) и функциональными описаниями.
Структурное описание Verilog может содержать
различные иерархические конструкции и
конструкции уровня вентилей, а также определения
модулей, установленные компоненты и подключения
из netlist.

5. Какой тип данных должны иметь сигналы,


получающие значение в вентильной модели, через
оператор assign (в dataflow-модели), в
конструкциях initial или always?

net (wire)

6. Как описываются задержки в Verolog?


7. Для чего используется директива ‘timescale?

Эта директива определяет единицу времени и


временную точность элементов дизайна, которые
следуют за ней. Единица времени единица измерения
для значений времени, таких как время
моделирования и значения задержки. Используется
для описания единиц измерения и точности
вычисления параметров времени.
`timescale 10 ns / 1 ns
module test;
logic set;
parameter d = 1.55;
initial begin
#d set = 0;
#d set = 1;
end
endmodule
Директива `timescale 10 ns / 1 ns compiler
указывает, что единица времени для тестирования
модуля составляет 10 ns.
В результате значения времени в модуле кратные
10 ns, округленные до ближайших 1 ns;
Следовательно значение, хранящееся в параметре d,
масштабируется до задержки 16 ns (16 ns (1,6 × 10
ns)).
`timescale 10 ns / 100 ps 10 ns / 100 ps
assign #5 Q = D; // Q получит значение D через 50
ns

8. Как моделируются блоки initial и always


симулятором?

В начале симуляции для всех значений


переменных задаются значения по умолчанию. При
этом вещественные числа инициализируются
значением 0, а цепи — значением z . Для того чтобы
начинать работу симулятора какого-либо
конкретного значения, отличного от значения по
умолчанию, производится инициализация.
Начальное значение выхода для reg может быть
определено в утверждении инициализации

Необходимо также отметить различие между initial


и always . Утверждение initial выполняется только
один раз при симуляции программы. Утверждение
always будет выполняться каждый раз, как только
изменит свое значение хотя бы одна из переменных,
находящаяся в списке чувствительности для этого
утверждения.

Вам также может понравиться