|
|
`timescale 1ns / 1ps
|
`timescale 1ns / 1ps
|
`default_nettype none
|
`default_nettype none
|
|
|
module HammingWeight(
|
module HammingWeight(
|
dataIn,
|
dataIn,
|
hammingWeight
|
hammingWeight
|
);
|
);
|
parameter DATA_WIDTH=4;
|
parameter DATA_WIDTH=4;
|
parameter WEIGHT_WIDTH=2;
|
parameter WEIGHT_WIDTH=2;
|
|
|
input wire [DATA_WIDTH-1:0] dataIn;
|
input wire [DATA_WIDTH-1:0] dataIn;
|
output reg [WEIGHT_WIDTH-1:0] hammingWeight;
|
output reg [WEIGHT_WIDTH-1:0] hammingWeight;
|
|
|
always @(*) begin:hamminWeightBlock
|
always @(*) begin:hamminWeightBlock
|
integer i;
|
integer i;
|
hammingWeight=0;
|
hammingWeight=0;
|
for(i=0;i<DATA_WIDTH;i=i+1) begin
|
for(i=0;i<DATA_WIDTH;i=i+1) begin
|
hammingWeight=hammingWeight + dataIn[i];
|
hammingWeight=hammingWeight + dataIn[i];
|
end
|
end
|
end
|
end
|
endmodule
|
endmodule
|
|
|
/*
|
/*
|
task hammingWeight
|
task hammingWeight
|
parameter DATA_WIDTH=4;
|
parameter DATA_WIDTH=4;
|
parameter WEIGHT_WIDTH=2;
|
parameter WEIGHT_WIDTH=2;
|
input wire [DATA_WIDTH-1:0] dataIn;
|
input wire [DATA_WIDTH-1:0] dataIn;
|
output reg [WEIGHT_WIDTH-1:0] hammingWeight;
|
output reg [WEIGHT_WIDTH-1:0] hammingWeight;
|
integer i;
|
integer i;
|
begin
|
begin
|
|
|
for(i=0;i<DATA_WIDTH;i=i+1) begin
|
for(i=0;i<DATA_WIDTH;i=i+1) begin
|
hammingWeight=hammingWeight + dataIn[i];
|
hammingWeight=hammingWeight + dataIn[i];
|
end
|
end
|
|
|
end
|
end
|
endtask
|
endtask
|
*/
|
*/
|
/*
|
/*
|
function hammingWeight
|
function hammingWeight
|
parameter DATA_WIDTH=4;
|
parameter DATA_WIDTH=4;
|
parameter WEIGHT_WIDTH=2;
|
parameter WEIGHT_WIDTH=2;
|
input wire [DATA_WIDTH-1:0] dataIn;
|
input wire [DATA_WIDTH-1:0] dataIn;
|
output reg [WEIGHT_WIDTH-1:0] hammingWeight;
|
output reg [WEIGHT_WIDTH-1:0] hammingWeight;
|
integer i;
|
integer i;
|
begin
|
begin
|
|
|
for(i=0;i<DATA_WIDTH;i=i+1) begin
|
for(i=0;i<DATA_WIDTH;i=i+1) begin
|
hammingWeight=hammingWeight + dataIn[i];
|
hammingWeight=hammingWeight + dataIn[i];
|
end
|
end
|
|
|
end
|
end
|
endtask
|
endtask
|
|
|