LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Sponsors
  • Mirrors
  • Logos
  • Contact us
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Cvs-checkins > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: cvs at opencores.org<cvs@o...>
    Date: Thu Nov 24 21:50:40 CET 2005
    Subject: [cvs-checkins] MODIFIED: jop ...
    Top
    Date: 00/05/11 24:21:50

    Modified: jop/vhdl/top jop_xs3.vhd
    Log:
    Use mem_sc and sc_sram32 with block cache. No more Spartan

    specific main memory module.


    Revision Changes Path
    1.6 jop/vhdl/top/jop_xs3.vhd

    http://www.opencores.org/cvsweb.shtml/jop/vhdl/top/jop_xs3.vhd.diff?r1=1.5&r2=1.6

    (In the diff below, changes in quantity of whitespace are not shown.)

    Index: jop_xs3.vhd
    ===================================================================
    RCS file: /cvsroot/martin/jop/vhdl/top/jop_xs3.vhd,v
    retrieving revision 1.5
    retrieving revision 1.6
    diff -u -b -r1.5 -r1.6
    --- jop_xs3.vhd 15 Aug 2005 14:50:42 -0000 1.5
    +++ jop_xs3.vhd 24 Nov 2005 20:50:39 -0000 1.6
    @@ -24,6 +24,8 @@
    -- 2004-10-08 mul operands from a and b, single instruction
    -- 2005-06-09 added the bsy routing through extension
    -- 2005-08-15 sp_ov can be used to show a stoack overflow on the wd pin
    +-- 2005-11-24 use mem_sc for the memory interface and xs3_jbc for the
    +-- bc cache. Now a real block cache (+40% performance with KFL)
    --
    --

    @@ -38,7 +40,9 @@
    clk_freq : integer := 50000000; -- 50 MHz clock frequency
    exta_width : integer := 3; -- address bits of internal io
    ram_cnt : integer := 3; -- clock cycles for external ram
    - jpc_width : integer := 10 -- address bits of java byte code pc
    + rom_cnt : integer := 15; -- not used for S3K
    + jpc_width : integer := 11; -- address bits of java byte code pc
    + block_bits : integer := 4 -- 2*block_bits is number of cache blocks
    );

    port (
    @@ -149,49 +153,6 @@
    );
    end component;

    -component mem_xs3 is
    -generic (jpc_width : integer; ram_cnt : integer);
    -port (
    -
    --- jop interface
    -
    - clk, reset : in std_logic;
    -
    - din : in std_logic_vector(31 downto 0);
    -
    - mem_rd : in std_logic;
    - mem_wr : in std_logic;
    - mem_addr_wr : in std_logic;
    - mem_bc_rd : in std_logic;
    - dout : out std_logic_vector(31 downto 0);
    - bcstart : out std_logic_vector(31 downto 0); -- start of method in bc cache
    -
    - bsy : out std_logic;
    -
    --- jbc connections
    -
    - jbc_addr : in std_logic_vector(jpc_width-1 downto 0);
    - jbc_data : out std_logic_vector(7 downto 0);
    -
    ---
    --- two ram banks
    ---
    - ram_addr : out std_logic_vector(17 downto 0);
    - ram_nwe : out std_logic;
    - ram_noe : out std_logic;
    -
    - rama_d : inout std_logic_vector(15 downto 0);
    - rama_ncs : out std_logic;
    - rama_nlb : out std_logic;
    - rama_nub : out std_logic;
    - ramb_d : inout std_logic_vector(15 downto 0);
    - ramb_ncs : out std_logic;
    - ramb_nlb : out std_logic;
    - ramb_nub : out std_logic
    -
    -);
    -end component;
    -
    component io is
    generic (clk_freq : integer);
    port (
    @@ -257,6 +218,19 @@
    signal jbc_addr : std_logic_vector(jpc_width-1 downto 0);
    signal jbc_data : std_logic_vector(7 downto 0);

    + signal sc_addr : std_logic_vector(17 downto 0);
    + signal sc_wr_data : std_logic_vector(31 downto 0);
    + signal sc_rd, sc_wr : std_logic;
    + signal sc_rd_data : std_logic_vector(31 downto 0);
    + signal sc_bsy_cnt : unsigned(1 downto 0); + +-- memory interface + + signal ram_dout : std_logic_vector(31 downto 0); + signal ram_din : std_logic_vector(31 downto 0); + signal ram_dout_en : std_logic; + signal ram_ncs : std_logic; + signal io_rd : std_logic; signal io_wr : std_logic; signal io_addr_wr : std_logic; @@ -321,17 +295,99 @@ io_rd, io_wr, io_addr_wr, io_dout ); - cmp_mem: mem_xs3 generic map (jpc_width, ram_cnt) - port map (clk_int, int_res, stack_tos, - mem_rd, mem_wr, mem_addr_wr, mem_bc_rd, - mem_dout, mem_bcstart, - mem_bsy, - jbc_addr, jbc_data, - ram_addr, ram_nwe, ram_noe, - rama_d, rama_ncs, rama_nlb, rama_nub, - ramb_d, ramb_ncs, ramb_nlb, ramb_nub + cmp_mem: entity work.mem_sc + generic map ( + jpc_width => jpc_width, + block_bits => block_bits, + addr_bits => 18 + ) + port map ( + clk => clk_int, + reset => int_res, + din => stack_tos, + + mem_rd => mem_rd, + mem_wr => mem_wr, + mem_addr_wr => mem_addr_wr, + mem_bc_rd => mem_bc_rd, + dout => mem_dout, + bcstart => mem_bcstart, + bsy => mem_bsy, + + jbc_addr => jbc_addr, + jbc_data => jbc_data, + + addr => sc_addr, + wr_data => sc_wr_data, + rd => sc_rd, + wr => sc_wr, + rd_data => sc_rd_data, + bsy_cnt => sc_bsy_cnt + ); + + cmp_scm: entity work.sc_mem_if + generic map ( + ram_ws => ram_cnt-1, + rom_cnt => rom_cnt, + addr_bits => 18 + ) + port map ( + clk => clk_int, + reset => int_res, + + addr => sc_addr, + wr_data => sc_wr_data, + rd => sc_rd, + wr => sc_wr, + rd_data => sc_rd_data, + bsy_cnt => sc_bsy_cnt, + + ram_addr => ram_addr, + ram_dout => ram_dout, + ram_din => ram_din, + ram_dout_en => ram_dout_en, + ram_ncs => ram_ncs, + ram_noe => ram_noe, + ram_nwe => ram_nwe, + + -- TODO: should be removed when we + -- have two versions of the sc_memory + fl_a => open, + fl_d => open, + fl_ncs => open, + fl_ncsb => open, + fl_noe => open, + fl_nwe => open, + fl_rdy => '1' + ); + process(ram_dout_en, ram_dout) + begin + if ram_dout_en='1' then + rama_d <= ram_dout(15 downto 0); + ramb_d <= ram_dout(31 downto 16); + else + rama_d <= (others => 'Z'); + ramb_d <= (others => 'Z'); + end if; + end process; + + ram_din <= ramb_d & rama_d; + +-- +-- To put this RAM address in an output register +-- we have to make an assignment (FAST_OUTPUT_REGISTER) +-- + rama_ncs <= ram_ncs; + rama_nlb <= '0'; + rama_nub <= '0'; + + ramb_ncs <= ram_ncs; + ramb_nlb <= '0'; + ramb_nub <= '0'; + + cmp_io: io generic map (clk_freq) port map (clk_int, int_res, stack_tos, io_rd, io_wr, io_addr_wr, io_dout,

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.