#verilog #system-verilog
Вопрос:
У меня не так много знаний о системном верилоге, и у меня есть следующий вопрос.
Как я знаю, если край сигнала сброса был вызван в списке чувствительности блока always, то тип сброса этого сигнала сброса является «асинхронным», мне нужно знать, каков тип сброса сигнала сброса always_latch?
module test (input in_1,in_2,rst,clk,sig, output reg out_1,out_2,out_3);
always_latch
begin
if(~rst) // what is the reset type of this reset signal.?
out_3 <= 0;
else if(~sig)
out_3 <= in_1;
end
wire x,x2;
second uu(x, x2, rst, clk, sig, out_1);
endmodule
module second(input i_1,i_2,r,c,sig, output reg o_1);
reg z,zz;
always@(negedge c or negedge r)
begin
if(~r) // asynchronous reset type
z <= 0;
else
z <= i_1;
end
always@(posedge c or negedge r)
begin
if(~r) // asynchronous reset type
zz <= 0;
else
zz <= i_1;
end
endmodule
Ответ №1:
Оба сброса являются асинхронными. У вас не может быть синхронного сброса в защелке, потому что нет часов. always_latch
Конструкция в вашем примере создает неявный список чувствительности
always @(rst or sig or in_1)
Причина always
, по которой список чувствительности имеет значение a negedge r
, заключается в том, чтобы отфильтровать изменение на восходящем краю r
. Если бы у вас не было этого фильтра, восходящий край r
активировал бы блок и обрабатывался бы так же, как и край часов.