⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sort4.vhd

📁 完整的TPC编译码VHDL程序
💻 VHD
📖 第 1 页 / 共 2 页
字号:
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 + -