集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 931|回复: 0

乘法器实现

[复制链接]
fpga_feixiang 发表于 2021-10-15 22:54:38 | 显示全部楼层 |阅读模式
module multy
(
                input [3:0]dx,
                input [3:0]dy,
               
                output [8:0]dp
);





wire [3:0]dyx0;
assign dyx0[0]=dx[0]&dy[0];
assign dyx0[1]=dx[0]&dy[1];
assign dyx0[2]=dx[0]&dy[2];
assign dyx0[3]=dx[0]&dy[3];



wire [3:0]dyx1;
assign dyx1[0]=dx[1]&dy[0];
assign dyx1[1]=dx[1]&dy[1];
assign dyx1[2]=dx[1]&dy[2];
assign dyx1[3]=dx[1]&dy[3];




wire [3:0]dyx2;
assign dyx2[0]=dx[2]&dy[0];
assign dyx2[1]=dx[2]&dy[1];
assign dyx2[2]=dx[2]&dy[2];
assign dyx2[3]=dx[2]&dy[3];



wire [3:0]dyx3;
assign dyx3[0]=dx[3]&dy[0];
assign dyx3[1]=dx[3]&dy[1];
assign dyx3[2]=dx[3]&dy[2];
assign dyx3[3]=dx[3]&dy[3];








wire [1:0]ader010,ader011,ader012,ader013,ader014;
assign ader010=dyx0[0]+1'b0;
assign ader011=dyx0[1]+dyx1[0]+ader010[1];
assign ader012=dyx0[2]+dyx1[1]+ader011[1];
assign ader013=dyx0[3]+dyx1[2]+ader012[1];
assign ader014=                  dyx1[3]+ader013[1];

wire [5:0]adr01;
assign adr01={

                          ader014[1],
                          ader014[0],
                          ader013[0],
                          ader012[0],
                          ader011[0],
                          ader010[0]                          
                          };

wire [1:0]ader230,ader231,ader232,ader233,ader234;
assign ader230=dyx2[0]+1'b0;
assign ader231=dyx2[1]+dyx3[0]+ader230[1];
assign ader232=dyx2[2]+dyx3[1]+ader231[1];
assign ader233=dyx2[3]+dyx3[2]+ader232[1];
assign ader234=                   dyx3[3]+ader233[1];
wire [7:2]adr23;

assign adr23[7:2]={
                          ader234[1],
                          ader234[0],
                          ader233[0],
                          ader232[0],
                          ader231[0],
                          ader230[0]
};


wire [1:0]rel0,rel1,rel2,rel3,rel4,rel5,rel6,rel7,rel8;
assign rel0=adr01[0]+1'b0;
assign rel1=adr01[1]+1'b0;
assign rel2=adr01[2]+adr23[2]+rel1[1];
assign rel3=adr01[3]+adr23[3]+rel2[1];
assign rel4=adr01[4]+adr23[4]+rel3[1];
assign rel5=adr01[5]+adr23[5]+rel4[1];
assign rel6=                 adr23[6]+rel5[1];
assign rel7=                 adr23[7]+rel6[1];
assign         dp={
                        rel7[1],       
                        rel7[0],
                        rel6[0],
                        rel5[0],
                        rel4[0],
                        rel3[0],
                        rel2[0],
                        rel1[0],
                        rel0[0]
};               

endmodule
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-4-19 07:41 , Processed in 0.055661 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表