wuyouwuyou

FSM控制

0
阅读(10940)

在数据输入结束后立刻流出结果,还是允许延时若干时钟周期后再流出结果,要根据具体的性能要求来决定。

当输入8位全零的数据时,在时钟下一拍就可以得到计算结果。借鉴计算机体系结构中的流水的思想,可以考虑数据一边输入一边送入相关的功能部件进行计算,主要是加法器和乘法器。应该尽可能选择低位数的加法器和乘法器以减少设计成本

always@(present_state or Serial_in)

      begin 

          case(present_state)

           State0:                                       

                  begin

                    Sel=3'b000;

                   if(!Serial_in)

                     Next_state=State0;

                  else

                     Next_state=State1;              

                  end

          State1:

                  begin

                      if(!Serial_in)

                         Next_state=StateY;

                      else

                         Next_state=State2;

                  end

State2:

                  begin

                      if(!Serial_in)

                         Next_state=StateY;

                      else

                         Next_state=State3;

                  end

             State3:

                  begin

                       if(!Serial_in)

                          Next_state=StateY3;

                       else

                          Next_state=State4;  

                  end

             State4:

                  begin 

                       if(!Serial_in)

                          Next_state=StateY4;

                       else

                          Next_state=State5;                                       

                  end

             State5:

                  begin

                       if(!Serial_in)

                          Next_state=StateY;

                       else

                          Next_state=State5; 

                  end

             StateY:                            //output process

                   begin

                    Sel=3'b100;

                    Next_state=State0;

                   end

             StateY3:

                   begin                 

                    Sel=3'b010;               

                   Next_state=State0;

                   end

             StateY4:

                   begin                  

                   Sel=3'b001;                

                   Next_state=State0;        

                   end

             default:

                   Next_state=State0;

                    endcase

            end