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

Subversion Repositories modbus

[/] [modbus/] [trunk/] [enlace/] [contro_ram.vhd] - Rev 3

Compare with Previous | Blame | View Log

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
 
--  Uncomment the following lines to use the declarations that are
--  provided for instantiating Xilinx primitive components.
--library UNISIM;
--use UNISIM.VComponents.all;
 
entity contro_ram is
	generic(
		addr_bits : integer := 8); -- 2^addr_bits = numero bits de direccionamiento
  	port(
--entradas y salidas de la RAM
		clk			:in std_logic;
		reset		:in std_logic;
		Eram 		:out std_logic;
		Eram_write 	:out std_logic;
		ram_addr 		:out std_logic_vector(addr_bits-1 downto 0);
		data_in_ram 	:out std_logic_vector(7 downto 0);
		data_out_ram	:in std_logic_vector(7 downto 0);
--entradas y salidas del pico blaze
	 	Eram_picoB	:in std_logic;
		WEram_picoB	:in std_logic;
		addr_picoB	:in std_logic_vector(addr_bits-1 downto 0);
		data_in_ram_picoB:in std_logic_vector(7 downto 0);
		data_out_ram_picoB:out std_logic_vector(7 downto 0);
--entradas y salidas del componente detector
		Eram_det		:in std_logic;
		Eram_write_det	:in std_logic;
		ram_addr_det	:in std_logic_vector(addr_bits-1 downto 0);	
		data_in_ram_det:in std_logic_vector(7 downto 0);
--entradas y salidas del componente generador trama
          E_ram_gen		:in std_logic;
		WE_ram_gen	:in std_logic;
		addr_ram_gen	:in std_logic_vector(addr_bits-1 downto 0);	
		data_out_ram_gen:out std_logic_vector(7 downto 0)
		);		
end contro_ram;
 
architecture Behavioral of contro_ram is
 
--signal Senable_ram : std_logic_vector (2 downto 0):="000";
begin
 
--Senable_ram <= Eram_det & E_ram_gen & Eram_picoB;
 
enable_ram: process(clk, Eram_det,E_ram_gen,Eram_picoB)
variable Venable_ram : std_logic_vector (2 downto 0):="000";
begin
Venable_ram := Eram_det & E_ram_gen & Eram_picoB;
if clk'event and clk = '1' then
	case (Venable_ram) is 
--	case (Senable_ram) is 
	 when "001" =>
	 	Eram 		<= Eram_picoB;
		Eram_write 	<= WEram_picoB;
		ram_addr 		<= addr_picoB;
		data_in_ram 	<= data_in_ram_picoB;
		data_out_ram_picoB <= data_out_ram;	
    when "010" =>
      Eram 		<= E_ram_gen;
		Eram_write 	<= WE_ram_gen;
		ram_addr 	<= addr_ram_gen;
		data_in_ram 	<= (others=>'0');
		data_out_ram_gen <= data_out_ram;   
	 when "100" =>
      Eram 		<= Eram_det;
		Eram_write 	<= Eram_write_det;
		ram_addr 	<= ram_addr_det;
		data_in_ram 	<= data_in_ram_det;
    when others =>
     	Eram 		<= '0';
		Eram_write	<= '0';
		ram_addr 	<= (others=>'0');
		data_in_ram 	<= (others=>'0');
    end case;
end if;
end process;
 
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.