С вашим входным стимулом выход (detector_out
) всегда равен 0.
Единственный способ установить detector_out
в 1 - это следующий оператор:
2'b11: detector_out <=(sequence_in==1)?1'b0:1'b1;
Это означает, что current_state
должно быть 3, а sequence_in
= 0. Но в ваших входных волнах sequence_in
всегда равно 1, когда current_state
= 3.
Если вы не думаете, что logi c неправильный, то настройте входной стимул, чтобы он попал в этот случай. Вот один способ (см. Мои <-----
комментарии):
initial
begin
// Initialize Inputs
$dumpfile("seq_0110.vcd");
$dumpvars(0,seq_0110_t);
$monitor($time,"sequence_in=%b detector_out=%b",sequence_in,detector_out);
sequence_in = 0;
reset = 1;
// Wait 100 ns for global reset to finish
#30;
reset = 0;
#45; // <------ more delay
sequence_in = 0;
#10;
sequence_in = 0;
#10;
sequence_in = 1;
// #20; <------ commented out
// sequence_in = 1; <------ commented out
#20;
sequence_in = 0;
#20;
Я сократил время sequence_in
= 1. Это устанавливает detector_out
= 1 в момент времени 115:
0sequence_in=0 detector_out=0
95sequence_in=1 detector_out=0
115sequence_in=0 detector_out=1
125sequence_in=0 detector_out=0
155sequence_in=1 detector_out=0
195sequence_in=0 detector_out=0
У меня есть пара других рекомендаций. Для ваших 2 комбинационных блоков always
вам следует рассмотреть возможность использования неявных списков чувствительности (always @*
) и назначений блокировки (=
).