Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Library IEEE;
- use IEEE.std_logic_1164.all;
- use IEEE.std_logic_signed.all;
- entity SortCollatz is
- end SortCollatz;
- architecture SIM of SortCollatz is
- signal sysClk : std_logic := '0';
- signal resetIn : std_logic := '0';
- signal onStartIn : std_logic := '0';
- signal dataIn : std_logic_vector(7 downto 0) := (others => '0');
- signal tempOut : std_logic_vector(15 downto 0) := (others => '0');
- signal counterOut : std_logic_vector(7 downto 0) := (others => '0');
- signal stateOut : std_logic_vector(1 downto 0) := (others => '0');
- signal onFinishOut: std_logic := '0';
- signal isSorting :std_logic := '0';
- signal data1 : std_logic_vector(7 downto 0);
- signal data2 : std_logic_vector(7 downto 0);
- signal data3 : std_logic_vector(7 downto 0);
- signal data4 : std_logic_vector(7 downto 0);
- signal data5 : std_logic_vector(7 downto 0);
- signal data6 : std_logic_vector(7 downto 0);
- signal data7 : std_logic_vector(7 downto 0);
- signal data8 : std_logic_vector(7 downto 0);
- signal data9 : std_logic_vector(7 downto 0);
- signal data10: std_logic_vector(7 downto 0);
- signal data11: std_logic_vector(7 downto 0);
- signal data12: std_logic_vector(7 downto 0);
- signal data13: std_logic_vector(7 downto 0);
- signal data14: std_logic_vector(7 downto 0);
- signal data15: std_logic_vector(7 downto 0);
- signal data16: std_logic_vector(7 downto 0);
- signal counter1 : std_logic_vector(7 downto 0);
- signal counter2 : std_logic_vector(7 downto 0);
- signal counter3 : std_logic_vector(7 downto 0);
- signal counter4 : std_logic_vector(7 downto 0);
- signal counter5 : std_logic_vector(7 downto 0);
- signal counter6 : std_logic_vector(7 downto 0);
- signal counter7 : std_logic_vector(7 downto 0);
- signal counter8 : std_logic_vector(7 downto 0);
- signal counter9 : std_logic_vector(7 downto 0);
- signal counter10: std_logic_vector(7 downto 0);
- signal counter11: std_logic_vector(7 downto 0);
- signal counter12: std_logic_vector(7 downto 0);
- signal counter13: std_logic_vector(7 downto 0);
- signal counter14: std_logic_vector(7 downto 0);
- signal counter15: std_logic_vector(7 downto 0);
- signal counter16: std_logic_vector(7 downto 0);
- type vectorArray is array (0 to 15) of std_logic_vector(7 downto 0);
- signal dataArray : vectorArray := (others => (others => '0'));
- signal counterArray: vectorArray := (others => (others => '0'));
- component Collatz
- port (
- sysClk : in std_logic := '0';
- resetIn : in std_logic := '0';
- onStartIn : in std_logic := '0';
- dataIn : in std_logic_vector(7 downto 0) := (others => '0'); -- max 255
- tempOut : out std_logic_vector(15 downto 0) := (others => '0'); -- max 13120 (when dataIn is 255)
- counterOut : out std_logic_vector(7 downto 0) := (others => '0'); -- max 127 (when dataIn is 231, 235)
- stateOut : out std_logic_vector(1 downto 0) := (others => '0');
- onFinishOut: out std_logic := '0'
- );
- end component;
- begin
- CL: Collatz port map(
- sysClk => sysClk,
- resetIn => resetIn,
- onStartIn => onStartIn,
- dataIn => dataIn,
- tempOut => tempOut,
- counterOut => counterOut,
- stateOut => stateOut,
- onFinishOut => onFinishOut
- );
- process begin
- sysClk <= '1';
- wait for 10 ns;
- sysClk <= '0';
- wait for 10 ns;
- end process;
- process begin
- wait for 1 ns;
- if stateOut = "00" then
- wait for 1 ns;
- resetIn <= '1';
- dataIn <= dataIn + 1;
- wait for 10 ns;
- resetIn <= '0';
- onStartIn <= '1';
- wait for 10 ns;
- onStartIn <= '0';
- end if;
- end process;
- process begin
- wait until rising_edge(sysClk);
- if (isSorting = '1' or onFinishOut = '1') then
- isSorting <= '1';
- -- for i in 0 to 15 loop
- -- if counterArray(i) <= counterOut then
- -- if i < 15 then
- -- for j in 14 downto i loop
- -- dataArray(j + 1) <= dataArray(j);
- -- counterArray(j + 1) <= counterArray(j);
- -- end loop;
- -- end if;
- -- dataArray(i) <= dataIn;
- -- counterArray(i) <= counterOut;
- -- exit;
- -- end if;
- -- end loop;
- if counterArray(0) <= counterOut then -- i = 0
- dataArray(15) <= dataArray(14); counterArray(15) <= counterArray(14);
- dataArray(14) <= dataArray(13); counterArray(14) <= counterArray(13);
- dataArray(13) <= dataArray(12); counterArray(13) <= counterArray(12);
- dataArray(12) <= dataArray(11); counterArray(12) <= counterArray(11);
- dataArray(11) <= dataArray(10); counterArray(11) <= counterArray(10);
- dataArray(10) <= dataArray(9); counterArray(10) <= counterArray(9);
- dataArray(9) <= dataArray(8); counterArray(9) <= counterArray(8);
- dataArray(8) <= dataArray(7); counterArray(8) <= counterArray(7);
- dataArray(7) <= dataArray(6); counterArray(7) <= counterArray(6);
- dataArray(6) <= dataArray(5); counterArray(6) <= counterArray(5);
- dataArray(5) <= dataArray(4); counterArray(5) <= counterArray(4);
- dataArray(4) <= dataArray(3); counterArray(4) <= counterArray(3);
- dataArray(3) <= dataArray(2); counterArray(3) <= counterArray(2);
- dataArray(2) <= dataArray(1); counterArray(2) <= counterArray(1);
- dataArray(1) <= dataArray(0); counterArray(1) <= counterArray(0);
- dataArray(0) <= dataIn; counterArray(0) <= counterOut;
- elsif counterArray(1) <= counterOut then -- i = 1
- dataArray(15) <= dataArray(14); counterArray(15) <= counterArray(14);
- dataArray(14) <= dataArray(13); counterArray(14) <= counterArray(13);
- dataArray(13) <= dataArray(12); counterArray(13) <= counterArray(12);
- dataArray(12) <= dataArray(11); counterArray(12) <= counterArray(11);
- dataArray(11) <= dataArray(10); counterArray(11) <= counterArray(10);
- dataArray(10) <= dataArray(9); counterArray(10) <= counterArray(9);
- dataArray(9) <= dataArray(8); counterArray(9) <= counterArray(8);
- dataArray(8) <= dataArray(7); counterArray(8) <= counterArray(7);
- dataArray(7) <= dataArray(6); counterArray(7) <= counterArray(6);
- dataArray(6) <= dataArray(5); counterArray(6) <= counterArray(5);
- dataArray(5) <= dataArray(4); counterArray(5) <= counterArray(4);
- dataArray(4) <= dataArray(3); counterArray(4) <= counterArray(3);
- dataArray(3) <= dataArray(2); counterArray(3) <= counterArray(2);
- dataArray(2) <= dataArray(1); counterArray(2) <= counterArray(1);
- dataArray(1) <= dataIn; counterArray(1) <= counterOut;
- elsif counterArray(2) <= counterOut then -- i = 2
- dataArray(15) <= dataArray(14); counterArray(15) <= counterArray(14);
- dataArray(14) <= dataArray(13); counterArray(14) <= counterArray(13);
- dataArray(13) <= dataArray(12); counterArray(13) <= counterArray(12);
- dataArray(12) <= dataArray(11); counterArray(12) <= counterArray(11);
- dataArray(11) <= dataArray(10); counterArray(11) <= counterArray(10);
- dataArray(10) <= dataArray(9); counterArray(10) <= counterArray(9);
- dataArray(9) <= dataArray(8); counterArray(9) <= counterArray(8);
- dataArray(8) <= dataArray(7); counterArray(8) <= counterArray(7);
- dataArray(7) <= dataArray(6); counterArray(7) <= counterArray(6);
- dataArray(6) <= dataArray(5); counterArray(6) <= counterArray(5);
- dataArray(5) <= dataArray(4); counterArray(5) <= counterArray(4);
- dataArray(4) <= dataArray(3); counterArray(4) <= counterArray(3);
- dataArray(3) <= dataArray(2); counterArray(3) <= counterArray(2);
- dataArray(2) <= dataIn; counterArray(2) <= counterOut;
- elsif counterArray(3) <= counterOut then -- i = 3
- dataArray(15) <= dataArray(14); counterArray(15) <= counterArray(14);
- dataArray(14) <= dataArray(13); counterArray(14) <= counterArray(13);
- dataArray(13) <= dataArray(12); counterArray(13) <= counterArray(12);
- dataArray(12) <= dataArray(11); counterArray(12) <= counterArray(11);
- dataArray(11) <= dataArray(10); counterArray(11) <= counterArray(10);
- dataArray(10) <= dataArray(9); counterArray(10) <= counterArray(9);
- dataArray(9) <= dataArray(8); counterArray(9) <= counterArray(8);
- dataArray(8) <= dataArray(7); counterArray(8) <= counterArray(7);
- dataArray(7) <= dataArray(6); counterArray(7) <= counterArray(6);
- dataArray(6) <= dataArray(5); counterArray(6) <= counterArray(5);
- dataArray(5) <= dataArray(4); counterArray(5) <= counterArray(4);
- dataArray(4) <= dataArray(3); counterArray(4) <= counterArray(3);
- dataArray(3) <= dataIn; counterArray(3) <= counterOut;
- elsif counterArray(4) <= counterOut then -- i = 4
- dataArray(15) <= dataArray(14); counterArray(15) <= counterArray(14);
- dataArray(14) <= dataArray(13); counterArray(14) <= counterArray(13);
- dataArray(13) <= dataArray(12); counterArray(13) <= counterArray(12);
- dataArray(12) <= dataArray(11); counterArray(12) <= counterArray(11);
- dataArray(11) <= dataArray(10); counterArray(11) <= counterArray(10);
- dataArray(10) <= dataArray(9); counterArray(10) <= counterArray(9);
- dataArray(9) <= dataArray(8); counterArray(9) <= counterArray(8);
- dataArray(8) <= dataArray(7); counterArray(8) <= counterArray(7);
- dataArray(7) <= dataArray(6); counterArray(7) <= counterArray(6);
- dataArray(6) <= dataArray(5); counterArray(6) <= counterArray(5);
- dataArray(5) <= dataArray(4); counterArray(5) <= counterArray(4);
- dataArray(4) <= dataIn; counterArray(4) <= counterOut;
- elsif counterArray(5) <= counterOut then -- i = 5
- dataArray(15) <= dataArray(14); counterArray(15) <= counterArray(14);
- dataArray(14) <= dataArray(13); counterArray(14) <= counterArray(13);
- dataArray(13) <= dataArray(12); counterArray(13) <= counterArray(12);
- dataArray(12) <= dataArray(11); counterArray(12) <= counterArray(11);
- dataArray(11) <= dataArray(10); counterArray(11) <= counterArray(10);
- dataArray(10) <= dataArray(9); counterArray(10) <= counterArray(9);
- dataArray(9) <= dataArray(8); counterArray(9) <= counterArray(8);
- dataArray(8) <= dataArray(7); counterArray(8) <= counterArray(7);
- dataArray(7) <= dataArray(6); counterArray(7) <= counterArray(6);
- dataArray(6) <= dataArray(5); counterArray(6) <= counterArray(5);
- dataArray(5) <= dataIn; counterArray(5) <= counterOut;
- elsif counterArray(6) <= counterOut then -- i = 6
- dataArray(15) <= dataArray(14); counterArray(15) <= counterArray(14);
- dataArray(14) <= dataArray(13); counterArray(14) <= counterArray(13);
- dataArray(13) <= dataArray(12); counterArray(13) <= counterArray(12);
- dataArray(12) <= dataArray(11); counterArray(12) <= counterArray(11);
- dataArray(11) <= dataArray(10); counterArray(11) <= counterArray(10);
- dataArray(10) <= dataArray(9); counterArray(10) <= counterArray(9);
- dataArray(9) <= dataArray(8); counterArray(9) <= counterArray(8);
- dataArray(8) <= dataArray(7); counterArray(8) <= counterArray(7);
- dataArray(7) <= dataArray(6); counterArray(7) <= counterArray(6);
- dataArray(6) <= dataIn; counterArray(6) <= counterOut;
- elsif counterArray(7) <= counterOut then -- i = 7
- dataArray(15) <= dataArray(14); counterArray(15) <= counterArray(14);
- dataArray(14) <= dataArray(13); counterArray(14) <= counterArray(13);
- dataArray(13) <= dataArray(12); counterArray(13) <= counterArray(12);
- dataArray(12) <= dataArray(11); counterArray(12) <= counterArray(11);
- dataArray(11) <= dataArray(10); counterArray(11) <= counterArray(10);
- dataArray(10) <= dataArray(9); counterArray(10) <= counterArray(9);
- dataArray(9) <= dataArray(8); counterArray(9) <= counterArray(8);
- dataArray(8) <= dataArray(7); counterArray(8) <= counterArray(7);
- dataArray(7) <= dataIn; counterArray(7) <= counterOut;
- elsif counterArray(8) <= counterOut then -- i = 8
- dataArray(15) <= dataArray(14); counterArray(15) <= counterArray(14);
- dataArray(14) <= dataArray(13); counterArray(14) <= counterArray(13);
- dataArray(13) <= dataArray(12); counterArray(13) <= counterArray(12);
- dataArray(12) <= dataArray(11); counterArray(12) <= counterArray(11);
- dataArray(11) <= dataArray(10); counterArray(11) <= counterArray(10);
- dataArray(10) <= dataArray(9); counterArray(10) <= counterArray(9);
- dataArray(9) <= dataArray(8); counterArray(9) <= counterArray(8);
- dataArray(8) <= dataIn; counterArray(8) <= counterOut;
- elsif counterArray(9) <= counterOut then -- i = 9
- dataArray(15) <= dataArray(14); counterArray(15) <= counterArray(14);
- dataArray(14) <= dataArray(13); counterArray(14) <= counterArray(13);
- dataArray(13) <= dataArray(12); counterArray(13) <= counterArray(12);
- dataArray(12) <= dataArray(11); counterArray(12) <= counterArray(11);
- dataArray(11) <= dataArray(10); counterArray(11) <= counterArray(10);
- dataArray(10) <= dataArray(9); counterArray(10) <= counterArray(9);
- dataArray(9) <= dataIn; counterArray(9) <= counterOut;
- elsif counterArray(10) <= counterOut then -- i = 10
- dataArray(15) <= dataArray(14); counterArray(15) <= counterArray(14);
- dataArray(14) <= dataArray(13); counterArray(14) <= counterArray(13);
- dataArray(13) <= dataArray(12); counterArray(13) <= counterArray(12);
- dataArray(12) <= dataArray(11); counterArray(12) <= counterArray(11);
- dataArray(11) <= dataArray(10); counterArray(11) <= counterArray(10);
- dataArray(10) <= dataIn; counterArray(10) <= counterOut;
- elsif counterArray(11) <= counterOut then -- i = 11
- dataArray(15) <= dataArray(14); counterArray(15) <= counterArray(14);
- dataArray(14) <= dataArray(13); counterArray(14) <= counterArray(13);
- dataArray(13) <= dataArray(12); counterArray(13) <= counterArray(12);
- dataArray(12) <= dataArray(11); counterArray(12) <= counterArray(11);
- dataArray(11) <= dataIn; counterArray(11) <= counterOut;
- elsif counterArray(12) <= counterOut then -- i = 12
- dataArray(15) <= dataArray(14); counterArray(15) <= counterArray(14);
- dataArray(14) <= dataArray(13); counterArray(14) <= counterArray(13);
- dataArray(13) <= dataArray(12); counterArray(13) <= counterArray(12);
- dataArray(12) <= dataIn; counterArray(12) <= counterOut;
- elsif counterArray(13) <= counterOut then -- i = 13
- dataArray(15) <= dataArray(14); counterArray(15) <= counterArray(14);
- dataArray(14) <= dataArray(13); counterArray(14) <= counterArray(13);
- dataArray(13) <= dataIn; counterArray(13) <= counterOut;
- elsif counterArray(14) <= counterOut then -- i = 14
- dataArray(15) <= dataArray(14); counterArray(15) <= counterArray(14);
- dataArray(14) <= dataIn; counterArray(14) <= counterOut;
- elsif counterArray(15) <= counterOut then -- i = 15
- dataArray(15) <= dataIn; counterArray(15) <= counterOut;
- end if;
- end if;
- isSorting <= '0';
- end process;
- data1 <= dataArray(0);
- data2 <= dataArray(1);
- data3 <= dataArray(2);
- data4 <= dataArray(3);
- data5 <= dataArray(4);
- data6 <= dataArray(5);
- data7 <= dataArray(6);
- data8 <= dataArray(7);
- data9 <= dataArray(8);
- data10 <= dataArray(9);
- data11 <= dataArray(10);
- data12 <= dataArray(11);
- data13 <= dataArray(12);
- data14 <= dataArray(13);
- data15 <= dataArray(14);
- data16 <= dataArray(15);
- counter1 <= counterArray(0);
- counter2 <= counterArray(1);
- counter3 <= counterArray(2);
- counter4 <= counterArray(3);
- counter5 <= counterArray(4);
- counter6 <= counterArray(5);
- counter7 <= counterArray(6);
- counter8 <= counterArray(7);
- counter9 <= counterArray(8);
- counter10 <= counterArray(9);
- counter11 <= counterArray(10);
- counter12 <= counterArray(11);
- counter13 <= counterArray(12);
- counter14 <= counterArray(13);
- counter15 <= counterArray(14);
- counter16 <= counterArray(15);
- end SIM;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement