代码太多了,这里只写个框架吧,
always @ (negedge clk or posedge reset )
if(reset)
begin
.....复位的寄存器......
end
else if(data_en)
begin
shift;
state2<=ready;
end
else
case (state2)
idle1:
......后续状态.........
endcase
...........................................
task shift;
begin
casex (state3)
shifthigh:
begin
read_en<=0;
datastor[reg_data_width+reg_data_width-1:reg_data_width]<=data;
state3<=shiftlow;
end
shiftlow:
begin
read_en<=0;
datastor[reg_data_width-1:0]<=data;
state3<=idle;
end
idle:
begin
read_en<=0;
state3<=idle;
end
endcase
end
endtask
就是这个datastor寄存器中的数据,当有第3个data_en触发,就不接data中的数据了。前两个就可以。不知道为什么。。不知道我说清楚了吗?