在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3648|回复: 3

[求助] verilog实现乘法器的代码,其中有一段不理解,大家帮忙看下,谢谢啦~~

[复制链接]
发表于 2013-3-16 16:01:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
大家好,下面一段代码是实现2个8位数相乘的运算
module multi(clk , x , y , result);
input clk;
input [7:0]x , y;
output result;

reg [15:0]result;

parameter s0 = 0;
parameter s1 = 1;
parameter s2 = 2;

reg [2:0]count = 0;
reg [2:0]state = 0;
reg [15:0]P , T;
reg [7:0]y_reg;

always@(posedge clk)
  begin
   case(state)
     s0:begin
      count <=3'd0;
      P<=16'b0;
      y_reg<=y;
      T<={{8{1'b0}} , x};
      state<=s1;
     end
     s1:begin
      if(count == 3'b111)
      
      state<=s2;
      else begin
       if(y_reg[0] == 1'b1)
       P<=P+T;
       else
       P<=P;
       y_reg<=y_reg>>1;
       T<=T<<1;
       count<=count+1;
       state<=s1;
      end
     end
     s2:begin
      result<=P;
      state<=s0;
     end
     default:;
   endcase
  end
  
endmodule

其中:
else
       P<=P;
       y_reg<=y_reg>>1;
       T<=T<<1;
       count<=count+1;
       state<=s1;
这个条件分支通过modelsim仿真发现,每个时钟都会有移位、计数器加1的操作,按我的思路,当if(y_reg[0] == 1'b1)成立时,下面的else分支应该永远不会实现的呀,这是怎么回事呢,请各位哥哥姐姐帮忙解答一下呗,谢谢了~~
 楼主| 发表于 2013-3-16 19:15:30 | 显示全部楼层
未命名.jpg
这个清楚点,刚才那段代码没高亮,会的帮个忙,谢谢!
发表于 2013-3-16 20:21:15 | 显示全部楼层
这里的else只管 P<=P; 这一句
 楼主| 发表于 2013-3-16 20:57:53 | 显示全部楼层
回复 3# beforeabc


    嗯嗯,刚才突然发现这个问题了,else下面没有begin  end,所以只管P<=P一句; 谢谢啦  O(∩_∩)O~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-29 02:00 , Processed in 0.019173 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表