一、對兩個二進位制數進行相乘運算,運用列式求法我們可以得知,乘法最終就是由加法和移位運算構成的,由此可以用高速度的加法和移位實現乘法操作,具體**如下:
module 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
module mult(
input clk,
input [3:0]a,b,
input rst_n,
output [7:0] out);
wire [5:0]out1;
wire [7:0]out2;
reg [6:0]te***;
reg [5:0]temp2;
reg [4:0]temp1;
reg [3:0]temp0;
function [3:0]mult4;
input [3:0]operand;
input sel;
mult4=(sel)?operand:4'b0000;
endfunction
always@(posedge clk or negedge rst_n)
if(!rst_n)
begin
temp0<=0;
temp1<=0;
temp2<=0;
te***<=0;
endelse
begin
temp0<=mult4(a,b[0]);
temp1<=mult4(a,b[1])<<1;
temp2<=mult4(a,b[2])<<2;
te***<=mult4(a,b[3])<<3;
endassign out1=temp0+temp1;
assign out2=temp2+te***;
assign out=out1+out2;
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...