OpenCores
URL https://opencores.org/ocsvn/ecpu_alu/ecpu_alu/trunk

Subversion Repositories ecpu_alu

[/] [ecpu_alu/] [trunk/] [alu/] [rtl/] [vhdl/] [alu.vhd] - Rev 5

Compare with Previous | Blame | View Log

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Module   - Introduction to VLSI Design [03ELD005]
-- Lecturer - Dr V. M. Dwyer
-- Course   - MEng Electronic and Electrical Engineering
-- Year     - Part D
-- Student  - Sahrfili Leonous Matturi A028459 [elslm]
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Final coursework 2004
-- 
-- Details: 	Design and Layout of an ALU
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
 
--	Description 	: 	ALU controller
--  Entity			: 	alu_controller
--	Architecture	: 	behavioural
--  Created on  	: 	07/03/2004
 
library	ieee;
 
use ieee.std_logic_1164.all;
use	ieee.std_logic_unsigned.all;
 
entity alu is
	port	(
			A			: in	std_logic_vector(7 downto 0);
			B			: in 	std_logic_vector(7 downto 0);
			S			: in 	std_logic_vector(3 downto 0);
			Y			: out	std_logic_vector(7 downto 0);
			CLR 		: in	std_logic					;
			CLK			: in	std_logic					;
			C			: out	std_logic					;
			V			: out	std_logic					;
			Z			: out	std_logic
			);
end alu;
 
architecture structural of alu is
component alu_controller
	port	(
			add_AB		: out	std_logic;
			sub_AB		: out	std_logic;
			inc_A		: out	std_logic;
			inc_B		: out	std_logic;
			dec_A		: out	std_logic;
			dec_B		: out	std_logic;
			cmp_AB		: out	std_logic;
			and_AB		: out	std_logic;
			or_AB		: out	std_logic;
			xor_AB		: out	std_logic;
			cpl_B		: out	std_logic;
			cpl_A		: out	std_logic;
			sl_AB		: out	std_logic;
			sr_AB		: out	std_logic;
			clr			: out	std_logic;
 
			clr_Z		: out	std_logic;
			clr_V		: out	std_logic;
			clr_C		: out	std_logic;
 
			load_inputs	: out	std_logic;
			load_outputs: out	std_logic;
 
 
			opcode		: in	std_logic_vector(3 downto 0);			
			reset		: in	std_logic;
			clk			: in	std_logic
			);
end component;
component alu_datapath
	port	(
			A			: in	std_logic_vector(7 downto 0);
			B			: in	std_logic_vector(7 downto 0);
			Y			: out	std_logic_vector(7 downto 0);
 
			add_AB		: in	std_logic;
			sub_AB		: in	std_logic;
			inc_A		: in	std_logic;
			inc_B		: in	std_logic;
			dec_A		: in	std_logic;
			dec_B		: in	std_logic;
			cmp_AB		: in	std_logic;
			and_AB		: in	std_logic;
			or_AB		: in	std_logic;
			xor_AB		: in	std_logic;
			cpl_B		: in	std_logic;
			cpl_A		: in	std_logic;
			sl_AB		: in	std_logic;
			sr_AB		: in	std_logic;
			clr			: in	std_logic;
 
			clr_Z		: in	std_logic;
			clr_V		: in	std_logic;
			clr_C		: in	std_logic;
 
			C			: out	std_logic;
			V			: out	std_logic;
			Z			: out	std_logic;
 
			load_inputs	: in	std_logic;
			load_outputs: in	std_logic;
 
			reset		: in	std_logic;
 
			clk			: in	std_logic
			);
end component;
 
signal					add_AB		: 	std_logic					;
signal					sub_AB		: 	std_logic					;
signal					inc_A		: 	std_logic					;
signal					inc_B		: 	std_logic					;
signal					dec_A		: 	std_logic					;
signal					dec_B		: 	std_logic					;
signal					cmp_AB		: 	std_logic					;
signal					and_AB		: 	std_logic					;
signal					or_AB		: 	std_logic					;
signal					xor_AB		: 	std_logic					;
signal					cpl_B		: 	std_logic					;
signal					cpl_A		: 	std_logic					;
signal					sl_AB		: 	std_logic					;
signal					sr_AB		: 	std_logic					;
signal					clr_ALL		: 	std_logic					;
 
signal					clr_Z		: 	std_logic					;
signal					clr_V		: 	std_logic					;
signal					clr_C		: 	std_logic					;
 
signal					reset		: 	std_logic					;
signal					load_inputs	: 	std_logic					;
signal					load_outputs:	std_logic					;
 
begin
	-- clear is the same as reset
	reset	<=	CLR;
 
	controller	:	alu_controller
		port map	(
					add_AB		,
					sub_AB		,
					inc_A		,
					inc_B		,
					dec_A		,
					dec_B		,
					cmp_AB		,
					and_AB		,
					or_AB		,
					xor_AB		,
					cpl_B		,
					cpl_A		,
					sl_AB		,
					sr_AB		,
					clr_ALL		,
 
					clr_Z		,
					clr_V		,
					clr_C		,
 
					load_inputs	,
					load_outputs,
 
					S			,
 
					reset		,
					clk
					);
	datapath	:	alu_datapath
		port map	(
					A			,
					B			,
					Y			,
 
					add_AB		,
					sub_AB		,
					inc_A		,
					inc_B		,
					dec_A		,
					dec_B		,
					cmp_AB		,
					and_AB		,
					or_AB		,
					xor_AB		,
					cpl_B		,
					cpl_A		,
					sl_AB		,
					sr_AB		,
					clr_ALL		,
 
					clr_Z		,
					clr_V		,
					clr_C		,
 
					C			,
					V			,
					Z			,
 
					load_inputs	,
					load_outputs,
 
					reset,
 
					clk
					);	
end structural;
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.