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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2059|回复: 5

[求助] 关于串行乘法器的问题

[复制链接]
发表于 2010-11-11 10:36:27 | 显示全部楼层 |阅读模式

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

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

x
module serial8mult(clk, x, y, p);//8位串行乘法器
    input clk;
    input [7:0] x;
    input [7:0] y;
    output [15:0] p;//结果输出
    reg[15:0]p;
  
parameter s0=0,s1=1,s2=2;
  reg[2:0]cnt;//位数计数器
  reg[1:0]state;//状态计数器
  reg[15:0]p1,t;
  reg[7:0]y_reg;
  
always@(posedge clk)begin
  case(state)
     s0:begin
     y_reg<=y;
     state<=s1;
     cnt<=0;
     p1<=0;
     t<={{8{x[7]}},x};
     end
     
     s1:begin
        if(cnt==7)
        state<=s2;
        else
          begin
          if(y_reg[0]==1)
            p1<=p1+t;
            y_reg<=y_reg>>1;
            t<=t<<1;
            cnt<=cnt+1;
            state<=s1;
        end
     end
     
     s2:begin
        p<=p1;
        state<=s0;
        end
  endcase
  end
endmodule


为什么t<={{8{x[7]}},x};中的8代表什么意思啊,谢谢
发表于 2010-11-11 15:31:45 | 显示全部楼层
bus重构,形成【15:0】的 reg
发表于 2010-11-11 17:09:46 | 显示全部楼层
eetop: sharing knowledge.
发表于 2010-11-11 17:56:33 | 显示全部楼层
{{8{x[7]}},x}就是8个x[7]和x构成一个16位的数,该语句其实就是将8位的x进行有符号扩展成一个16位数
 楼主| 发表于 2010-11-11 20:12:36 | 显示全部楼层
回复 4# marsfabio


    谢谢了
我明白是需要扩展的,我就是不知道为什么要用8个X[7],我觉得应该是8个0
发表于 2010-11-12 11:21:22 | 显示全部楼层
thanks
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-19 22:39 , Processed in 0.020293 second(s), 9 queries , Gzip On, Redis On.

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