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

Subversion Repositories funbase_ip_library

[/] [funbase_ip_library/] [trunk/] [TUT/] [ip.hwp.communication/] [ase_mesh1/] [1.0/] [vhd/] [ase_mesh1_top4.vhd] - Rev 145

Compare with Previous | Blame | View Log

-------------------------------------------------------------------------------
-- Title      : 4 agent top level for ase_mesh1
-- Project    : 
-------------------------------------------------------------------------------
-- File       : ase_mesh1_top4.vhd
-- Author     : Lasse Lehtonen
-- Company    : 
-- Created    : 2011-11-09
-- Last update: 2011-12-02
-- Platform   : 
-- Standard   : VHDL'87
-------------------------------------------------------------------------------
-- Description: Creates a fixed size mesh (incl. packetizers).
-------------------------------------------------------------------------------
-- Copyright (c) 2011 
-------------------------------------------------------------------------------
-- Revisions  :
-- Date        Version  Author  Description
-- 2011-11-09  1.0      lehton87        Created
-------------------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
 
 
entity ase_mesh1_top4 is
 
  port (
    clk        : in  std_logic;
    rst_n      : in  std_logic;
    cmd0_in    : in  std_logic_vector(1 downto 0);
    data0_in   : in  std_logic_vector(31 downto 0);
    stall0_out : out std_logic;
    cmd0_out   : out std_logic_vector(1 downto 0);
    data0_out  : out std_logic_vector(31 downto 0);
    stall0_in  : in  std_logic;
 
    cmd1_in    : in  std_logic_vector(1 downto 0);
    data1_in   : in  std_logic_vector(31 downto 0);
    stall1_out : out std_logic;
    cmd1_out   : out std_logic_vector(1 downto 0);
    data1_out  : out std_logic_vector(31 downto 0);
    stall1_in  : in  std_logic;
 
    cmd2_in    : in  std_logic_vector(1 downto 0);
    data2_in   : in  std_logic_vector(31 downto 0);
    stall2_out : out std_logic;
    cmd2_out   : out std_logic_vector(1 downto 0);
    data2_out  : out std_logic_vector(31 downto 0);
    stall2_in  : in  std_logic;
 
    cmd3_in    : in  std_logic_vector(1 downto 0);
    data3_in   : in  std_logic_vector(31 downto 0);
    stall3_out : out std_logic;
    cmd3_out   : out std_logic_vector(1 downto 0);
    data3_out  : out std_logic_vector(31 downto 0);
    stall3_in  : in  std_logic);
 
end ase_mesh1_top4;
 
architecture structural of ase_mesh1_top4 is
 
  -- Intermediate wide signals that combine indifivudal terminals so that they
  -- can be connected to mesh
  signal cmd_i   : std_logic_vector(4*2-1 downto 0);
  signal data_i  : std_logic_vector(4*32-1 downto 0);
  signal stall_i : std_logic_vector(3 downto 0);
 
  signal cmd_o   : std_logic_vector(4*2-1 downto 0);
  signal data_o  : std_logic_vector(4*32-1 downto 0);
  signal stall_o : std_logic_vector(3 downto 0);
 
begin  -- structural
 
  -- Connect terminals to internal signals, and vice versa
  cmd_i((0+1)*2-1 downto 0*2)    <= cmd0_in;
  data_i((0+1)*32-1 downto 0*32) <= data0_in;
  stall_i(0)                     <= stall0_in;
  cmd0_out                       <= cmd_o((0+1)*2-1 downto 0*2);
  data0_out                      <= data_o((0+1)*32-1 downto 0*32);
  stall0_out                     <= stall_o(0);
 
  cmd_i((1+1)*2-1 downto 1*2)    <= cmd1_in;
  data_i((1+1)*32-1 downto 1*32) <= data1_in;
  stall_i(1)                     <= stall1_in;
  cmd1_out                       <= cmd_o((1+1)*2-1 downto 1*2);
  data1_out                      <= data_o((1+1)*32-1 downto 1*32);
  stall1_out                     <= stall_o(1);
 
  cmd_i((2+1)*2-1 downto 2*2)    <= cmd2_in;
  data_i((2+1)*32-1 downto 2*32) <= data2_in;
  stall_i(2)                     <= stall2_in;
  cmd2_out                       <= cmd_o((2+1)*2-1 downto 2*2);
  data2_out                      <= data_o((2+1)*32-1 downto 2*32);
  stall2_out                     <= stall_o(2);
 
  cmd_i((3+1)*2-1 downto 3*2)    <= cmd3_in;
  data_i((3+1)*32-1 downto 3*32) <= data3_in;
  stall_i(3)                     <= stall3_in;
  cmd3_out                       <= cmd_o((3+1)*2-1 downto 3*2);
  data3_out                      <= data_o((3+1)*32-1 downto 3*32);
  stall3_out                     <= stall_o(3);
 
  -- Instantiate mesh with fixed parameters
  ase_mesh1_pkt_codec_1 : entity work.ase_mesh1_pkt_codec
    generic map (
      data_width_g   => 32,
      cmd_width_g    => 2,
      agents_g       => 4,
      cols_g         => 2,
      rows_g         => 2,
      agent_ports_g  => 1,
      addr_flit_en_g => 0,
      address_mode_g => 1,
      clock_mode_g   => 0,
      rip_addr_g     => 0,
      fifo_depth_g   => 0
      )
    port map (
      clk_ip    => clk,
      clk_net   => clk,
      rst_n     => rst_n,
 
      cmd_in    => cmd_i,
      data_in   => data_i,
      stall_out => stall_o,
 
      cmd_out   => cmd_o,
      data_out  => data_o,
      stall_in  => stall_i
      ); 
 
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.