那个start的值为0,edge check里temp和start的异或为x,之后检测到clk2上升沿的话,temp1=start,dianzhen_edge就永远是0了啊,那dianzhen_signal就永远是0,那怎么有的动画。
在case(light_mode[1:0])中有start <= ~start;意思是翻转start,即0变为1,1变为0,edge_check用于检测翻转过程的上升沿或者下降沿,然后输出一个时间很小的脉冲即dianzhen_edge(如果是clk1k的时钟的话输出一个1ms的脉冲)。这个脉冲会使dianzhen_signal变为1'b1,在播放完所有图片后然后dianzhen_signal变为0.
这里是由于快递员端(带有EPPROM,最原始的代码)时,按键是在50M时钟下(因为有I2C),然而在你们用户端要求中其实这个部分是可以不用的,只是由于我懒得改了就保留这一部分。
你也可以修改这部分,将if(count_three_second == 16'd4000)与if(temp_keyboard_signal == 1'b1 && keyboard_signal == 1'b0)里面的start <= ~start改为start <= 1,然后两个都加个else加入start <= 0,并把这里的always改为clk1k,这样start就是一个1ms的脉冲,用这个脉冲的上升沿去复位点阵也是可以的。