Behavioural Description Code:--
module count(
input [7:0] num,
output reg [3:0] one_cnt,
output reg [3:0] zero_cnt
);
integer i;
always @(*) begin
one_cnt = 0;
zero_cnt = 0;
for (i = 0; i < 8; i = i + 1) begin
if (num[i] == 1'b1)
one_cnt = one_cnt + 1;
else
zero_cnt = zero_cnt + 1;
end
end
endmodule
Test Bench:--
module tb_count;
reg [7:0] num;
wire [3:0] one_cnt;
wire [3:0] zero_cnt;
count DUT (num, one_cnt, zero_cnt);
initial begin
num = 8'b00000000; #10;
num = 8'b11111111; #10;
num = 8'b10101010; #10;
num = 8'b11001100; #10;
num = 8'b11100011; #10;
num = 8'b10010010; #10;
$finish;
end
endmodule
OUTPUT WAVEFORM:--
pin assignment:
i/p=j15,l16,m13,r15,r17,t18,u18,r13
o/p=h17,k15,j13,n14,r18,u17,v17,u16