第一个always块
always @(posedge clk)
begin
if (rst)
begin
user_interrupt_state <= 'b0;
user_interrupt <= 'b0;
last_user_interrupt <= 'b0;
user_interrupt_counter <= 'b0;
end
else
begin
// user interrupt
if (!user_interrupt_busy)
begin
last_user_interrupt <= framedone;
end
if (user_interrupt_state) // interrupt
begin
if (user_interrupt_counter == user_interrupt_pulsewidth)
begin
user_interrupt_state <= 'b0;
user_interrupt <= 'b0;
user_interrupt_counter <= 'b0;
end
else
begin
user_interrupt_state <= 1'b1;
user_interrupt <= 1'b1;
user_interrupt_counter <= user_interrupt_counter + 1;
end
end
else // idle
begin
if (!last_user_interrupt && !user_interrupt_busy && (framebuffer0_ready || framebuffer1_ready || framedone))
begin
user_interrupt_state <= 1'b1;
user_interrupt <= 1'b1;
user_interrupt_counter <= user_interrupt_counter + 1;
end
else
begin
user_interrupt_state <= 'b0;
user_interrupt <= 'b0;
user_interrupt_counter <= 'b0;
end
end
end
end