需要确认注册邮箱后才能开通博客,立即确认我的邮箱
文章 搜索 高级搜索 ?3? ?3?
  • 滤波器new!
  • LED驱动 new!
  • 新能源 new!
  • PLL
  • PCIE协议
  • 可穿戴
  • LSI
  • FCI
文章 论坛 博客 小组 研讨会
EDN China>EDN论坛>EDA工具与服务专区>三种16位乘法器的程序
?
大家在做什么...
楼主 问题:

三种16位乘法器的程序

发布时间:2010-8-1 下午8:35

作者: 欧阳青云

等级: 技术员

积分: 499分

发帖数: 36次

网站总积分: 1004分

510分

发送消息

加为好友

查看用户的所有发言

查看用户的个人主页

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件

16位移位式乘法器

module multl16S(P,A,B);
output[31:0]P;
input[15:0]A;
input[15:0]B;
reg[31:0]p;
reg[31:0]temp;
reg[31:0]a;
reg[31:0]b;
reg[31:0]bitN;
always @ (A or B)
begin
?????? a="A";
?????? b="B";
?????? if(a==0 ||? b==0)
????????????? p="0";
?????? else if(a==1)
????????????? p="b";
?????? else if(b==1)
????????????? p="a";
?????? else
???????begin
????????????? p="0";
????????????? for(bitN=0;bitN<16;bitN=bitN+1)
???????????????????? if(b[bitN]==1)
???????????????????? begin
??????????????????????????? temp="a"<<bitN;
??????????????????????????? p="p"+temp;
???????????????????? end
???????????? end
?????? end
assign P="p";

endmodule

16位固定点式乘法器

module mult16_fp(P,A,B);
parameter width =16;
input[width-1:0]A;
input[width-1:0]B;
input[width+width-1:0]P;
reg[width-1:0]pp;
reg[width-1:0]ps;
reg[width-1:0]pc;
reg[width-1:0]ps1;
reg[width-1:0]pc1;
reg[width-1:0]ppram[width-1:0];
reg[width-1:0]psram[width:0];
reg[width-1:0]pcram[width:0];
reg[width+width-1:0]temp;
integer j;
integer k;
always @ (A?or B)
begin
?????? for(j=0;j<width;j=j+1)
???????begin
????????????? for(k=0;k<width;k=k+1)
???????????????????? pp[k]=A[k]&B[j];
???????????????????? ppram[j]pp[wiidth-1:0];
???????????????????? pc[j]=0;
??????????????end
????????????? pcram[0]=pc[width-1:0];
??????????????psram[0]=ppram[0];
????????????? pp="ppram"[0];
????????????? for(j=0;j<width;j=j+1)
????????????? begin
?????????????????? ?pp=ppram[j];
??????????????????? ps="psram"[j-1];
??????????????????? pc="pcram"[j-1];
??????????????????? for(k=0;k<width;k=k+1)
??????????????????? begin
?????????????????????????? ps1[k]=pp[k]^pc[k]^ps[k+1];
?????????????????????????? pc1[k]=pp[k]&pc[k]|pp[k]&ps[k+1]|pc[k]&ps[k+1];
??????????????????? end
??????????????????? ps1[width-1]=pp[width-1];
??????????????????? pc1[width-1]=0;
?????????????????? ?temp[j]=ps1[0];
????????????????????psram[j]=ps1[width-1:0];
?????????????????? ?pcram[j]=pc1[width-1:0];
?????????????end
???????????? ps="psram"[width-1];
??????????? ?pc=pcram[width-1];
???????????? pc1[0]=0;
???????????? ps1[0]=0;
???????????? for(k=0;k<width;k=k+1)
???????????? begin
??????????????????? ps1[k]=pc1[k-1]^pc[k-1]^ps[k];
?????????????????? ?pc1[k]=pc1[k-1]&pc[k-1]|pc1[k-1]&ps[k]|pc[k-1]&ps[k];
??????????? ?end
???????????? temp[width+width-1]=pc1[width-1];
???????????? temp[width+width-2:width]=ps1[width-1];
????? end
assign P="temp"[width+width-1:0];
endmodule


16位布斯乘法器

module booth(A,B,P);
parameter width="16";
input[width-1:0]A;
input[width-1:0]B;
output[width+width-1:0]P;
reg[width+width-1:0]P;
integer Count;
reg[width+width:0]PA,right;
always @ (A or B)
begin
?????? PA[width+width:0]={16'b0,A,1'b0};
?????? for(Count=0;Count<width;Count=Count+1)
?????? begin
??? ?? case(PA[1:0])
???????2'b10:
??? ???????? begin
????????????????????PA[width+width:width+1]=PA[width+width:width+1]-B? [width-1:0];
??? ??????????????? rightsh1(PA,right);
??? ???????? end
????? 2'b01:
????? begin
??? ???????? PA[width+width:width+1]=PA[width+width:width+1]+B[width-1:0];
??? ???????? rightsh1(PA,right);
??? ?end
??? ?default:
??? ??????? rightsh1(PA,right);
??? ?endcase
??? ?PA=right;
???? end
???? PA[width+width-1:0]=PA[width+width:1];
end
task rightsh1;
input[width+width:0]PA;
output[width+width:0]right;
case(PA[width+width:0])
1'b0:
?????? right[width+width:0]={1'b0,PA[width+width:1]};
1'b1:
???????right[width+width:0]={1'b1,PA[width+width:1]};
endcase
endtask
endmodule



?

?

分享到:? 新浪微博 ?? 微信 ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
qq空间 ?? 腾讯微博 ?? 人人网 ?? 百度搜藏 ??
引用 回复 收藏 推荐到小组 ( 0) ( 0) 关注

EDN China电子设计技术小米Max的“芯片级识别伪基站”是黑科技?太天真了!
第1楼

学习

发布时间:2010-11-17 下午10:52

作者: xiejinghx

等级: 初学者

积分: 58分

发帖数: 3次

网站总积分: 116分

58分

发送消息

加为好友

查看用户的所有发言

查看用户的个人主页

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件
学习
引用 回复
( 0) ( 0)


快速回复 高级回复
用户名:?
美国的游客?????? (您将以游客身份发表,请登陆 | 注册) ?
标题: * 标题还可以输入80
评论: * 你还可以输入30000
验证码: ?*?
分享: 新浪微博?? qq空间?? qq微博?? 人人网?? 百度搜藏??
维护专业、整洁的论坛环境需要您的参与,请及时举报违规帖子,如果举报属实,我们将给予相应的积分奖励。
谢谢您的热心参与!
返回EDA工具与服务 | 返回专业技术交流区
本论坛仅陈述专家或个人观点,并不代表EDN China 电子技术设计互动社区网站立场。
积分排行榜
彩云 [殿堂级工程师]
mzlr [殿堂级工程师]
特权同学 [殿堂级工程师]
敬请关注EDNC官方微信“edn-china"

每月定期向您递送电子元器件规格书网中的最新元器件数据手册下载、库存信息及技术参数更新。请点击订阅:

2016我的工程师社区
EDN官方QQ群???更多QQ群
  • EDN-深圳 8366025
  • 菜农Cortex-M0技术交流 12047788
  • EDN-哈尔滨 75642591
  • EDN-上海 15156661
  • EDN-广州 57660943
  • EDN-桂林 48813559
  • EDN-武汉 25150805
  • EDN-模拟电路 2837145
  • EDN-通讯 30548292
  • EDN-综合 57490949

促进EDN网友交流合作,方便EDN网友学习沟通

有问题请反馈