yintengfei的个人空间 https://blog.eetop.cn/1089522 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

Verilog实现串/并行加法器

已有 2859 次阅读| 2014-4-5 14:17 |个人分类:小失身手

实现两个N位二进制数dataa、datab的乘积,用简单的方法计算就是利用移位操作来实现。dataa进行位扩展左移累加的操作,datab不便右移的操作。
module Multiply(
clk,rst,
dataa,datab,
dout
);
input clk; 
input rst;
input [7:0] dataa;
input [7:0] datab;
output reg[15:0] dout; 
parameter s1 = 0,s2=1,s3=2;

//reg [7:0]dataareg;
reg [7:0]databreg;
reg [1:0]state;

reg [15:0]tmp;
reg [15:0]dreg;
reg [2:0]count;
always@(posedge clk or negedge rst)
if(!rst)
begin
tmp<=16'b0;
databreg<=8'd0;
state<=0;
// state<=s1;
end
else
case(state)
s1:begin
// tmp<={{8{dataareg[7]}},dataareg};
dreg<=16'd0;
count<=3'd0;
tmp<={{8{dataa[7]}},dataa};
// $dispaly("number %d",tmp);
state<=s2;
databreg<=datab;
end
s2:begin
if(count==7)
state<=s3;
else begin
if(databreg[0]==1)
dreg<=tmp+dreg;
// else
databreg<=databreg>>1;
tmp <= tmp<<1;
// $
// $dispaly("number %d",tmp);
count =count+1;
state<=s2;
end
end
s3:begin
dout<=dreg;
state<=s1;
end
endcase  
endmodule

选择器件是cycloneII系列
环境是:quartusII11.0



点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 1

    获赞
  • 0

    评论
  • 455

    访问数
关闭

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


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

GMT+8, 2024-12-23 06:25 , Processed in 0.025360 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部