微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于乘法器和状态机的问题,求大神

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

时间:10-02 整理:3721RD 点击:
哪位大神能给我解释一下图 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这两个状态,不理解,不加不行吗



LZ看看这个 ,看看能理解下不http://bbs.elecfans.com/jishu_475414_1_1.html

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top