#system-verilog
#system-verilog
Вопрос:
Рассмотрим переменную проводного типа x. Присвоение значения внутри начального и конечного блоков. Например, begin x = 1’b0 end
И вне блока begin-end. Например
назначить x = 1’b0
В чем основное различие между ними?
Комментарии:
1. Вы не можете выполнить процедурное присвоение проводу
Ответ №1:
Verilog имеет два типа конструкций: структурную и процедурную.
Внутри модуля у вас могут быть объявления и структурные конструкции, например generate
, экземпляры модуля, назначения. это то, что представляет собой часть схемы.
input data
wire a;
wire b;
assign a = data; // this is a wire connection in the circuit
assign b = ~data; // this an inverted gate and b is connected to its output
И у вас есть процедурные контексты, где вы можете описать логику, больше похожую на программирование.
// sequential logic
always @(posedge clk or negedge rstn) begin
// here you cannot assign
if(~rstn) begin
// here you reset your logic
end
else begin
// here you write some logic that can be though
// as an event handler
// every variable here will be be store in a flop
a <= data;
// the value of a is not updated at this point
// only after the block execution ends
// it is called non-blocking assignment
end
end
input data;
reg b;
always @(data) begin
b = data; // b is not a flop even though it was declared as a reg.
end
Существует гораздо больше, если вы сделаете свой вопрос более конкретным, это может помочь в ответе.