📄 sort4.vhd
字号:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
ENTITY sort4 IS
PORT
(
clk : in std_logic;
set : in std_logic;
fa0,fa1,fa2,fa3 : in std_logic_vector(3 downto 0);
--b0,b1,b2,b3
fa_col : in std_logic_vector(2 downto 0);
fa0_num,fa1_num,fa2_num,fa3_num : in std_logic_vector(1 downto 0);
--b0_col,b1_col,b2_col,b3_col : in std_logic_vector(5 downto 0);
--b0_num,b1_num,b2_num,b3_num : in std_logic_vector(1 downto 0);
--smin0,smin1,smin2,smin3 : out std_logic_vector(3 downto 0);
--smin0_col,smin1_col,smin2_col,smin3_col : out std_logic_vector(3 downto 0);
--smin0_num,smin1_num,smin2_num,smin3_num : out std_logic_vector(1 downto 0);
Ls0,Ls1,Ls2,Ls3 : out std_logic_vector(3 downto 0);
Ls0_col,Ls1_col,Ls2_col,Ls3_col : out std_logic_vector(2 downto 0);
Ls0_num,Ls1_num,Ls2_num,Ls3_num : out std_logic_vector(1 downto 0)
);
END entity;
ARCHITECTURE rtl OF sort4 IS
signal set_temp0,set_temp1,set_temp2,set_temp3,set_temp4 : std_logic;
signal d00,d01,d02,d03 : std_logic_vector(3 downto 0);
signal d10,d11,d12,d13 : std_logic_vector(3 downto 0);
signal d20,d21,d22,d23 : std_logic_vector(3 downto 0);
signal d30,d31,d32,d33 : std_logic_vector(3 downto 0);
signal d00_col,d01_col,d02_col,d03_col : std_logic_vector(2 downto 0);
signal d10_col,d11_col,d12_col,d13_col : std_logic_vector(2 downto 0);
signal d20_col,d21_col,d22_col,d23_col : std_logic_vector(2 downto 0);
signal d30_col,d31_col,d32_col,d33_col : std_logic_vector(2 downto 0);
signal d00_num,d01_num,d02_num,d03_num : std_logic_vector(1 downto 0);
signal d10_num,d11_num,d12_num,d13_num : std_logic_vector(1 downto 0);
signal d20_num,d21_num,d22_num,d23_num : std_logic_vector(1 downto 0);
signal d30_num,d31_num,d32_num,d33_num : std_logic_vector(1 downto 0);
signal L0,L1,L2,L3 : std_logic_vector(3 downto 0);
signal L0_col,L1_col,L2_col,L3_col : std_logic_vector(2 downto 0);
signal L0_num,L1_num,L2_num,L3_num : std_logic_vector(1 downto 0);
signal L0_temp0,L0_temp1,L0_temp2 : std_logic_vector(3 downto 0);
signal L1_temp0,L1_temp1 : std_logic_vector(3 downto 0);
signal L2_temp0 : std_logic_vector(3 downto 0);
signal L0_coltp0,L0_coltp1,L0_coltp2 : std_logic_vector(2 downto 0);
signal L1_coltp0,L1_coltp1 : std_logic_vector(2 downto 0);
signal L2_coltp0 : std_logic_vector(2 downto 0);
signal L0_numtp0,L0_numtp1,L0_numtp2 : std_logic_vector(1 downto 0);
signal L1_numtp0,L1_numtp1 : std_logic_vector(1 downto 0);
signal L2_numtp0 : std_logic_vector(1 downto 0);
begin
process(clk)
begin
if clk'event and clk='1' then
set_temp0<=set;
set_temp1<=set_temp0;
set_temp2<=set_temp1;
set_temp3<=set_temp2;
set_temp4<=set_temp3;
d00<=fa0;
d01<=fa1;
d02<=fa2;
d03<=fa3;
d00_col<=fa_col;
d01_col<=fa_col;
d02_col<=fa_col;
d03_col<=fa_col;
d00_num<=fa0_num;
d01_num<=fa1_num;
d02_num<=fa2_num;
d03_num<=fa3_num;
end if;
end process;
-----------------------------------------------------
process(clk)
begin
if clk'event and clk='1' then
case set_temp0 is
when '1'=>L0<=d00;
L0_col<=d00_col;
L0_num<=d00_num;
when '0'=>if L0<=d00 then
L0<=L0;
L0_col<=L0_col;
L0_num<=L0_num;
else
L0<=d00;
L0_col<=d00_col;
L0_num<=d00_num;
end if;
end case;
end if;
end process;
process(clk)
begin
if clk'event and clk='1' then
case set_temp0 is
when '1'=> d10<="1111";
d11<=d01;
d12<=d02;
d13<=d03;
d10_col<="000";
d11_col<=d01_col;
d12_col<=d02_col;
d13_col<=d03_col;
d10_num<="00";
d11_num<=d01_num;
d12_num<=d02_num;
d13_num<=d03_num;
when '0'=>if L0<=d00 then
d10<=d00;
d11<=d01;
d12<=d02;
d13<=d03;
d10_col<=d00_col;
d11_col<=d01_col;
d12_col<=d02_col;
d13_col<=d03_col;
d10_num<=d00_num;
d11_num<=d01_num;
d12_num<=d02_num;
d13_num<=d03_num;
elsif L0<=d01 then
d10<=L0;
d11<=d01;
d12<=d02;
d13<=d03;
d10_col<=L0_col;
d11_col<=d01_col;
d12_col<=d02_col;
d13_col<=d03_col;
d10_num<=L0_num;
d11_num<=d01_num;
d12_num<=d02_num;
d13_num<=d03_num;
elsif L0<=d02 then
d10<=d01;
d11<=L0;
d12<=d02;
d13<=d03;
d10_col<=d01_col;
d11_col<=L0_col;
d12_col<=d02_col;
d13_col<=d03_col;
d10_num<=d01_num;
d11_num<=L0_num;
d12_num<=d02_num;
d13_num<=d03_num;
elsif L0<=d03 then
d10<=d01;
d11<=d02;
d12<=L0;
d13<=d03;
d10_col<=d01_col;
d11_col<=d02_col;
d12_col<=L0_col;
d13_col<=d03_col;
d10_num<=d01_num;
d11_num<=d02_num;
d12_num<=L0_num;
d13_num<=d03_num;
else
d10<=d01;
d11<=d02;
d12<=d03;
d13<=L0;
d10_col<=d01_col;
d11_col<=d02_col;
d12_col<=d03_col;
d13_col<=L0_col;
d10_num<=d01_num;
d11_num<=d02_num;
d12_num<=d03_num;
d13_num<=L0_num;
end if;
end case;
end if;
end process;
process(clk)
begin
if clk'event and clk='1' then
case set_temp1 is
when '1'=>L1<=d11;
L1_col<=d11_col;
L1_num<=d11_num;
when '0'=>
if L1<d10 then
L1<=L1;
L1_col<=L1_col;
L1_num<=L1_num;
elsif L1=d10 and L1_col<d10_col then
L1<=L1;
L1_col<=L1_col;
L1_num<=L1_num;
else
L1<=d10;
L1_col<=d10_col;
L1_num<=d10_num;
end if;
end case;
end if;
end process;
process(clk)
begin
if clk'event and clk='1' then
case set_temp1 is
when '1'=> d20<=d10;
d21<="1111";
d22<=d12;
d23<=d13;
d20_col<=d10_col;
d21_col<="000";
d22_col<=d12_col;
d23_col<=d13_col;
d20_num<=d10_num;
d21_num<="00";
d22_num<=d12_num;
d23_num<=d13_num;
when '0'=>if L1<d10 then
d20<=d10;
d21<=d11;
d22<=d12;
d23<=d13;
d20_col<=d10_col;
d21_col<=d11_col;
d22_col<=d12_col;
d23_col<=d13_col;
d20_num<=d10_num;
d21_num<=d11_num;
d22_num<=d12_num;
d23_num<=d13_num;
elsif L1=d10 and L1_col<d10_col then
d20<=d10;
d21<=d11;
d22<=d12;
d23<=d13;
d20_col<=d10_col;
d21_col<=d11_col;
d22_col<=d12_col;
d23_col<=d13_col;
d20_num<=d10_num;
d21_num<=d11_num;
d22_num<=d12_num;
d23_num<=d13_num;
elsif L1<d11 then
d20<=L1;
d21<=d11;
d22<=d12;
d23<=d13;
d20_col<=L1_col;
d21_col<=d11_col;
d22_col<=d12_col;
d23_col<=d13_col;
d20_num<=L1_num;
d21_num<=d11_num;
d22_num<=d12_num;
d23_num<=d13_num;
elsif L1=d11 and L1_col<d11_col then
d20<=L1;
d21<=d11;
d22<=d12;
d23<=d13;
d20_col<=L1_col;
d21_col<=d11_col;
d22_col<=d12_col;
d23_col<=d13_col;
d20_num<=L1_num;
d21_num<=d11_num;
d22_num<=d12_num;
d23_num<=d13_num;
elsif L1<d12 then
d20<=d11;
d21<=L1;
d22<=d12;
d23<=d13;
d20_col<=d11_col;
d21_col<=L1_col;
d22_col<=d12_col;
d23_col<=d13_col;
d20_num<=d11_num;
d21_num<=L1_num;
d22_num<=d12_num;
d23_num<=d13_num;
elsif L1=d12 and L1_col<d12_col then
d20<=d11;
d21<=L1;
d22<=d12;
d23<=d13;
d20_col<=d11_col;
d21_col<=L1_col;
d22_col<=d12_col;
d23_col<=d13_col;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -