📄 twofish.vhd
字号:
-- ---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ------ 1 bit adder--library ieee;use ieee.std_logic_1164.all;entity adder isport ( in1_adder, in2_adder, in_carry_adder : in std_logic; out_adder, out_carry_adder : out std_logic );end adder;architecture adder_arch of adder isbegin out_adder <= in_carry_adder XOR in1_adder XOR in2_adder; out_carry_adder <= (in_carry_adder AND (in1_adder XOR in2_adder)) OR (in1_adder AND in2_adder); end adder_arch; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- ---- new component ---- ---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ------ pht--library ieee;use ieee.std_logic_1164.all;entity pht isport ( up_in_pht, down_in_pht : in std_logic_vector(31 downto 0); up_out_pht, down_out_pht : out std_logic_vector(31 downto 0) );end pht;-- architecture descriptionarchitecture pht_arch of pht is -- we declare internal signals signal intermediate_carry1, intermediate_carry2, to_upper_out : std_logic_vector(31 downto 0); signal zero : std_logic; component adder port ( in1_adder, in2_adder, in_carry_adder : in std_logic; out_adder, out_carry_adder : out std_logic ); end component; begin -- initializing zero signal zero <= '0'; -- instantiating the upper adder of 32 bits up_adder: for i in 0 to 31 generate adder_one: if (i=0) generate the_adder: adder port map ( in1_adder => up_in_pht(0), in2_adder => down_in_pht(0), in_carry_adder => zero, out_adder => to_upper_out(0), out_carry_adder => intermediate_carry1(0) ); end generate adder_one; rest_adders: if (i>0) generate next_adder: adder port map ( in1_adder => up_in_pht(i), in2_adder => down_in_pht(i), in_carry_adder => intermediate_carry1(i-1), out_adder => to_upper_out(i), out_carry_adder => intermediate_carry1(i) ); end generate rest_adders; end generate up_adder; intermediate_carry1(31) <= '0'; -- receiving the upper pht output up_out_pht <= to_upper_out; -- instantiating the lower adder of 32 bits down_adder: for i in 0 to 31 generate adder_one_1: if (i=0) generate the_adder_1: adder port map ( in1_adder => down_in_pht(0), in2_adder => to_upper_out(0), in_carry_adder => zero, out_adder => down_out_pht(0), out_carry_adder => intermediate_carry2(0) ); end generate adder_one_1; rest_adders_1: if (i>0) generate next_adder_1: adder port map ( in1_adder => down_in_pht(i), in2_adder => to_upper_out(i), in_carry_adder => intermediate_carry2(i-1), out_adder => down_out_pht(i), out_carry_adder => intermediate_carry2(i) ); end generate rest_adders_1; end generate down_adder; intermediate_carry2(31) <= '0'; end pht_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- ---- new component ---- ---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- -- multiplier by 01 -- library ieee;use ieee.std_logic_1164.all;entity mul01 isport ( in_mul01 : in std_logic_vector(7 downto 0); out_mul01 : out std_logic_vector(7 downto 0) );end mul01; architecture mul01_arch of mul01 isbegin out_mul01 <= in_mul01;end mul01_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- ---- new component ---- ---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- -- multiplier by a4 -- library ieee;use ieee.std_logic_1164.all;entity mula4 isport ( in_mula4 : in std_logic_vector(7 downto 0); out_mula4 : out std_logic_vector(7 downto 0) );end mula4;architecture mula4_arch of mula4 isbegin out_mula4(0) <= in_mula4(7) xor in_mula4(1); out_mula4(1) <= in_mula4(2); out_mula4(2) <= in_mula4(7) xor in_mula4(3) xor in_mula4(1) xor in_mula4(0); out_mula4(3) <= in_mula4(7) xor in_mula4(4) xor in_mula4(2); out_mula4(4) <= in_mula4(5) xor in_mula4(3); out_mula4(5) <= in_mula4(6) xor in_mula4(4) xor in_mula4(0); out_mula4(6) <= in_mula4(5); out_mula4(7) <= in_mula4(6) xor in_mula4(0);end mula4_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- ---- new component ---- ---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- -- multiplier by 55 -- library ieee;use ieee.std_logic_1164.all;entity mul55 isport ( in_mul55 : in std_logic_vector(7 downto 0); out_mul55 : out std_logic_vector(7 downto 0) );end mul55;architecture mul55_arch of mul55 isbegin out_mul55(0) <= in_mul55(7) xor in_mul55(6) xor in_mul55(2) xor in_mul55(0); out_mul55(1) <= in_mul55(7) xor in_mul55(3) xor in_mul55(1); out_mul55(2) <= in_mul55(7) xor in_mul55(6) xor in_mul55(4) xor in_mul55(0); out_mul55(3) <= in_mul55(6) xor in_mul55(5) xor in_mul55(2) xor in_mul55(1); out_mul55(4) <= in_mul55(7) xor in_mul55(6) xor in_mul55(3) xor in_mul55(2) xor in_mul55(0); out_mul55(5) <= in_mul55(7) xor in_mul55(4) xor in_mul55(3) xor in_mul55(1); out_mul55(6) <= in_mul55(7) xor in_mul55(6) xor in_mul55(5) xor in_mul55(4) xor in_mul55(0); out_mul55(7) <= in_mul55(7) xor in_mul55(6) xor in_mul55(5) xor in_mul55(1);end mul55_arch; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- ---- new component ---- ---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- -- multiplier by 87 -- library ieee;use ieee.std_logic_1164.all;entity mul87 isport ( in_mul87 : in std_logic_vector(7 downto 0); out_mul87 : out std_logic_vector(7 downto 0) );end mul87;architecture mul87_arch of mul87 isbegin out_mul87(0) <= in_mul87(7) xor in_mul87(5) xor in_mul87(3) xor in_mul87(1) xor in_mul87(0); out_mul87(1) <= in_mul87(6) xor in_mul87(4) xor in_mul87(2) xor in_mul87(1) xor in_mul87(0); out_mul87(2) <= in_mul87(2) xor in_mul87(0); out_mul87(3) <= in_mul87(7) xor in_mul87(5); out_mul87(4) <= in_mul87(6); out_mul87(5) <= in_mul87(7); out_mul87(6) <= in_mul87(7) xor in_mul87(5) xor in_mul87(3) xor in_mul87(1); out_mul87(7) <= in_mul87(6) xor in_mul87(4) xor in_mul87(2) xor in_mul87(0);end mul87_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- ---- new component ---- ---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- -- multiplier by 5a-- library ieee;use ieee.std_logic_1164.all;entity mul5a isport ( in_mul5a : in std_logic_vector(7 downto 0); out_mul5a : out std_logic_vector(7 downto 0) );end mul5a;architecture mul5a_arch of mul5a isbegin out_mul5a(0) <= in_mul5a(7) xor in_mul5a(5) xor in_mul5a(2); out_mul5a(1) <= in_mul5a(6) xor in_mul5a(3) xor in_mul5a(0); out_mul5a(2) <= in_mul5a(5) xor in_mul5a(4) xor in_mul5a(2) xor in_mul5a(1); out_mul5a(3) <= in_mul5a(7) xor in_mul5a(6) xor in_mul5a(3) xor in_mul5a(0); out_mul5a(4) <= in_mul5a(7) xor in_mul5a(4) xor in_mul5a(1) xor in_mul5a(0); out_mul5a(5) <= in_mul5a(5) xor in_mul5a(2) xor in_mul5a(1); out_mul5a(6) <= in_mul5a(7) xor in_mul5a(6) xor in_mul5a(5) xor in_mul5a(3) xor in_mul5a(0); out_mul5a(7) <= in_mul5a(7) xor in_mul5a(6) xor in_mul5a(4) xor in_mul5a(1);end mul5a_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- ---- new component ---- ---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- -- multiplier by 58-- library ieee;use ieee.std_logic_1164.all;entity mul58 is port ( in_mul58 : in std_logic_vector(7 downto 0); out_mul58 : out std_logic_vector(7 downto 0) );end mul58;architecture mul58_arch of mul58 isbegin out_mul58(0) <= in_mul58(5) xor in_mul58(2); out_mul58(1) <= in_mul58(6) xor in_mul58(3); out_mul58(2) <= in_mul58(7) xor in_mul58(5) xor in_mul58(4) xor in_mul58(2); out_mul58(3) <= in_mul58(6) xor in_mul58(3) xor in_mul58(2) xor in_mul58(0); out_mul58(4) <= in_mul58(7) xor in_mul58(4) xor in_mul58(3) xor in_mul58(1) xor in_mul58(0); out_mul58(5) <= in_mul58(5) xor in_mul58(4) xor in_mul58(2) xor in_mul58(1); out_mul58(6) <= in_mul58(6) xor in_mul58(3) xor in_mul58(0); out_mul58(7) <= in_mul58(7) xor in_mul58(4) xor in_mul58(1);end mul58_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- ---- new component ---- ---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- -- multiplier by db -- library ieee;use ieee.std_logic_1164.all;entity muldb isport ( in_muldb : in std_logic_vector(7 downto 0); out_muldb : out std_logic_vector(7 downto 0) );end muldb;architecture muldb_arch of muldb isbegin out_muldb(0) <= in_muldb(7) xor in_muldb(6) xor in_muldb(3) xor in_muldb(2) xor in_muldb(1) xor in_muldb(0); out_muldb(1) <= in_muldb(7) xor in_muldb(4) xor in_muldb(3) xor in_muldb(2) xor in_muldb(1) xor in_muldb(0); out_muldb(2) <= in_muldb(7) xor in_muldb(6) xor in_muldb(5) xor in_muldb(4); out_muldb(3) <= in_muldb(5) xor in_muldb(3) xor in_muldb(2) xor in_muldb(1) xor in_muldb(0); out_muldb(4) <= in_muldb(6) xor in_muldb(4) xor in_muldb(3) xor in_muldb(2) xor in_muldb(1) xor in_muldb(0); out_muldb(5) <= in_muldb(7) xor in_muldb(5) xor in_muldb(4) xor in_muldb(3) xor in_muldb(2) xor in_muldb(1); out_muldb(6) <= in_muldb(7) xor in_muldb(5) xor in_muldb(4) xor in_muldb(1) xor in_muldb(0); out_muldb(7) <= in_muldb(6) xor in_muldb(5) xor in_muldb(2) xor in_muldb(1) xor in_muldb(0);end muldb_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- ---- new component ---- ---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- -- multiplier by 9e -- library ieee;use ieee.std_logic_1164.all;entity mul9e isport ( in_mul9e : in std_logic_vector(7 downto 0); out_mul9e : out std_logic_vector(7 downto 0) );end mul9e;architecture mul9e_arch of mul9e isbegin out_mul9e(0) <= in_mul9e(6) xor in_mul9e(4) xor in_mul9e(3) xor in_mul9e(1); out_mul9e(1) <= in_mul9e(7) xor in_mul9e(5) xor in_mul9e(4) xor in_mul9e(2) xor in_mul9e(0); out_mul9e(2) <= in_mul9e(5) xor in_mul9e(4) xor in_mul9e(0); out_mul9e(3) <= in_mul9e(5) xor in_mul9e(4) xor in_mul9e(3) xor in_mul9e(0); out_mul9e(4) <= in_mul9e(6) xor in_mul9e(5) xor in_mul9e(4) xor in_mul9e(1) xor in_mul9e(0); out_mul9e(5) <= in_mul9e(7) xor in_mul9e(6) xor in_mul9e(5) xor in_mul9e(2) xor in_mul9e(1); out_mul9e(6) <= in_mul9e(7) xor in_mul9e(4) xor in_mul9e(2) xor in_mul9e(1); out_mul9e(7) <= in_mul9e(5) xor in_mul9e(3) xor in_mul9e(2) xor in_mul9e(0);end mul9e_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- ---- new component ---- ---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- -- multiplier by 56 -- library ieee;use ieee.std_logic_1164.all;entity mul56 isport ( in_mul56 : in std_logic_vector(7 downto 0); out_mul56 : out std_logic_vector(7 downto 0) );end mul56;architecture mul56_arch of mul56 isbegin out_mul56(0) <= in_mul56(6) xor in_mul56(2); out_mul56(1) <= in_mul56(7) xor in_mul56(3) xor in_mul56(0); out_mul56(2) <= in_mul56(6) xor in_mul56(4) xor in_mul56(2) xor in_mul56(1) xor in_mul56(0); out_mul56(3) <= in_mul56(7) xor in_mul56(6) xor in_mul56(5) xor in_mul56(3) xor in_mul56(1); out_mul56(4) <= in_mul56(7) xor in_mul56(6) xor in_mul56(4) xor in_mul56(2) xor in_mul56(0); out_mul56(5) <= in_mul56(7) xor in_mul56(5) xor in_mul56(3) xor in_mul56(1); out_mul56(6) <= in_mul56(4) xor in_mul56(0); out_mul56(7) <= in_mul56(5) xor in_mul56(1);end mul56_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- ---- new component ---- ---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- -- multiplier by 82 -- library ieee;use ieee.std_logic_1164.all;entity mul82 isport ( in_mul82 : in std_logic_vector(7 downto 0); out_mul82 : out std_logic_vector(7 downto 0) );end mul82;architecture mul82_arch of mul82 isbegin out_mul82(0) <= in_mul82(7) xor in_mul82(6) xor in_mul82(5) xor in_mul82(3) xor in_mul82(1); out_mul82(1) <= in_mul82(7) xor in_mul82(6) xor in_mul82(4) xor in_mul82(2) xor in_mul82(0); out_mul82(2) <= in_mul82(6); out_mul82(3) <= in_mul82(6) xor in_mul82(5) xor in_mul82(3) xor in_mul82(1); out_mul82(4) <= in_mul82(7) xor in_mul82(6) xor in_mul82(4) xor in_mul82(2); out_mul82(5) <= in_mul82(7) xor in_mul82(5) xor in_mul82(3); out_mul82(6) <= in_mul82(7) xor in_mul82(5) xor in_mul82(4) xor in_mul82(3) xor in_mul82(1); out_mul82(7) <= in_mul82(6) xor in_mul82(5) xor in_mul82(4) xor in_mul82(2) xor in_mul82(0);end mul82_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- ---- new component ---- ---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- -- multiplier by f3 -- library ieee;use ieee.std_logic_1164.all;entity mulf3 isport ( in_mulf3 : in std_logic_vector(7 downto 0); out_mulf3 : out std_logic_vector(7 downto 0) );end mulf3;architecture mulf3_arch of mulf3 isbegin out_mulf3(0) <= in_mulf3(7) xor in_mulf3(6) xor in_mulf3(2) xor in_mulf3(1) xor in_mulf3(0); out_mulf3(1) <= in_mulf3(7) xor in_mulf3(3) xor in_mulf3(2) xor in_mulf3(1) xor in_mulf3(0); out_mulf3(2) <= in_mulf3(7) xor in_mulf3(6) xor in_mulf3(4) xor in_mulf3(3); out_mulf3(3) <= in_mulf3(6) xor in_mulf3(5) xor in_mulf3(4) xor in_mulf3(2) xor in_mulf3(1); out_mulf3(4) <= in_mulf3(7) xor in_mulf3(6) xor in_mulf3(5) xor in_mulf3(3) xor in_mulf3(2) xor in_mulf3(0); out_mulf3(5) <= in_mulf3(7) xor in_mulf3(6) xor in_mulf3(4) xor in_mulf3(3) xor in_mulf3(1) xor in_mulf3(0); out_mulf3(6) <= in_mulf3(6) xor in_mulf3(5) xor in_mulf3(4) xor in_mulf3(0); out_mulf3(7) <= in_mulf3(7) xor in_mulf3(6) xor in_mulf3(5) xor in_mulf3(1) xor in_mulf3(0);end mulf3_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- ---- new component ---- ---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- -- multiplier by 1e -- library ieee;use ieee.std_logic_1164.all;entity mul1e isport ( in_mul1e : in std_logic_vector(7 downto 0); out_mul1e : out std_logic_vector(7 downto 0) );end mul1e;architecture mul1e_arch of mul1e isbegin out_mul1e(0) <= in_mul1e(5) xor in_mul1e(4); out_mul1e(1) <= in_mul1e(6) xor in_mul1e(5) xor in_mul1e(0); out_mul1e(2) <= in_mul1e(7) xor in_mul1e(6) xor in_mul1e(5) xor in_mul1e(4) xor in_mul1e(1) xor in_mul1e(0); out_mul1e(3) <= in_mul1e(7) xor in_mul1e(6) xor in_mul1e(4) xor in_mul1e(2) xor in_mul1e(1) xor in_mul1e(0); out_mul1e(4) <= in_mul1e(7) xor in_mul1e(5) xor in_mul1e(3) xor in_mul1e(2) xor in_mul1e(1) xor in_mul1e(0); out_mul1e(5) <= in_mul1e(6) xor in_mul1e(4) xor in_mul1e(3) xor in_mul1e(2) xor in_mul1e(1); out_mul1e(6) <= in_mul1e(7) xor in_mul1e(3) xor in_mul1e(2); out_mul1e(7) <= in_mul1e(4) xor in_mul1e(3);end mul1e_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- ---- new component ---- ---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- -- multiplier by c6 --
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -