这几天在写驱动加密芯片的代码产生了一个典型的错误:代码如下
1 always @ ( posedge clk_100 or negedge rst_n ) begin 2 if ( !rst_n ) begin 3 rst_flg <= 1‘b0 ; 4 end 5 else if ( rst_strt == 1‘b1 ) begin 6 rst_flg <= 1‘b1 ; 7 end 8 else if ( end_rst == 1‘b1 ) begin 9 rst_flg <= 1‘b0 ; 10 end 11 else begin 12 rst_flg <= rst_flg ; 13 end 14 end
这段代码的本意是在rst_strt有效时,给出一个复位标志;在复位结束时,清零复位标志。但是使用上述代码是有优先级的,即需要rst_strt先无效,之后才能响应end_rst。实际中没有考虑到rst_strt及时的清除。
时间: 2024-10-10 07:07:45