关于乘法器和状态机的问题,求大神

2019-07-15 23:43发布

哪位大神能给我解释一下图 5.3 实现乘法的最长延时为 1 个与门的传输延时加上八个全加器的传输延时。假设每个全加器产生和与产生进位的传输延时相同,并且均相当 4 个与门的传输延时,则图 5.3 逐位进位并行乘法器的最长延时为 1+8×4=33 个门的传输延时。
还有状态机的问题
module fsm2(clk,rst_n,A,k1,k2,State);
input clk;
input rst_n;
input A;
output k1,k2;
output [4:0] State;
reg [4:0] State;   //当前状态寄存器
assign k1 =State[0];
assign k2 =State[4];

parameter    Idle = 5'b00000,            //采用毒热编码(每个状态只有一个寄存器置位的状态机这样用的组合电路省一些,而且速度也快)
                      Start = 5'b00010,
                      Stop = 5'b00100,
                      StoptoClear = 5'b11000,
                      Clear = 5'b01010,

  CleartoIdle  = 5'b00111;          //编码 ,注意,只有在最后一句用分号,其他地方用逗号

always @(posedge clk or negedge rst_n)
  if(!rst_n)  

     State <= Idle;

  else case (State)                   //状态判断与组合逻辑赋值

       Idle :if(A)  
      State <= Start;

else
State <= Idle;


Start :if(!A) State <= Stop;
       else State  <=  Start;
Stop  :if(A)
       State <=StoptoClear;


else State <= Stop;
StoptoClear :State <= Stop;

Clear :if(!A)
       State <= Clear;


else State <= Clear;
CleartoIdle :State <= Idle;
default : State <= Idle;//告诉综合器 case语句已经指定了所有状态,这样综合器就会删除不需要的译码电路,使生成的电路简单
endcase  

endmodule

为什么此程序要加StoptoClear和CleartoIdle这两个状态,不理解,不加不行吗


5}I7F_8$~20})FY3O]{5%WV.png
C@TSMA0$D`D7AOT{N@B[@L8.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。