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

Subversion Repositories the_wizardry_project

[/] [the_wizardry_project/] [trunk/] [Wizardry/] [VHDL/] [Wizardry Top Level/] [Address Generation/] [JOP/] [sc_wizardry_processes.vhd] - Rev 22

Compare with Previous | Blame | View Log

----------------------------------------------------------------------------------
-- Company: 
-- Engineer: 
-- 
-- Create Date:    10:07:42 01/30/2009 
-- Design Name: 
-- Module Name:    sc_wizardry_processes - Behavioral 
-- Project Name: 
-- Target Devices: 
-- Tool versions: 
-- Description: 
--
-- Dependencies: 
--
-- Revision: 
-- Revision 0.01 - File Created
-- Additional Comments: 
--
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
 
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
 
entity sc_wizardry_processes is
   port(  clk : in std_logic;
			 reset : in std_logic;
			 rd : in std_logic;
			 wr : in std_logic;
			 ack_i : in std_Logic;
			 dat_i : in std_logic_Vector(31 downto 0);
			 address : in std_logic_Vector(3 downto 0);
			 wr_data : in std_Logic_Vector(31 downto 0);
			 rd_data : out std_logic_Vector(31 downto 0);
			 store_address : in std_Logic;
			 store_data : in std_Logic;
			 store_config_data : in  STD_LOGIC;
			 set_sc_data : in std_Logic;
			 adr_o_reg : out std_logic_Vector(21 downto 0);
			 dat_o_reg : out std_logic_Vector(31 downto 0);
--			 config_trigger_reg : out std_logic_vector(7 downto 0);
			 eRCP_trigger_reg : out std_logic;
			 address_reg : out std_logic_vector(3 downto 0));
end sc_wizardry_processes;
 
architecture Behavioral of sc_wizardry_processes is
 
signal adr_o_reg_s : std_logic_Vector(21 downto 0);
signal dat_o_reg_s : std_logic_vector(31 downto 0);
signal wr_data_reg : std_logic_vector(31 downto 0);
signal address_reg_s : std_logic_vector(3 downto 0);
signal rd_data_reg : std_logic_vector(31 downto 0);
signal dat_i_reg : std_logic_vector(31 downto 0);
signal config_trigger_reg_s : std_logic_vector(7 downto 0);
signal eRCP_trigger_reg_s,eRCP_trigger_reg_s_1,eRCP_trigger_reg_s_2,
		eRCP_trigger_reg_s_3: std_logic; --_vector(7 downto 0);
 
begin
 
process(clk,reset,set_sc_data)
begin
	if reset = '1' then
		rd_data_reg <= X"075bcd15";--(others => '0');
	elsif rising_Edge(clk) then
		if set_sc_data = '1' then
			rd_data_reg <= dat_i_reg;
		else
			rd_data_reg <= rd_data_reg;
		end if;
	end if;			
end process;
rd_data <= rd_data_reg;
 
process(clk,reset,ack_i)
begin
	if reset = '1' then
		dat_i_reg <= X"075BCD14";--(others => '0');
	elsif rising_Edge(clk) then
		if ack_i = '1' then
			dat_i_reg <= dat_i;
		else
			dat_i_reg <= dat_i_reg;
		end if;
	end if;
end process;
 
process(clk,reset,wr)
begin
	if reset = '1' then
		wr_data_reg <= (others => '0');
	elsif rising_edge(clk) then
		if wr = '1' then
			wr_data_reg <= wr_data;
		else
			wr_data_reg <= wr_data_reg;
		end if;
	end if;
end process;
 
process(clk,reset,wr,rd,address)
begin
	if reset = '1' then
		address_reg_s <= (others => '0');
	elsif rising_Edge(clk) then
		if wr = '1' or rd = '1' then
			address_reg_s <= address; --(1 downto 0);
		else
			address_reg_s <= address_reg_s;
		end if;
	end if;
end process;
address_reg <= address_reg_s;
process(clk,reset,store_data)
begin
	if reset = '1' then
		dat_o_reg_s <= (others => '0');
	elsif rising_edge(clk) then
		if store_data = '1' then
			dat_o_reg_s <= wr_data_reg;
		else
			dat_o_reg_s <= dat_o_reg_s;
		end if;
	end if;
end process;
dat_o_reg <= dat_o_reg_s;
process(clk,reset,store_address)
begin
	if reset = '1' then
		adr_o_reg_s <= (others => '0');
	elsif rising_edge(clk) then
		if store_address = '1' then
			adr_o_reg_s <= wr_data_reg(21 downto 0);
		else
			adr_o_reg_s <= adr_o_reg_s;
		end if;
	end if;
end process;
adr_o_reg <= adr_o_reg_s;
process(clk,reset,store_config_data,eRCP_trigger_reg_s_1,eRCP_trigger_reg_s_2,
			eRCP_trigger_reg_s_3)
begin
	if reset = '1' then
--		config_trigger_reg_s <= (others => '0');
		eRCP_trigger_reg_s_1 <= '1';
		eRCP_trigger_reg_s_2 <= '0';
		eRCP_trigger_reg_s_3 <= '0';
		eRCP_trigger_reg_s <= '0';
	elsif rising_edge(clk) then
		if store_config_data = '1' then
			eRCP_trigger_reg_s_1 <= '1';
			eRCP_trigger_reg_s_2 <= '0';
			eRCP_trigger_reg_s_3 <= '0';
			eRCP_trigger_reg_s <= '0';
		else
			eRCP_trigger_reg_s_1 <= '0';
			eRCP_trigger_reg_s_2 <= eRCP_trigger_reg_s_1;
			eRCP_trigger_reg_s_3 <= eRCP_trigger_reg_s_2;
			eRCP_trigger_reg_s <= eRCP_trigger_reg_s_3;
 
--			eRCP_trigger_reg_s <= eRCP_trigger_reg_s;
--			eRCP_trigger_reg_s <= eRCP_trigger_reg_s;
		end if;
	end if;
end process;
eRCP_trigger_reg <= eRCP_trigger_reg_s;
--process(clk,reset,store_config_data)
--begin
--	if reset = '1' then
--		config_trigger_reg_s <= (others => '0');
--	elsif rising_edge(clk) then
--		if store_config_data = '1' then
--			config_trigger_reg_s <= wr_data_reg(7 downto 0);
--		else
--			config_trigger_reg_s <= config_trigger_reg_s;
--		end if;
--	end if;
--end process;
--config_trigger_reg <= config_trigger_reg_s;
end Behavioral;
 
 

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.