1. 序列乘法器
兩個n位二進位制數x、y的乘積用簡單的方法計算就是利用移位操作來實現。
module乘法功能是正確的,但計算一次乘法須要8個週期。因此能夠看出序列乘法器速度比較慢、時延大。但這樣的乘法器的長處是所占用的資源是全部型別乘法器中最少的,在低速的訊號處理中有著廣泛的應用。multi_cx(clk, x, y, result);
input
clk;
input [7:0
] x, y;
output [15:0
] result;
reg [15:0
] result;
parameter s0 = 0, s1 = 1, s2 = 2
;
reg [2:0] count = 0
;
reg [1:0] state = 0
;
reg [15:0
] p, t;
reg [7:0
] y_reg;
always @(posedge clk) begin
case
(state)
s0:
begin
count
<= 0
; p
<= 0
; y_reg
<=y;
t <= }, x};
state <=s1;
ends1:
begin
if(count == 3
'b111)
state <=s2;
else
begin
if(y_reg[0] == 1
'b1)
p <= p +t;
else
p <=p;
y_reg
<= y_reg >> 1
; t
<= t << 1
; count
<= count + 1
; state
<=s1;
endend
s2:
begin
result
<=p;
state
<=s0;
enddefault
: ;
endcase
endendmodule
2.流水線乘法器
一般的高速乘法器通常採用逐位並行的迭代陣列結構,將每乙個運算元的n位都並行地提交給乘法器。可是一般對於fpga來講。進製的速度快於加法的速度,這樣的陣列結構並非最優的。所以能夠採用多級流水線的形式。將相鄰的兩個部分乘積結果再加到終於的輸出乘積上,即排成乙個二叉樹形式的結構,這樣對於n位乘法器須要lb(n)級來實現。
module從圖中能夠看出,流水線乘法器比序列乘法器的速度快非常多非常多,在非快速的訊號處理中有廣泛的應用。至於快速訊號的乘法一般須要利用fpga晶元中內嵌的硬核dsp單元來實現。multi_4bits_pipelining(mul_a, mul_b, clk, rst_n, mul_out);
input [3:0
] mul_a, mul_b;
input
clk;
input
rst_n;
output [7:0
] mul_out;
reg [7:0
] mul_out;
reg [7:0
] stored0;
reg [7:0
] stored1;
reg [7:0
] stored2;
reg [7:0
] stored3;
reg [7:0
] add01;
reg [7:0
] add23;
always @(posedge clk or
negedge rst_n) begin
if(!rst_n) begin
mul_out
<= 0
; stored0
<= 0
; stored1
<= 0
; stored2
<= 0
; stored3
<= 0
; add01
<= 0
; add23
<= 0
;
endelse
begin
stored0
<= mul_b[0]? : 8
'b0;
stored1
<= mul_b[1]? : 8
'b0;
stored2 <= mul_b[2]? : 8
'b0;
stored3 <= mul_b[3]? : 8
'b0;
add01
<= stored1 +stored0;
add23
<= stored3 +stored2;
mul_out
<= add01 +add23;
endend
endmodule
乘法器的Verilog HDL實現
1.序列乘法器 兩個n位二進位制數x y的乘積用簡單的方法計算就是利用移位操作來實現。module multi cx clk,x,y,result input clk input 7 0 x,y output 15 0 result reg 15 0 result parameter s0 0,s1...
乘法器的Verilog HDL實現
color darkred size medium 1.序列乘法器 兩個n位二進位制數x y的乘積用簡單的方法計算就是利用移位操作來實現。size color 對應的hdl 為 module multi cx clk,x,y,result input clk input 7 0 x,y output...
乘法器的Verilog HDL實現
1.序列乘法器 兩個n位二進位制數x y的乘積用簡單的方法計算就是利用移位操作來實現。module multi cx clk,x,y,result input clk input 7 0 x,y output 15 0 result reg 15 0 result parameter s0 0,s1...