📄 sbox.vhd
字号:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity sbox is
port( rs : in std_logic_vector( 47 downto 0 ) ;
so : out std_logic_vector( 31 downto 0 )
);
end entity sbox ;
architecture arch_sbox of sbox is
begin
--s-box1
with rs(47) & rs(42) & rs(46 downto 43) select
--s-box1,line 0
so(31 downto 28) <= "1110" when "000000" ,--14
"0100" when "000001" ,--4
"1101" when "000010" ,--13
"0001" when "000011" ,--1
"0010" when "000100" ,--2
"1111" when "000101" ,--15
"1011" when "000110" ,--11
"1000" when "000111" ,--8
"0011" when "001000" ,--3
"1010" when "001001" ,--10
"0110" when "001010" ,--6
"1100" when "001011" ,--12
"0101" when "001100" ,--5
"1001" when "001101" ,--9
"0000" when "001110" ,--0
"0111" when "001111" ,--7
--s-box1,line 1
"0000" when "010000" ,--0
"1111" when "010001" ,--15
"0111" when "010010" ,--7
"0100" when "010011" ,--4
"1110" when "010100" ,--14
"0010" when "010101" ,--2
"1101" when "010110" ,--13
"0001" when "010111" ,--1
"1010" when "011000" ,--10
"0110" when "011001" ,--6
"1100" when "011010" ,--12
"1011" when "011011" ,--11
"1001" when "011100" ,--9
"0101" when "011101" ,--5
"0011" when "011110" ,--3
"1000" when "011111" ,--8
--s-box1,line 2
"0100" when "100000" ,--4
"0001" when "100001" ,--1
"1110" when "100010" ,--14
"1000" when "100011" ,--8
"1101" when "100100" ,--13
"0110" when "100101" ,--6
"0010" when "100110" ,--2
"1011" when "100111" ,--11
"1111" when "101000" ,--15
"1100" when "101001" ,--12
"1001" when "101010" ,--9
"0111" when "101011" ,--7
"0011" when "101100" ,--3
"1010" when "101101" ,--10
"0101" when "101110" ,--5
"0000" when "101111" ,--0
--s-box1,line 3
"1111" when "110000" ,--15
"1100" when "110001" ,--12
"1000" when "110010" ,--8
"0010" when "110011" ,--2
"0100" when "110100" ,--4
"1001" when "110101" ,--9
"0001" when "110110" ,--1
"0111" when "110111" ,--7
"0101" when "111000" ,--5
"1011" when "111001" ,--11
"0011" when "111010" ,--3
"1110" when "111011" ,--14
"1010" when "111100" ,--10
"0000" when "111101" ,--0
"0110" when "111110" ,--6
"1101" when "111111" ,--13
null when others ;
--s-box2
with rs( 41 ) & rs( 36 ) & rs( 40 downto 37 ) select
--s-box2,line 0
so(27 downto 24) <= "1111" when "000000" ,--15
"0001" when "000001" ,--1
"1000" when "000010" ,--8
"1110" when "000011" ,--14
"0110" when "000100" ,--6
"1011" when "000101" ,--11
"0011" when "000110" ,--3
"0100" when "000111" ,--4
"1001" when "001000" ,--9
"0111" when "001001" ,--7
"0010" when "001010" ,--2
"1101" when "001011" ,--13
"1100" when "001100" ,--12
"0000" when "001101" ,--0
"0101" when "001110" ,--5
"1010" when "001111" ,--10
--s-box2,line 1
"0011" when "010000" ,--3
"1101" when "010001" ,--13
"0100" when "010010" ,--4
"0111" when "010011" ,--7
"1111" when "010100" ,--15
"0010" when "010101" ,--2
"1000" when "010110" ,--8
"1110" when "010111" ,--14
"1100" when "011000" ,--12
"0000" when "011001" ,--0
"0001" when "011010" ,--1
"1010" when "011011" ,--10
"0110" when "011100" ,--6
"1001" when "011101" ,--9
"1011" when "011110" ,--11
"0101" when "011111" ,--5
--s-box2,line 2
"0000" when "100000" ,--0
"1110" when "100001" ,--14
"0111" when "100010" ,--7
"1011" when "100011" ,--11
"1010" when "100100" ,--10
"0100" when "100101" ,--4
"1101" when "100110" ,--13
"0001" when "100111" ,--1
"0101" when "101000" ,--5
"1000" when "101001" ,--8
"1100" when "101010" ,--12
"0110" when "101011" ,--6
"1001" when "101100" ,--9
"0011" when "101101" ,--3
"0010" when "101110" ,--2
"1111" when "101111" ,--15
--s-box2,line 3
"1101" when "110000" ,--13
"1000" when "110001" ,--8
"1010" when "110010" ,--10
"0001" when "110011" ,--1
"0011" when "110100" ,--3
"1111" when "110101" ,--15
"0100" when "110110" ,--4
"0010" when "110111" ,--2
"1011" when "111000" ,--11
"0110" when "111001" ,--6
"0111" when "111010" ,--7
"1100" when "111011" ,--12
"0000" when "111100" ,--0
"0101" when "111101" ,--5
"1110" when "111110" ,--14
"1001" when "111111" ,--9
null when others ;
--s-box3
with rs( 35 ) & rs( 30 ) & rs( 34 downto 31 ) select
--s-box3,line 0
so(23 downto 20) <= "1010" when "000000" ,--10
"0000" when "000001" ,--0
"1001" when "000010" ,--9
"1110" when "000011" ,--14
"0110" when "000100" ,--6
"0011" when "000101" ,--3
"1111" when "000110" ,--15
"0101" when "000111" ,--5
"0001" when "001000" ,--1
"1101" when "001001" ,--13
"1100" when "001010" ,--12
"0111" when "001011" ,--7
"1011" when "001100" ,--11
"0100" when "001101" ,--4
"0010" when "001110" ,--2
"1000" when "001111" ,--8
--s-box3,line 1
"1101" when "010000" ,--13
"0111" when "010001" ,--7
"0000" when "010010" ,--0
"1001" when "010011" ,--9
"0011" when "010100" ,--3
"0100" when "010101" ,--4
"0110" when "010110" ,--6
"1010" when "010111" ,--10
"0010" when "011000" ,--2
"1000" when "011001" ,--8
"0101" when "011010" ,--5
"1110" when "011011" ,--14
"1100" when "011100" ,--12
"1011" when "011101" ,--11
"1111" when "011110" ,--15
"0001" when "011111" ,--1
--s-box3,line 2
"1101" when "100000" ,--13
"0110" when "100001" ,--6
"0100" when "100010" ,--4
"1001" when "100011" ,--9
"1000" when "100100" ,--8
"1111" when "100101" ,--15
"0011" when "100110" ,--3
"0000" when "100111" ,--0
"1011" when "101000" ,--11
"0001" when "101001" ,--1
"0010" when "101010" ,--2
"1100" when "101011" ,--12
"0101" when "101100" ,--5
"1010" when "101101" ,--10
"1110" when "101110" ,--14
"0111" when "101111" ,--7
--s-box3,line 3
"0001" when "110000" ,--1
"1010" when "110001" ,--10
"1101" when "110010" ,--13
"0000" when "110011" ,--0
"0110" when "110100" ,--6
"1001" when "110101" ,--9
"1000" when "110110" ,--8
"0111" when "110111" ,--7
"0100" when "111000" ,--4
"1111" when "111001" ,--15
"1110" when "111010" ,--14
"0011" when "111011" ,--3
"1011" when "111100" ,--11
"0101" when "111101" ,--5
"0010" when "111110" ,--2
"1100" when "111111" ,--12
null when others ;
--s-box4
with rs( 29 ) & rs( 24 ) & rs( 28 downto 25 ) select
--s-box4,line 0
so(19 downto 16) <= "0111" when "000000" ,--7
"1101" when "000001" ,--13
"1110" when "000010" ,--14
"0011" when "000011" ,--3
"0000" when "000100" ,--0
"0110" when "000101" ,--6
"1001" when "000110" ,--9
"1010" when "000111" ,--10
"0001" when "001000" ,--1
"0010" when "001001" ,--2
"1000" when "001010" ,--8
"0101" when "001011" ,--5
"1011" when "001100" ,--11
"1100" when "001101" ,--12
"0100" when "001110" ,--4
"1111" when "001111" ,--15
--s-box4,line 1
"1101" when "010000" ,--13
"1000" when "010001" ,--8
"1011" when "010010" ,--11
"0101" when "010011" ,--5
"0110" when "010100" ,--6
"1111" when "010101" ,--15
"0000" when "010110" ,--0
"0011" when "010111" ,--3
"0100" when "011000" ,--4
"0111" when "011001" ,--7
"0010" when "011010" ,--2
"1100" when "011011" ,--12
"0001" when "011100" ,--1
"1010" when "011101" ,--10
"1110" when "011110" ,--14
"1001" when "011111" ,--9
--s-box4,line 2
"1010" when "100000" ,--10
"0110" when "100001" ,--6
"1001" when "100010" ,--9
"0000" when "100011" ,--0
"1100" when "100100" ,--12
"1011" when "100101" ,--11
"0111" when "100110" ,--7
"1101" when "100111" ,--13
"1111" when "101000" ,--15
"0001" when "101001" ,--1
"0011" when "101010" ,--3
"1110" when "101011" ,--14
"0101" when "101100" ,--5
"0010" when "101101" ,--2
"1000" when "101110" ,--8
"0100" when "101111" ,--4
--s-box4,line 3
"0011" when "110000" ,--3
"1111" when "110001" ,--15
"0000" when "110010" ,--0
"0110" when "110011" ,--6
"1010" when "110100" ,--10
"0001" when "110101" ,--1
"1101" when "110110" ,--13
"1000" when "110111" ,--8
"1001" when "111000" ,--9
"0100" when "111001" ,--4
"0101" when "111010" ,--5
"1011" when "111011" ,--11
"1100" when "111100" ,--12
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -