(原创)加法树乘法器的设计

闲来之余,写了个加法树乘法器的小程序,此乘法器的最大特点是通过增加资源而提高运行速度,使

两八位数相乘能够在一个周期中完成。

 

ContractedBlock.gif ExpandedBlockStart.gif Code
 1module mult(clk,a,b,result);
 2input clk;
 3input [7:0] a;
 4input [7:0] b;
 5
 6output [15:0] result;
 7
 8wire[10:0] result_low;
 9wire[14:0] result_high;
10
11reg [7:0] result0;
12reg [8:0] result1;
13reg [9:0] result2;
14reg [10:0] result3;
15reg [11:0] result4;
16reg [12:0] result5;
17reg [13:0] result6;
18reg [14:0] result7;
19reg [8:0] out0;
20reg [10:0] out1;
21reg [12:0] out2;
22reg [14:0] out3;
23
24function[7:0] mux;
25input [7:0] operand;
26input select;
27begin
28mux=select?operand:8'b00000000;
29end
30endfunction
31always@(a or b)
32begin
33result0<=mux(a,b[0]);
34result1<=mux(a,b[1])<<1;
35result2<=mux(a,b[2])<<2;
36result3<=mux(a,b[3])<<3;
37result4<=mux(a,b[4])<<4;
38result5<=mux(a,b[5])<<5;
39result6<=mux(a,b[6])<<6;
40result7<=mux(a,b[7])<<7;
41end
42
43always@*
44begin
45out0<=result0+result1;
46out1<=result2+result3;
47out2<=result4+result5;
48out3<=result6+result7;
49end
50
51assign result_low=out0+out1;
52assign result_high=out2+out3;
53assign result=result_low+result_high;
54endmodule
55

 

完整代码及testbench

mult.rar

转载于:https://www.cnblogs.com/changlong/archive/2008/12/21/1359130.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值