//main FSM
always @(posedge sda)
if (scl == 1)
stop_W_R;
else
begin
casex(state)
2'b01: begin
read_in;
if (ctrl_byte == w7 || ctrl_byte == w6 || ctrl_byte == w5
||ctrl_byte == w4 || ctrl_byte == w3 || ctrl_byte == w2
||ctrl_byte == w1 || ctrl_byte ==w0)
begin
state = 2'b10;
write_to_eeprom;
end
else
state = 2'b00;
end
2'b11: read_from_eeprom; // read operation
default:
state = 2'b00;
endcase
end
一开始sda信号上升沿到来,触发这个always块。进入always块后,read in 这个任务会利用sda信号的变化,不断从sda信号读取数据。那么我的问题是,在执行read in 这个任务时,sda 信号会变化就会重新触发这个always块。这样这个read in这个任务可以执行完吗?好像陷入了死锁。大家是怎么理解的,可以解释下吗。先表示感谢