--------------------------------------------------
--+ Initial Permutation
--------------------------------------------------

library IEEE;
use IEEE.std_logic_1164.all;

entity InitialPer is 
	port (entrada : in std_logic_vector(1 to 64);
		saida : out std_logic_vector(1 to 64));
end InitialPer;

architecture InitialPer of InitialPer is
begin

	saida<=
		entrada(58)&
		entrada(50)&
		entrada(42)&
		entrada(34)&
		entrada(26)&
		entrada(18)&
		entrada(10)&
		entrada(2)&
		entrada(60)&
		entrada(52)&
		entrada(44)&
		entrada(36)&
		entrada(28)&
		entrada(20)&
		entrada(12)&
		entrada(4)&

		entrada(62)&
		entrada(54)&
		entrada(46)&
		entrada(38)&
		entrada(30)&
		entrada(22)&
		entrada(14)&
		entrada(6)&
		entrada(64)&
		entrada(56)&
		entrada(48)&
		entrada(40)&
		entrada(32)&
		entrada(24)&
		entrada(16)&
		entrada(8)&

		entrada(57)&
		entrada(49)&
		entrada(41)&
		entrada(33)&
		entrada(25)&
		entrada(17)&
		entrada(9)&
		entrada(1)&
		entrada(59)&
		entrada(51)&
		entrada(43)&
		entrada(35)&
		entrada(27)&
		entrada(19)&
		entrada(11)&
		entrada(3)&

		entrada(61)&
		entrada(53)&
		entrada(45)&
		entrada(37)&
		entrada(29)&
		entrada(21)&
		entrada(13)&
		entrada(5)&
		entrada(63)&
		entrada(55)&
		entrada(47)&
		entrada(39)&
		entrada(31)&
		entrada(23)&
		entrada(15)&
		entrada(7);

end InitialPer;

--------------------------------------------------
--+ Final Permutation
--------------------------------------------------
library IEEE;
use IEEE.std_logic_1164.all;

entity FinalPer is 
	port (entrada : in std_logic_vector(1 to 64);
		saida : out std_logic_vector(1 to 64));
end FinalPer;

architecture FinalPer of FinalPer is
begin
	saida<=
		entrada(40)&
		entrada(8)&
		entrada(48)&
		entrada(16)&
		entrada(56)&
		entrada(24)&
		entrada(64)&
		entrada(32)&
		entrada(39)&
		entrada(7)&
		entrada(47)&
		entrada(15)&
		entrada(55)&
		entrada(23)&
		entrada(63)&
		entrada(31)&
		entrada(38)&
		entrada(6)&
		entrada(46)&
		entrada(14)&
		entrada(54)&
		entrada(22)&
		entrada(62)&
		entrada(30)&
		entrada(37)&
		entrada(5)&
		entrada(45)&
		entrada(13)&
		entrada(53)&
		entrada(21)&
		entrada(61)&
		entrada(29)&
		entrada(36)&
		entrada(4)&
		entrada(44)&
		entrada(12)&
		entrada(52)&
		entrada(20)&
		entrada(60)&
		entrada(28)&
		entrada(35)&
		entrada(3)&
		entrada(43)&
		entrada(11)&
		entrada(51)&
		entrada(19)&
		entrada(59)&
		entrada(27)&
		entrada(34)&
		entrada(2)&
		entrada(42)&
		entrada(10)&
		entrada(50)&
		entrada(18)&
		entrada(58)&
		entrada(26)&
		entrada(33)&
		entrada(1)&
		entrada(41)&
		entrada(9)&
		entrada(49)&
		entrada(17)&
		entrada(57)&
		entrada(25);

end FinalPer;
