diff --git a/ADD.vhd b/ADD.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..cb93c39e1cbd4d8b4e560a6ac0d7cd0f2d2f0ee1
--- /dev/null
+++ b/ADD.vhd
@@ -0,0 +1,40 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	08/07/2015 - 18:58
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+USE IEEE.NUMERIC_STD.all;
+
+ENTITY ADD IS
+	PORT(
+		IN_A :						IN STD_LOGIC_VECTOR(31 DOWNTO 0);
+		IN_B :						IN	STD_LOGIC_VECTOR(31 DOWNTO 0);
+		OUT_A :						OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
+	);
+END ADD;
+
+ARCHITECTURE ARC_ADD OF ADD IS
+
+BEGIN
+
+	OUT_A <= STD_LOGIC_VECTOR (UNSIGNED(IN_A ) + UNSIGNED(IN_B));
+
+END ARC_ADD;
+
diff --git a/ADD_PC.vhd b/ADD_PC.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..7a760a6feb8cb0b418c5124a61dae9e9998aa5e3
--- /dev/null
+++ b/ADD_PC.vhd
@@ -0,0 +1,39 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	01/07/2015 - 20:00
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+USE IEEE.NUMERIC_STD.ALL;
+
+ENTITY ADD_PC IS
+	PORT(
+		IN_A :		IN 		STD_LOGIC_VECTOR(31 DOWNTO 0);
+		OUT_A :		OUT		STD_LOGIC_VECTOR(31 DOWNTO 0)
+	);
+END ADD_PC;
+
+ARCHITECTURE ARC_ADD_PC OF ADD_PC IS
+	CONSTANT PC_INCREMENT :			UNSIGNED(31 DOWNTO 0):= X"00000004";
+
+BEGIN
+	OUT_A <= STD_LOGIC_VECTOR(UNSIGNED(IN_A) + PC_INCREMENT);
+
+END ARC_ADD_PC;
+
diff --git a/AND.vhd b/AND.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..f59a488362dfb1b836edcabde96ffa7937f5f91f
--- /dev/null
+++ b/AND.vhd
@@ -0,0 +1,38 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	05/08/2015 - 20:35
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+
+ENTITY AND_1 IS
+	PORT(
+		Branch :		 		IN  	STD_LOGIC;
+		IN_A :				IN		STD_LOGIC;
+		OUT_A  :				OUT	STD_LOGIC
+	);
+END AND_1;
+
+ARCHITECTURE ARC_AND_1 OF AND_1 IS
+
+BEGIN
+	OUT_A <= Branch AND IN_A;
+
+END ARC_AND_1;
+
diff --git a/CONCAT.vhd b/CONCAT.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..a79dcaf3bb5a741ed005051e77078ded285e0310
--- /dev/null
+++ b/CONCAT.vhd
@@ -0,0 +1,40 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	05/08/2015 - 22:02
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+
+ENTITY CONCAT IS
+	PORT(
+		IN_A :					IN 			STD_LOGIC_VECTOR(31 DOWNTO 0);
+		IN_B :					IN				STD_LOGIC_VECTOR(31 DOWNTO 0);
+		OUT_A :					OUT 			STD_LOGIC_VECTOR(31 DOWNTO 0)
+	);
+END CONCAT;
+
+ARCHITECTURE ARC_CONCAT OF CONCAT IS
+
+	SIGNAL MONTA_OUT_S :				STD_LOGIC_VECTOR(31 DOWNTO 0); 
+
+BEGIN	
+	OUT_A <= IN_B(31 DOWNTO 28) & IN_A(27 DOWNTO 0);
+	
+END ARC_CONCAT;
+
diff --git a/CTRL.vhd b/CTRL.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..b6f982038a73da41b14ea4f4dc5ad4524c7e5c13
--- /dev/null
+++ b/CTRL.vhd
@@ -0,0 +1,105 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	25/06/2015 - 19:35
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+
+ENTITY CTRL IS
+	PORT(
+		OPCode : 			IN			STD_LOGIC_VECTOR(5 DOWNTO 0);
+		RegDst :				OUT		STD_LOGIC;
+		Jump :				OUT		STD_LOGIC;
+		Branch :				OUT		STD_LOGIC;
+		MemRead :			OUT		STD_LOGIC;
+		MemtoReg :			OUT		STD_LOGIC;
+		ALUOp :				OUT		STD_LOGIC_VECTOR(1 DOWNTO 0);
+		MemWrite :			OUT		STD_LOGIC;
+		ALUSrc :				OUT		STD_LOGIC;
+		RegWrite :			OUT		STD_LOGIC
+	);
+END CTRL;
+
+ARCHITECTURE ARC_CTRL OF CTRL IS
+	
+BEGIN
+	PROCESS(OPCode)
+	BEGIN
+		CASE OPCode IS
+			--TYPE R
+			WHEN "000000" =>  RegDst <=		'1';
+									Jump <=			'0';
+									ALUSrc <=		'0';
+									MemtoReg <=		'0';
+									RegWrite <=		'1';
+									MemRead <=		'0';
+									MemWrite <=		'0';
+									Branch <=		'0';
+									ALUOp(1) <=		'1';
+									ALUOp(0) <=		'0';	
+			--TYPE LW						
+			WHEN "100011" =>  RegDst <= 		'0';
+									Jump <=			'0';
+									ALUSrc <=		'1';
+									MemtoReg <=		'1';
+									RegWrite <=		'1';
+									MemRead <=		'1';
+									MemWrite <=		'0';
+									Branch <=		'0';
+									ALUOp(1) <=		'0';
+									ALUOp(0) <=		'0';
+			--TYPE SW					
+			WHEN "101011" =>  RegDst <=		'0'; --X
+									Jump <=			'0';
+									ALUSrc <=		'1';
+									MemtoReg <=		'0'; --X
+									RegWrite <=		'0';
+									MemRead <=		'0';
+									MemWrite <=		'1';
+									Branch <=		'0';
+									ALUOp(1) <=		'0';
+									ALUOp(0) <=		'0';
+			--TYPE JUMP
+			WHEN "000010" =>  RegDst <=		'0'; --X
+									Jump <=			'1';
+									ALUSrc <=		'0';
+									MemtoReg <=		'0'; --X
+									RegWrite <=		'0';
+									MemRead <=		'0';
+									MemWrite <=		'0';
+									Branch <=		'0';
+									ALUOp(1) <=		'1';
+									ALUOp(0) <=		'0';
+			--TYPE BEQ
+			WHEN OTHERS => 	RegDst <=		'0'; --X
+									Jump <=			'0';
+									ALUSrc <=		'0';
+									MemtoReg <=		'0'; --X
+									RegWrite <=		'0';
+									MemRead <=		'0';
+									MemWrite <=		'0';
+									Branch <=		'1';
+									ALUOp(1) <=		'0';
+									ALUOp(0) <=		'1';	
+									
+		END CASE;
+	END PROCESS;
+
+END ARC_CTRL;
+
diff --git a/EXTEND.vhd b/EXTEND.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..9e6a5387a975b019cf75c30c0a4aea200676897b
--- /dev/null
+++ b/EXTEND.vhd
@@ -0,0 +1,43 @@
+---------------------------------------------------------------------------------
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	18/06/2015 - 20:12
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+use IEEE.NUMERIC_STD.ALL;
+
+ENTITY EXTEND_SIGNAL IS
+	PORT(
+		IN_A :				IN		STD_LOGIC_VECTOR (15 DOWNTO 0);
+		OUT_A : 				OUT  	STD_LOGIC_VECTOR (31 DOWNTO 0)
+	);
+END EXTEND_SIGNAL;
+
+ARCHITECTURE ARC_EXTEND_SIGNAL OF EXTEND_SIGNAL IS
+
+BEGIN
+	
+	OUT_A <= STD_LOGIC_VECTOR(RESIZE(SIGNED(IN_A), OUT_A'LENGTH));
+	
+END ARC_EXTEND_SIGNAL;
+
+
+
diff --git a/INST.vhd b/INST.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..a68a59a1266d001f9ef3405c35ca0de2f264f6a7
--- /dev/null
+++ b/INST.vhd
@@ -0,0 +1,57 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	01/07/2015 - 19:14
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+USE IEEE.NUMERIC_STD.ALL;
+
+
+ENTITY INST IS
+	PORT(
+		IN_A :			IN 	STD_LOGIC_VECTOR(31 DOWNTO 0);
+		OUT_A :			OUT	STD_LOGIC_VECTOR(31 DOWNTO 0)
+	);
+END INST;
+
+ARCHITECTURE ARC_INST OF INST IS
+	--DEVE SER 0 TO 255 O ARRAY PARA FACILITAR A LEITURA DO PROGRAMA EM ORDEM CRESCENTE
+	TYPE MEMORY IS ARRAY (0 TO 255) OF STD_LOGIC_VECTOR(31 DOWNTO 0);
+	SIGNAL PROGRAM : MEMORY := (	X"01095024", X"01485025" ,X"014a5020",X"01285022",X"0149582a",X"00004820",X"11490002",X"01284820",X"08100006",X"ae2a0000",X"8e300000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",
+													X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",
+													X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",
+													X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",
+													X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",
+													X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",
+													X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",
+													X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",
+													X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",
+													X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",
+													X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",
+													X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",
+													X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",
+													X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",
+													X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",
+													X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000",X"00000000"	);
+	BEGIN
+		--O FATOR - X"00400000"  DEVIDO AO INCIO DAS INSTRUES NO SOFTWARE MARS
+		OUT_A <= PROGRAM(TO_INTEGER((UNSIGNED(IN_A) - X"00400000") SRL 2));
+	
+END ARC_INST;
+
diff --git a/MAIN_CTTRL.vhd b/MAIN_CTTRL.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..cdb643761a9a71b01d0cb1f558d57e7dc9f3d45c
--- /dev/null
+++ b/MAIN_CTTRL.vhd
@@ -0,0 +1,314 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	01/07/2015 - 22:08 
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+USE IEEE.NUMERIC_STD.ALL;
+
+ENTITY MAIN_PROCESSOR IS
+	PORT(
+		CLK :										IN 				STD_LOGIC;
+		RESET :									IN 				STD_LOGIC
+	);
+END MAIN_PROCESSOR;
+
+ARCHITECTURE ARC_MAIN_PROCESSOR OF MAIN_PROCESSOR IS
+
+	COMPONENT ADD_PC IS
+		PORT(
+			IN_A :			IN 		STD_LOGIC_VECTOR(31 DOWNTO 0);
+			OUT_A :			OUT		STD_LOGIC_VECTOR(31 DOWNTO 0)
+		);
+	END COMPONENT;
+
+	COMPONENT ADD IS
+		PORT(
+			IN_A :			IN 		STD_LOGIC_VECTOR(31 DOWNTO 0);
+			IN_B :			IN			STD_LOGIC_VECTOR(31 DOWNTO 0);
+			OUT_A :			OUT 		STD_LOGIC_VECTOR(31 DOWNTO 0)
+		);
+	END COMPONENT;
+	
+	COMPONENT AND_1 IS
+		PORT(
+			Branch :		 	IN  		STD_LOGIC;
+			IN_A :			IN			STD_LOGIC;
+			OUT_A  :			OUT		STD_LOGIC
+		);
+	END COMPONENT;	
+
+	COMPONENT CONCAT IS
+		PORT(
+			IN_A :			IN 		STD_LOGIC_VECTOR(31 DOWNTO 0);
+			IN_B :			IN			STD_LOGIC_VECTOR(31 DOWNTO 0);
+			OUT_A :			OUT 		STD_LOGIC_VECTOR(31 DOWNTO 0)
+		);
+	END COMPONENT;
+	
+	COMPONENT CTRL IS
+		PORT(
+			OPCode : 		IN			STD_LOGIC_VECTOR(5 DOWNTO 0);
+			RegDst :			OUT		STD_LOGIC;
+			Jump :			OUT		STD_LOGIC;
+			Branch :			OUT		STD_LOGIC;
+			MemRead :		OUT		STD_LOGIC;
+			MemtoReg :		OUT		STD_LOGIC;
+			ALUOp :			OUT		STD_LOGIC_VECTOR(1 DOWNTO 0);
+			MemWrite :		OUT		STD_LOGIC;
+			ALUSrc :			OUT		STD_LOGIC;
+			RegWrite :		OUT		STD_LOGIC
+		);
+	END COMPONENT;
+	
+	COMPONENT EXTEND_SIGNAL IS
+		PORT(
+			IN_A :			IN			STD_LOGIC_VECTOR (15 DOWNTO 0);
+			OUT_A : 			OUT  		STD_LOGIC_VECTOR (31 DOWNTO 0)
+		);
+	END COMPONENT;
+	
+	COMPONENT INST IS
+		PORT(
+			IN_A :			IN 		STD_LOGIC_VECTOR(31 DOWNTO 0);
+			OUT_A :			OUT		STD_LOGIC_VECTOR(31 DOWNTO 0)
+		);
+	END COMPONENT;
+	
+	COMPONENT MEM IS
+		PORT(
+			CLK :				IN 		STD_LOGIC;
+			RESET :			IN 		STD_LOGIC;
+			MemWrite :		IN 		STD_LOGIC;
+			MemRead :		IN 		STD_LOGIC;
+			IN_A :			IN 		STD_LOGIC_VECTOR(31 DOWNTO 0); 
+			IN_B :			IN 		STD_LOGIC_VECTOR(31 DOWNTO 0);
+			OUT_A :			OUT 		STD_LOGIC_VECTOR(31 DOWNTO 0)
+		);
+	END COMPONENT;
+	
+	COMPONENT MX_1 IS
+		PORT(
+			RegDst :			IN			STD_LOGIC;	
+			IN_A :			IN 		STD_LOGIC_VECTOR(4 DOWNTO 0);
+			IN_B :			IN			STD_LOGIC_VECTOR(4 DOWNTO 0);
+			OUT_A :			OUT 		STD_LOGIC_VECTOR(4 DOWNTO 0)
+		);
+	END COMPONENT;
+	
+	COMPONENT MX_2 IS
+		PORT(
+			AluSrc :			IN			STD_LOGIC;
+			IN_A :			IN 		STD_LOGIC_VECTOR(31 DOWNTO 0);
+			IN_B : 			IN  		STD_LOGIC_VECTOR(31 DOWNTO 0);
+			OUT_A :			OUT		STD_LOGIC_VECTOR(31 DOWNTO 0)			
+		);
+	END COMPONENT;
+	
+	COMPONENT MX_3 IS
+		PORT(
+			IN_A :			IN 		STD_LOGIC_VECTOR(31 DOWNTO 0);
+			IN_B :			IN 		STD_LOGIC_VECTOR(31 DOWNTO 0);
+			IN_C :			IN 		STD_LOGIC;
+			OUT_A :			OUT 		STD_LOGIC_VECTOR(31 DOWNTO 0)
+		);
+	END COMPONENT;
+	
+	COMPONENT MX_4 IS
+		PORT(
+			Jump :			IN 		STD_LOGIC;
+			IN_A :			IN 		STD_LOGIC_VECTOR(31 DOWNTO 0);
+			IN_B :			IN 		STD_LOGIC_VECTOR(31 DOWNTO 0);
+			OUT_A :			OUT 		STD_LOGIC_VECTOR(31 DOWNTO 0)
+		);
+	END COMPONENT;
+	
+	COMPONENT MX_5 IS
+		PORT(
+			MemtoReg :		IN 		STD_LOGIC;
+			IN_A :			IN 		STD_LOGIC_VECTOR(31 DOWNTO 0);
+			IN_B :			IN 		STD_LOGIC_VECTOR(31 DOWNTO 0);
+			OUT_A :			OUT 		STD_LOGIC_VECTOR(31 DOWNTO 0)
+		);
+	END COMPONENT;
+	
+	COMPONENT PC IS
+		PORT(
+			CLK :				IN			STD_LOGIC;
+			RESET :			IN			STD_LOGIC;
+			IN_A :			IN 		STD_LOGIC_VECTOR(31 DOWNTO 0);
+			OUT_A :			OUT		STD_LOGIC_VECTOR(31 DOWNTO 0)
+		);
+	END COMPONENT;
+	
+	COMPONENT REG IS
+		PORT(
+			CLK :				IN 		STD_LOGIC;
+			RESET :			IN			STD_LOGIC;
+			RegWrite :		IN 		STD_LOGIC;
+			IN_A :			IN			STD_LOGIC_VECTOR(4 DOWNTO 0);
+			IN_B :			IN 		STD_LOGIC_VECTOR(4 DOWNTO 0);
+			IN_C :			IN 		STD_LOGIC_VECTOR(4 DOWNTO 0);
+			IN_D :			IN 		STD_LOGIC_VECTOR(31 DOWNTO 0);
+			OUT_A	:			OUT 		STD_LOGIC_VECTOR(31 DOWNTO 0);
+			OUT_B :			OUT 		STD_LOGIC_VECTOR(31 DOWNTO 0)
+		);
+	END COMPONENT;
+	
+	COMPONENT SL_1 IS
+		PORT(
+			IN_A :		 	IN  		STD_LOGIC_VECTOR (31 DOWNTO 0);
+			OUT_A  :			OUT		STD_LOGIC_VECTOR (31 DOWNTO 0)
+		);
+	END COMPONENT;
+	
+	COMPONENT SL_2 IS
+		PORT(
+			IN_A : 			IN  		STD_LOGIC_VECTOR (31 DOWNTO 0);
+			OUT_A	  :		OUT		STD_LOGIC_VECTOR (31 DOWNTO 0)
+		);
+	END COMPONENT;
+	
+	COMPONENT ULA_CTRL IS
+		PORT ( 
+			ALUOp : 			IN  		STD_LOGIC_VECTOR (1 DOWNTO 0);
+			IN_A : 			IN  		STD_LOGIC_VECTOR (5 DOWNTO 0);
+			OUT_A : 			OUT  		STD_LOGIC_VECTOR (2 DOWNTO 0)
+		);
+	END COMPONENT;
+	
+	COMPONENT ULA IS
+		PORT(
+			IN_A : 				IN  	STD_LOGIC_VECTOR (31 downto 0);				--RS
+			IN_B : 				IN  	STD_LOGIC_VECTOR (31 downto 0);				--RT
+			IN_C : 				IN 	STD_LOGIC_VECTOR (2 downto 0);
+         OUT_A :		 		OUT  	STD_LOGIC_VECTOR (31 downto 0);
+			ZERO : 				OUT  	STD_LOGIC	
+		);
+	END COMPONENT;
+	
+	--ADD_PC
+	SIGNAL S_ADD_PC_OUT_A : 		STD_LOGIC_VECTOR(31 DOWNTO 0);
+	
+	--ADD
+	SIGNAL S_ADD_OUT_A :			 	STD_LOGIC_VECTOR(31 DOWNTO 0);
+	
+	--AND_1
+	SIGNAL S_AND_1_OUT_A  :			STD_LOGIC;
+	
+	--CONCAT
+	SIGNAL S_CONCAT_OUT_A :			STD_LOGIC_VECTOR(31 DOWNTO 0);
+	
+	--CTRL
+	SIGNAL S_CTRL_RegDst :			STD_LOGIC;	
+	SIGNAL S_CTRL_Jump :				STD_LOGIC;	
+	SIGNAL S_CTRL_Branch :			STD_LOGIC;
+	SIGNAL S_CTRL_MemRead :			STD_LOGIC;
+	SIGNAL S_CTRL_MemtoReg :		STD_LOGIC;
+	SIGNAL S_CTRL_ALUOp :			STD_LOGIC_VECTOR(1 DOWNTO 0);
+	SIGNAL S_CTRL_MemWrite :		STD_LOGIC;
+	SIGNAL S_CTRL_ALUSrc :			STD_LOGIC;
+	SIGNAL S_CTRL_RegWrite :		STD_LOGIC;
+	
+	--INST
+	SIGNAL S_INST_OUT_A :			STD_LOGIC_VECTOR(31 DOWNTO 0);
+	
+	--EXTEND_SIGNAL
+	SIGNAL S_EXTEND_SIGNAL_OUT_A :STD_LOGIC_VECTOR (31 DOWNTO 0);
+	
+	--MEM
+	SIGNAL S_MEM_OUT_A :				STD_LOGIC_VECTOR(31 DOWNTO 0);
+	
+	--MX_1
+	SIGNAL S_MX_1_OUT_A :			STD_LOGIC_VECTOR(4 DOWNTO 0);
+	
+	--MX_2
+	SIGNAL S_MX_2_OUT_A :			STD_LOGIC_VECTOR(31 DOWNTO 0);
+	
+	--MX_3
+	SIGNAL S_MX_3_OUT_A :			STD_LOGIC_VECTOR(31 DOWNTO 0);
+	
+	--MX_4
+	SIGNAL S_MX_4_OUT_A :			STD_LOGIC_VECTOR(31 DOWNTO 0);
+	
+	--MX_5
+	SIGNAL S_MX_5_OUT_A :			STD_LOGIC_VECTOR(31 DOWNTO 0);
+	
+	--PC
+	SIGNAL S_PC_OUT_A :				STD_LOGIC_VECTOR(31 DOWNTO 0);
+	
+	--REG
+	SIGNAL S_REG_OUT_A :		 		STD_LOGIC_VECTOR(31 DOWNTO 0);
+	SIGNAL S_REG_OUT_B :				STD_LOGIC_VECTOR(31 DOWNTO 0);
+	
+	--SL_1
+	SIGNAL S_SL_1_OUT_A	  :		STD_LOGIC_VECTOR (31 DOWNTO 0);
+	
+	--SL_2
+	SIGNAL S_SL_2_OUT_A	  :		STD_LOGIC_VECTOR (31 DOWNTO 0);
+	
+	--ULA_CTRL
+	SIGNAL S_ULA_CTRL_OUT_A : 		STD_LOGIC_VECTOR (2 DOWNTO 0);
+	
+	--ULA
+	SIGNAL S_ULA_OUT_A :				STD_LOGIC_VECTOR (31 downto 0);
+	SIGNAL S_ULA_ZERO :  			STD_LOGIC;
+	
+	--DEMAIS SINAIS
+	SIGNAL S_GERAL_OPCode :			STD_LOGIC_VECTOR(5 DOWNTO 0);
+	SIGNAL S_GERAL_RS : 				STD_LOGIC_VECTOR(4 DOWNTO 0);	
+	SIGNAL S_GERAL_RT : 				STD_LOGIC_VECTOR(4 DOWNTO 0);	
+	SIGNAL S_GERAL_RD : 				STD_LOGIC_VECTOR(4 DOWNTO 0);	
+	SIGNAL S_GERAL_I_TYPE :			STD_LOGIC_VECTOR(15 DOWNTO 0);
+	SIGNAL S_GERAL_FUNCT :			STD_LOGIC_VECTOR(5 DOWNTO 0);
+	SIGNAL S_GERAL_JUMP :			STD_LOGIC_VECTOR(31 DOWNTO 0);
+	SIGNAL S_GERAL_PC_4 :			STD_LOGIC_VECTOR(31 DOWNTO 0);
+
+BEGIN
+	S_GERAL_OPCode 	<= S_INST_OUT_A(31 DOWNTO 26);
+	S_GERAL_RS 			<= S_INST_OUT_A(25 DOWNTO 21);
+	S_GERAL_RT			<= S_INST_OUT_A(20 DOWNTO 16);
+	S_GERAL_RD 			<= S_INST_OUT_A(15 DOWNTO 11);
+	S_GERAL_I_TYPE 	<= S_INST_OUT_A(15 DOWNTO 0);
+	S_GERAL_FUNCT		<= S_INST_OUT_A(5 DOWNTO 0);
+	S_GERAL_JUMP		<= S_INST_OUT_A(31 DOWNTO 0);
+	S_GERAL_PC_4		<= S_ADD_PC_OUT_A(31 DOWNTO 0);
+
+	C_PC :					PC PORT MAP(CLK, RESET, S_MX_4_OUT_A, S_PC_OUT_A);
+	C_ADD_PC :				ADD_PC PORT MAP(S_PC_OUT_A, S_ADD_PC_OUT_A);
+	C_INST :					INST PORT MAP(S_PC_OUT_A, S_INST_OUT_A);
+	C_SL_1 :					SL_1 PORT MAP(S_GERAL_JUMP, S_SL_1_OUT_A);
+	C_CTRL :					CTRL PORT MAP(S_GERAL_OPCode, S_CTRL_RegDst, S_CTRL_Jump, S_CTRL_Branch, S_CTRL_MemRead, S_CTRL_MemtoReg, S_CTRL_ALUOp, S_CTRL_MemWrite, S_CTRL_ALUSrc, S_CTRL_RegWrite);
+	C_CONCAT :				CONCAT PORT MAP(S_SL_1_OUT_A, S_GERAL_PC_4, S_CONCAT_OUT_A);
+	C_MX_1 :					MX_1 PORT MAP(S_CTRL_RegDst, S_GERAL_RT, S_GERAL_RD, S_MX_1_OUT_A);
+	C_SL_2 :					SL_2 PORT MAP(S_EXTEND_SIGNAL_OUT_A, S_SL_2_OUT_A);
+	C_REG :					REG PORT MAP(CLK, RESET, S_CTRL_RegWrite, S_GERAL_RS, S_GERAL_RT, S_MX_1_OUT_A, S_MX_5_OUT_A, S_REG_OUT_A, S_REG_OUT_B);
+	C_EXTEND_SIGNAL :		EXTEND_SIGNAL PORT MAP(S_GERAL_I_TYPE, S_EXTEND_SIGNAL_OUT_A);
+	C_ADD :					ADD PORT MAP(S_ADD_PC_OUT_A, S_SL_2_OUT_A, S_ADD_OUT_A);
+	C_ULA :					ULA PORT MAP(S_REG_OUT_A, S_MX_2_OUT_A, S_ULA_CTRL_OUT_A, S_ULA_OUT_A, S_ULA_ZERO);
+	C_MX_2 :					MX_2 PORT MAP(S_CTRL_ALUSrc, S_REG_OUT_B, S_EXTEND_SIGNAL_OUT_A, S_MX_2_OUT_A);
+	C_ULA_CTRL :			ULA_CTRL PORT MAP(S_CTRL_ALUOp, S_GERAL_FUNCT, S_ULA_CTRL_OUT_A);
+	C_MX_3 :					MX_3 PORT MAP(S_ADD_PC_OUT_A, S_ADD_OUT_A, S_AND_1_OUT_A, S_MX_3_OUT_A);
+	C_AND_1 :				AND_1 PORT MAP(S_CTRL_Branch, S_ULA_ZERO, S_AND_1_OUT_A);
+	C_MEM :					MEM PORT MAP(CLK, RESET, S_CTRL_MemWrite, S_CTRL_MemRead, S_ULA_OUT_A, S_REG_OUT_B, S_MEM_OUT_A);
+	C_MX_4 :					MX_4 PORT MAP(S_CTRL_Jump, S_CONCAT_OUT_A, S_MX_3_OUT_A, S_MX_4_OUT_A);
+	C_MX_5 :					MX_5 PORT MAP(S_CTRL_MemtoReg, S_MEM_OUT_A, S_ULA_OUT_A, S_MX_5_OUT_A);
+	
+END ARC_MAIN_PROCESSOR;
+
diff --git a/MEM.vhd b/MEM.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..f71c9dbdb120a48ea969650437f4870f42ba8991
--- /dev/null
+++ b/MEM.vhd
@@ -0,0 +1,72 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	08/07/2015 - 20:07
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+USE IEEE.NUMERIC_STD.ALL;
+
+ENTITY MEM IS
+	PORT(
+		CLK :						IN STD_LOGIC;
+		RESET :					IN STD_LOGIC;
+		MemWrite :				IN STD_LOGIC;
+		MemRead :				IN STD_LOGIC;
+		IN_A :					IN STD_LOGIC_VECTOR(31 DOWNTO 0); 
+		IN_B :					IN STD_LOGIC_VECTOR(31 DOWNTO 0);
+		OUT_A :					OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
+	);
+END MEM;
+
+ARCHITECTURE ARC_MEM OF MEM IS
+	TYPE 		RAM_TYPE IS ARRAY(0 TO 255) OF STD_LOGIC_VECTOR(31 DOWNTO 0);
+	SIGNAL	RAM: RAM_TYPE;
+	SIGNAL 	ADRESS :  STD_LOGIC_VECTOR(31 DOWNTO 0);
+	
+BEGIN
+	PROCESS(CLK)
+		BEGIN
+			IF RESET = '1' THEN
+			
+				RAM <= ((OTHERS => (OTHERS=>'0')));
+				
+			ELSIF CLK'EVENT AND CLK = '1' THEN
+				IF MemWrite = '1' THEN
+					
+					--MIPS ARMAZEMA EM BYTES OU SEJA 4 EM 4
+					--POR ISSO PEGA DE 31 A 2, POIS DEVIDO A POSIO DE ORDENAO DO ARRAY SER DE 1 EM 1...
+					--...SE DESLOCA DOIS PARA DIREITA EX:
+					--						SW $S0, 4($T0)					1010110100101000 0000000000000100
+					--												[31-2]
+					--															1010110100101000 00000000000001  = 1
+					--						SW $S0, 8($T0) 				1010110100101000 0000000000001000
+					--												[31-2]
+					--															1010110100101000 00000000000010  = 2
+					RAM(TO_INTEGER (UNSIGNED(ADRESS(31 DOWNTO 2)))) <= IN_B;
+				END IF;
+			END IF;
+	END PROCESS;
+	
+	OUT_A	<=	RAM(TO_INTEGER(UNSIGNED(ADRESS(31 DOWNTO 2)))) WHEN MemRead ='1';
+	
+	--PARA UTILIZAR COM O MARS
+	ADRESS <= STD_LOGIC_VECTOR(UNSIGNED(IN_A) - X"FFFF0000");
+
+END ARC_MEM;
+
diff --git a/MX_1.vhd b/MX_1.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..defbdab25e07e0280b284f8d638c274dcf0d91ad
--- /dev/null
+++ b/MX_1.vhd
@@ -0,0 +1,39 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	02/07/2015 - 21:48
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+
+ENTITY MX_1 IS
+	PORT(
+		RegDst :					IN				STD_LOGIC;	
+		IN_A :					IN 			STD_LOGIC_VECTOR(4 DOWNTO 0);
+		IN_B :					IN				STD_LOGIC_VECTOR(4 DOWNTO 0);
+		OUT_A :					OUT 			STD_LOGIC_VECTOR(4 DOWNTO 0)
+	);
+END MX_1;
+
+ARCHITECTURE ARC_MX_1 OF MX_1 IS
+
+BEGIN
+	OUT_A <= IN_A WHEN RegDst = '0' ELSE IN_B;
+
+END ARC_MX_1;
+
diff --git a/MX_2.vhd b/MX_2.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..17448dab8d1db94c2f05b78a11dab15d0b63a998
--- /dev/null
+++ b/MX_2.vhd
@@ -0,0 +1,39 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	06/07/2015 - 22:06
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+
+ENTITY MX_2 IS
+	PORT(
+		AluSrc :					IN				STD_LOGIC;
+		IN_A :					IN 			STD_LOGIC_VECTOR(31 DOWNTO 0);
+		IN_B : 					IN  			STD_LOGIC_VECTOR(31 DOWNTO 0);
+		OUT_A :					OUT			STD_LOGIC_VECTOR(31 DOWNTO 0)			
+	);
+END MX_2;
+
+ARCHITECTURE ARC_MX_2 OF MX_2 IS
+
+BEGIN
+	OUT_A <= IN_A WHEN AluSrc ='0' ELSE IN_B;
+
+END ARC_MX_2;
+
diff --git a/MX_3.vhd b/MX_3.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..93d4e266ee26b1a09b6118834bbda806949e534e
--- /dev/null
+++ b/MX_3.vhd
@@ -0,0 +1,39 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	08/07/2015 - 19:11
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+
+ENTITY MX_3 IS
+	PORT(
+		IN_A :					IN STD_LOGIC_VECTOR(31 DOWNTO 0);
+		IN_B :					IN STD_LOGIC_VECTOR(31 DOWNTO 0);
+		IN_C :					IN STD_LOGIC;
+		OUT_A :					OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
+	);
+END MX_3;
+
+ARCHITECTURE ARC_MX_3 OF MX_3 IS
+
+BEGIN
+	OUT_A <= IN_A  WHEN IN_C = '0' ELSE IN_B;
+
+END ARC_MX_3;
+
diff --git a/MX_4.vhd b/MX_4.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..618750fb839a9cd0030630fe60c8ddce69c1ed29
--- /dev/null
+++ b/MX_4.vhd
@@ -0,0 +1,39 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	08/07/2015 - 19:11
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+
+ENTITY MX_4 IS
+	PORT(
+		Jump :					IN STD_LOGIC;
+		IN_A :					IN STD_LOGIC_VECTOR(31 DOWNTO 0);
+		IN_B :					IN STD_LOGIC_VECTOR(31 DOWNTO 0);
+		OUT_A :					OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
+	);
+END MX_4;
+
+ARCHITECTURE ARC_MX_4 OF MX_4 IS
+
+BEGIN
+	OUT_A <= IN_B  WHEN Jump = '0' ELSE IN_A;
+
+END ARC_MX_4;
+
diff --git a/MX_5.vhd b/MX_5.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..de27283d8f80823c64c0a08bc4027eaf67a91901
--- /dev/null
+++ b/MX_5.vhd
@@ -0,0 +1,38 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	08/07/2015 - 19:11
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+
+ENTITY MX_5 IS
+	PORT(
+		MemtoReg :				IN STD_LOGIC;
+		IN_A :					IN STD_LOGIC_VECTOR(31 DOWNTO 0);
+		IN_B :					IN STD_LOGIC_VECTOR(31 DOWNTO 0);
+		OUT_A :					OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
+	);
+END MX_5;
+ARCHITECTURE ARC_MX_5 OF MX_5 IS
+
+BEGIN
+	OUT_A <= IN_B  WHEN MemtoReg = '0' ELSE IN_A;
+
+END ARC_MX_5;
+
diff --git a/PC.vhd b/PC.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..d7c887620c4c18ac61f00e2a6ab7b9da485db68b
--- /dev/null
+++ b/PC.vhd
@@ -0,0 +1,45 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	01/07/2015 - 19:53 
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+
+ENTITY PC IS
+	PORT(
+		CLK :							IN		STD_LOGIC;
+		RESET :						IN		STD_LOGIC;
+		IN_A :						IN 	STD_LOGIC_VECTOR(31 DOWNTO 0);
+		OUT_A :						OUT	STD_LOGIC_VECTOR(31 DOWNTO 0)
+	);
+END PC;
+
+ARCHITECTURE ARC_PC OF PC IS
+	
+BEGIN
+	PROCESS(CLK, RESET)
+	BEGIN
+		IF RESET = '1' THEN
+			OUT_A <= X"00400000";								--Para utilizar com o MARS
+		ELSIF	CLK'EVENT AND CLK = '1' THEN
+			OUT_A <= IN_A;
+		END IF;
+	END PROCESS;
+END ARC_PC;
+
diff --git a/REG.vhd b/REG.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..a8d691038879524d47341c2c6cb7c1ed86635ab4
--- /dev/null
+++ b/REG.vhd
@@ -0,0 +1,78 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	29/06/2015 - 20:31
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+USE IEEE.NUMERIC_STD.ALL;
+
+ENTITY REG IS
+	PORT(
+		CLK :					IN STD_LOGIC;
+		RESET :				IN	STD_LOGIC;
+		RegWrite :			IN STD_LOGIC;
+		IN_A :				IN	STD_LOGIC_VECTOR(4 DOWNTO 0);
+		IN_B :				IN STD_LOGIC_VECTOR(4 DOWNTO 0);
+		IN_C :				IN STD_LOGIC_VECTOR(4 DOWNTO 0);
+		IN_D :				IN STD_LOGIC_VECTOR(31 DOWNTO 0);
+		OUT_A	:				OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
+		OUT_B :				OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
+	);
+END REG;
+
+ARCHITECTURE ARC_REG OF REG IS
+	
+	TYPE 		STD_REG IS ARRAY(0 TO 31) OF STD_LOGIC_VECTOR(31 DOWNTO 0);
+	SIGNAL	REG_1: STD_REG;
+	SIGNAL	REG_2: STD_REG;
+	
+BEGIN	
+	--REALIZA A LEITURA NO ENDEREO SELECIONADO
+	OUT_A		<=		REG_1(TO_INTEGER(UNSIGNED(IN_A)));
+	OUT_B		<=		REG_2(TO_INTEGER(UNSIGNED(IN_B)));
+	
+	--PROCESSO DE LEITURA
+	PROCESS(CLK, RESET)
+		BEGIN
+			IF RESET = '1' THEN
+				REG_1(0) <= (OTHERS => '0');
+				REG_2(0) <= (OTHERS => '0');
+				
+				--t0
+				REG_1(8) <= (0 => '1', OTHERS => '0');					--NO TEMOS A FUNO ADDI, ENTO
+				REG_2(8) <= (0 => '1', OTHERS => '0');					--TEM QUE SER NA FORA BRUTA
+				
+				--t1
+				REG_1(9) <= (0 => '1', 1 => '1', OTHERS => '0');
+				REG_2(9) <= (0 => '1', 1 => '1', OTHERS => '0');
+				
+				--s1
+				REG_1(17) <= X"FFFF0000";
+				REG_2(17) <= X"FFFF0000";
+			
+			ELSIF CLK'EVENT AND CLK = '0' AND RegWrite = '1' THEN
+				REG_1(TO_INTEGER(UNSIGNED(IN_C))) <= IN_D;
+				REG_2(TO_INTEGER(UNSIGNED(IN_C))) <= IN_D;
+			
+			END IF;
+	END PROCESS;
+
+END ARC_REG;
+
+
diff --git a/SL_1.vhd b/SL_1.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..300111ee65f07ed88c138f3ffa3c9b1b7228c5b6
--- /dev/null
+++ b/SL_1.vhd
@@ -0,0 +1,38 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	09/07/2015 - 22:07
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+USE IEEE.NUMERIC_STD.ALL;
+
+ENTITY SL_1 IS
+	PORT(
+		IN_A :		 		IN  	STD_LOGIC_VECTOR (31 DOWNTO 0);
+		OUT_A  :				OUT	STD_LOGIC_VECTOR (31 DOWNTO 0)
+	);
+END SL_1;
+
+ARCHITECTURE ARC_SL_1 OF SL_1 IS
+
+BEGIN
+	OUT_A	<= STD_LOGIC_VECTOR(UNSIGNED(IN_A) SLL 2);
+
+END ARC_SL_1;
+
diff --git a/SL_2.vhd b/SL_2.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..068e649dc95343b59330548ca3755650457b02a0
--- /dev/null
+++ b/SL_2.vhd
@@ -0,0 +1,39 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	24/06/2015 - 21:46
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+use IEEE.NUMERIC_STD.ALL;
+
+ENTITY SL_2 IS
+	PORT(
+		IN_A : 			IN  	STD_LOGIC_VECTOR (31 DOWNTO 0);
+		OUT_A	  :		OUT	STD_LOGIC_VECTOR (31 DOWNTO 0)
+	);
+END SL_2;
+
+ARCHITECTURE ARC_SL_2 OF SL_2 IS
+
+BEGIN
+
+	OUT_A	<= STD_LOGIC_VECTOR(UNSIGNED(IN_A) SLL 2);
+
+END ARC_SL_2;
+
diff --git a/TB_MAIN_PROCESSOR.vhd b/TB_MAIN_PROCESSOR.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..b6ca1526ab4867e403ad9bf368aebaba9f31a729
--- /dev/null
+++ b/TB_MAIN_PROCESSOR.vhd
@@ -0,0 +1,84 @@
+--------------------------------------------------------------------------------
+-- Company: 
+-- Engineer:
+--
+-- Create Date:   17:35:44 08/06/2015
+-- Design Name:   
+-- Module Name:   E:/Programas_FPGA/SYNGLE_CYCLE_V3/TB_MAIN_PROCESSOR.vhd
+-- Project Name:  SYNGLE_CYCLE_V3
+-- Target Device:  
+-- Tool versions:  
+-- Description:   
+-- 
+-- VHDL Test Bench Created by ISE for module: MAIN_PROCESSOR
+-- 
+-- Dependencies:
+-- 
+-- Revision:
+-- Revision 0.01 - File Created
+-- Additional Comments:
+--
+-- Notes: 
+-- This testbench has been automatically generated using types std_logic and
+-- std_logic_vector for the ports of the unit under test.  Xilinx recommends
+-- that these types always be used for the top-level I/O of a design in order
+-- to guarantee that the testbench will bind correctly to the post-implementation 
+-- simulation model.
+--------------------------------------------------------------------------------
+LIBRARY ieee;
+USE ieee.std_logic_1164.ALL;
+ 
+-- Uncomment the following library declaration if using
+-- arithmetic functions with Signed or Unsigned values
+--USE ieee.numeric_std.ALL;
+ 
+ENTITY TB_MAIN_PROCESSOR IS
+END TB_MAIN_PROCESSOR;
+ 
+ARCHITECTURE behavior OF TB_MAIN_PROCESSOR IS 
+ 
+    -- Component Declaration for the Unit Under Test (UUT)
+ 
+    COMPONENT MAIN_PROCESSOR
+    PORT(
+         CLK : IN  std_logic;
+         RESET : IN  std_logic
+        );
+    END COMPONENT;
+    
+
+   --Inputs
+   signal CLK : std_logic := '0';
+   signal RESET : std_logic := '0';
+
+   -- Clock period definitions
+   constant CLK_period : time := 10 ns;
+ 
+BEGIN
+ 
+	-- Instantiate the Unit Under Test (UUT)
+   uut: MAIN_PROCESSOR PORT MAP (
+          CLK => CLK,
+          RESET => RESET
+        );
+
+   -- Clock process definitions
+   CLK_process :process
+   begin
+		CLK <= '0';
+		wait for CLK_period/2;
+		CLK <= '1';
+		wait for CLK_period/2;
+   end process;
+ 
+
+   -- Stimulus process
+   stim_proc: process
+   begin		
+		RESET <= '1';
+      wait for 10 ns;
+		RESET <= '0';
+		WAIT;
+   end process;
+
+END;
diff --git a/ULA.vhd b/ULA.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..bc0ccea24827d0a8d7fd7d5602331461ea552050
--- /dev/null
+++ b/ULA.vhd
@@ -0,0 +1,69 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	18/06/2015 - 20:12
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+USE IEEE.STD_LOGIC_ARITH.ALL;
+USE IEEE.STD_LOGIC_SIGNED.ALL;
+
+ENTITY ULA IS
+	PORT(
+			IN_A : 				IN  	STD_LOGIC_VECTOR (31 downto 0);				--RS
+			IN_B : 				IN  	STD_LOGIC_VECTOR (31 downto 0);				--RT
+			IN_C : 				IN 	STD_LOGIC_VECTOR (2 downto 0);
+         OUT_A :		 		OUT  	STD_LOGIC_VECTOR (31 downto 0);
+			ZERO : 				OUT  	STD_LOGIC	
+	);
+	
+END ULA;
+
+ARCHITECTURE ARC_ULA OF ULA IS
+	SIGNAL DATA_RS :				STD_LOGIC_VECTOR(31 DOWNTO 0);
+	SIGNAL DATA_RT :				STD_LOGIC_VECTOR(31 DOWNTO 0);
+	SIGNAL ULA_CTRL :				STD_LOGIC_VECTOR (2 downto 0);
+	SIGNAL DATA_ALU_RESULT :	STD_LOGIC_VECTOR(31 DOWNTO 0);
+	
+BEGIN
+
+	DATA_RS <= IN_A;
+	DATA_RT <= IN_B;
+	ULA_CTRL <= IN_C;
+				  
+	ZERO <= '1' WHEN (DATA_ALU_RESULT = X"00000000") else '0';
+	
+	--PARA A INSTRUO SLT, PEGA O SINAL DO RESULTADO DA SUBTRAO E ADICIONA AO FINAL DO VETOR
+	OUT_A <= (X"0000000" & "000" & DATA_ALU_RESULT(31)) WHEN ULA_CTRL = "111" ELSE
+						DATA_ALU_RESULT;
+						
+	PROCESS(ULA_CTRL, DATA_RS, DATA_RT)
+	BEGIN
+		CASE ULA_CTRL IS
+			WHEN "000" => DATA_ALU_RESULT <= DATA_RS AND DATA_RT;			--AND
+			WHEN "001" => DATA_ALU_RESULT <= DATA_RS OR DATA_RT;			--OR
+			WHEN "010" => DATA_ALU_RESULT <= DATA_RS + DATA_RT;				--ADD
+			WHEN "110" => DATA_ALU_RESULT <= DATA_RS - DATA_RT;				--SUB
+			WHEN "111" => DATA_ALU_RESULT <= DATA_RS - DATA_RT;				--SLT			
+			WHEN OTHERS => DATA_ALU_RESULT <= X"00000000";
+		END CASE;
+	END PROCESS;
+
+END ARC_ULA;
+
+
diff --git a/ULA_CTRL.vhd b/ULA_CTRL.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..bc9c3c852be9247aa4ff723924b3b49d104d1a94
--- /dev/null
+++ b/ULA_CTRL.vhd
@@ -0,0 +1,42 @@
+-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+--  Complete implementation of Patterson and Hennessy single cycle MIPS processor
+--  Copyright (C) 2015  Darci Luiz Tomasi Junior
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, version 3.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+--  Engineer: 	Darci Luiz Tomasi Junior
+--	 E-mail: 	dltj007@gmail.com
+--  Date :    	24/06/2015 - 20:23
+-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.ALL;
+
+ENTITY ULA_CTRL IS
+    PORT ( 
+				ALUOp : 			IN  STD_LOGIC_VECTOR (1 DOWNTO 0);
+				IN_A : 			IN  STD_LOGIC_VECTOR (5 DOWNTO 0);
+				OUT_A : 			OUT  STD_LOGIC_VECTOR (2 DOWNTO 0)
+			);
+END ULA_CTRL;
+
+ARCHITECTURE ARC_ULA_CTRL of ULA_CTRL IS	
+
+BEGIN
+	
+	--Conforme Apndix D do livro texto
+	OUT_A(2) <= ALUOp(0) OR (ALUOp(1) AND IN_A(1));
+	OUT_A(1) <= (NOT ALUOp(1)) OR (NOT IN_A(2));
+	OUT_A(0) <= (ALUOp(1) AND IN_A(0)) OR (ALUOp(1) AND IN_A(3));
+
+END ARC_ULA_CTRL;
+