I was trying to sort a vector for example if the input is 101010 the output would be 111000. Every time when I am trying to simulate the code, my output is always all zeros.
I am posting my code for your reference. If I am missing something or if there is any better way to implement this please let me know
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity num_ones_for is
Port ( A : in STD_LOGIC_VECTOR (15 downto 0);
A_S : out STD_LOGIC_VECTOR (15 downto 0));
end num_ones_for;
architecture Behavioral of num_ones_for is
function sort_binary ( ones :unsigned;a : std_logic_vector) return std_logic_vector is
variable A1: std_logic_vector ( 15 downto 0) := (others =>'0') ;
begin
for i in 15 to(15 - to_integer(ones)) loop
A1(i) := '1';
end loop;
return A1;
end function sort_binary;
signal ones : unsigned (4 downto 0);
begin
process(A)
variable count : unsigned(4 downto 0) := "00000";
begin
count := "00000"; --initialize count variable.
for i in 0 to 15 loop --for all the bits.
count := count + ("0000" & A(i)); --Add the bit to the count.
end loop;
ones <= count; --assign the count to output.
end process;
A_S <= sort_binary(ones =>ones,a =>A);
end Behavioral;