This repository was archived by the owner on Jul 1, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinsort.vhd
More file actions
50 lines (40 loc) · 1.18 KB
/
insort.vhd
File metadata and controls
50 lines (40 loc) · 1.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
PACKAGE array_type IS
-- 10 elements.
TYPE array_t IS ARRAY(9 DOWNTO 0) OF STD_LOGIC_VECTOR(7 DOWNTO 0);
END PACKAGE;
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE work.array_type.ALL;
ENTITY insort IS
PORT (
SIGNAL clk : IN STD_LOGIC;
SIGNAL reset : IN STD_LOGIC;
SIGNAL in_array : IN array_t;
SIGNAL sorted_array : OUT array_t
);
END insort;
ARCHITECTURE beh OF insort IS
USE ieee.numeric_std.ALL;
BEGIN
PROCESS (clk, reset)
VARIABLE temp : STD_LOGIC_VECTOR (7 DOWNTO 0);
VARIABLE var_array : array_t;
BEGIN
IF reset = '1' THEN
var_array := in_array;
ELSIF rising_edge(clk) THEN
FOR j IN 0 TO 9 - 1 LOOP
FOR i IN 0 TO 9 - 1 - j LOOP
IF unsigned(var_array(i)) > unsigned(var_array(i + 1)) THEN
temp := var_array(i);
var_array(i) := var_array(i + 1);
var_array(i + 1) := temp;
END IF;
END LOOP;
END LOOP;
sorted_array <= var_array;
END IF;
END PROCESS;
END beh;