乘法器电路的设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
parameter size = 8;
input[size:1] a, b;
// 源操作数
output[2*size:1] outcome; // 乘积
assign outcome = a*b; endmodule
// 相乘
8位并行乘法器RTL图
9.2.2 移位相加乘法器
结构 移位寄存器 加法器
4'h8: out = 4'b0000; 4'h9: out = 4'b0010; 4'ha: out = 4'b0100; 4'hb: out = 4'b090; 4'hc: out = 4'b0000; 4'hd: out = 4'b009; 4'he: out = 4'b090; 4'hf: out = 4'b1001; default: out = 4'bx; endcase end endmodule
结构 操作数:地址 乘积:存储器
优点 运算速度快
缺点 耗用存储资源多
wenku.baidu.com 设计思路
4位查找表乘法器 Y = A×B A = A1×22+A2 B = B1×22+B2 则 Y = ( A1×22+A2 )×( B1×22+B2 ) = A1×B1×24 + A1×B2×22 + A2×B1×22 + A2×B2
/*************** 4×4查找表乘法器 ****************/ module mult4x4( out, a, b, clk ); output[7:0] out; // 乘积 input[3:0] a, b; // 操作数 input clk; reg[7:0] out;
8位查找表乘法器 Y = A×B A = A1×24+A2 B = B1×24+B2 则 Y = ( A1×24+A2 )×( B1×24+B2 ) = A1×B1×28 + A1×B2×24 + A2×B1×24 + A2×B2
【例9.5】 8×8查找表乘法器 /********** 2×2查找表乘法器 *********/ module lookup( out, a, b, clk ); output[3:0] out; // 乘积 input[1:0] a, b; // 操作数 input clk; reg[3:0] out;
lookup m1( outa, firsta, firstb, clk ), // 元件调用 m2( outb, firsta, secondb, clk ), m3( outc, seconda, firstb, clk ), m4( outd, seconda, secondb, clk );
reg[3:0] address; // 存储器地址
always @( posedge clk ) begin
address = { a, b }; case( address )
4'h0: out = 4'b0000; 4'h1: out = 4'b0000; 4'h2: out = 4'b0000; 4'h3: out = 4'b0000; 4'h4: out = 4'b0000; 4'h5: out = 4'b0001; 4'h6: out = 4'b0010; 4'h7: out = 4'b009;
always @( a or b ) begin
outcome = 4’h0; for( i = 1; i <= size; i = i+1 )
if( b[i] ) outcome = outcome + ( a << (i-1) ); end endmodule
乘法器的功能仿真波形图
9.2.3 查找表乘法器
reg[1:0] firsta, firstb; // 操作数高2位 reg[1:0] seconda, secondb; // 操作数低2位 wire[3:0] outa, outb, outc, outd; // 乘积每2位1组
always @( posedge clk ) begin
firsta = a[3:2]; seconda = a[1:0]; firstb = b[3:2]; secondb = b[1:0]; end
9.2 乘法器设计
应用 数字信号处理和数字通信 地位 影响系统的运行速度 实现
并行乘法器 移位相加乘法器 查找表乘法器 加法树乘法器
9.2.1 并行乘法器
结构 用乘法运算符描述 由EDA软件综合
优点 运算速度快
缺点 耗用资源多
【例9.4】8位并行乘法器
module mult( outcome, a, b);
always @( posedge clk ) begin
out = ( outa << 4 ) + ( outb << 2 ) // 乘积 + ( outc << 2 ) + outd;
end endmodule
4位查找表乘法器仿真波形图
/*************** 8×8查找表乘法器 ****************/ module mult8x8( out, a, b, clk ); output[15:0] out; // 乘积 input[7:0] a, b; // 操作数 input clk; reg[15:0] out;
reg[3:0] firsta, firstb; // 操作数高4位 reg[3:0] seconda, secondb; // 操作数低4位 wire[7:0] outa, outb, outc, outd; // 乘积每8位1组
always @( posedge clk ) begin
firsta = a[7:4]; seconda = a[3:0]; firstb = b[7:4]; secondb = b[3:0]; end
优点 耗用资源少
【例9.16】8位二进制数的乘法 module mult_for( outcome, a, b ); parameter size = 8; input[size:1] a, b; output[2*size:1] outcome; reg[2*size:1] outcome; integer i;