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

Subversion Repositories mips_enhanced

[/] [mips_enhanced/] [trunk/] [grlib-gpl-1.0.19-b3188/] [designs/] [leon3-xilinx-ml505/] [ahbrom.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dimamali
 
2
----------------------------------------------------------------------------
3
--  This file is a part of the GRLIB VHDL IP LIBRARY
4
--  Copyright (C) 2004 GAISLER RESEARCH
5
--
6
--  This program is free software; you can redistribute it and/or modify
7
--  it under the terms of the GNU General Public License as published by
8
--  the Free Software Foundation; either version 2 of the License, or
9
--  (at your option) any later version.
10
--
11
--  See the file COPYING for the full details of the license.
12
--
13
-----------------------------------------------------------------------------
14
-- Entity:      ahbrom
15
-- File:        ahbrom.vhd
16
-- Author:      Jiri Gaisler - Gaisler Research
17
-- Description: AHB rom. 0/1-waitstate read
18
------------------------------------------------------------------------------
19
library ieee;
20
use ieee.std_logic_1164.all;
21
library grlib;
22
use grlib.amba.all;
23
use grlib.stdlib.all;
24
use grlib.devices.all;
25
 
26
entity ahbrom is
27
  generic (
28
    hindex  : integer := 0;
29
    haddr   : integer := 0;
30
    hmask   : integer := 16#fff#;
31
    pipe    : integer := 0;
32
    tech    : integer := 0;
33
    kbytes  : integer := 1);
34
  port (
35
    rst     : in  std_ulogic;
36
    clk     : in  std_ulogic;
37
    ahbsi   : in  ahb_slv_in_type;
38
    ahbso   : out ahb_slv_out_type
39
  );
40
end;
41
 
42
architecture rtl of ahbrom is
43
constant abits : integer := 9;
44
constant bytes : integer := 272;
45
 
46
constant hconfig : ahb_config_type := (
47
 
48
  4 => ahb_membar(haddr, '1', '1', hmask), others => zero32);
49
 
50
signal romdata : std_logic_vector(31 downto 0);
51
signal addr : std_logic_vector(abits-1 downto 2);
52
signal hsel, hready : std_ulogic;
53
 
54
begin
55
 
56
  ahbso.hresp   <= "00";
57
  ahbso.hsplit  <= (others => '0');
58
  ahbso.hirq    <= (others => '0');
59
  ahbso.hcache  <= '1';
60
  ahbso.hconfig <= hconfig;
61
  ahbso.hindex  <= hindex;
62
 
63
  reg : process (clk)
64
  begin
65
    if rising_edge(clk) then
66
      addr <= ahbsi.haddr(abits-1 downto 2);
67
    end if;
68
  end process;
69
 
70
  p0 : if pipe = 0 generate
71
    ahbso.hrdata  <= romdata;
72
    ahbso.hready  <= '1';
73
  end generate;
74
 
75
  p1 : if pipe = 1 generate
76
    reg2 : process (clk)
77
    begin
78
      if rising_edge(clk) then
79
        hsel <= ahbsi.hsel(hindex) and ahbsi.htrans(1);
80
        hready <= ahbsi.hready;
81
        ahbso.hready <=  (not rst) or (hsel and hready) or
82
          (ahbsi.hsel(hindex) and not ahbsi.htrans(1) and ahbsi.hready);
83
        ahbso.hrdata  <= romdata;
84
      end if;
85
    end process;
86
  end generate;
87
 
88
  comb : process (addr)
89
  begin
90
    case conv_integer(addr) is
91
    when 16#00000# => romdata <= X"81D82000";
92
    when 16#00001# => romdata <= X"03000004";
93
    when 16#00002# => romdata <= X"821060C0";
94
    when 16#00003# => romdata <= X"81884000";
95
    when 16#00004# => romdata <= X"81900000";
96
    when 16#00005# => romdata <= X"81980000";
97
    when 16#00006# => romdata <= X"81800000";
98
    when 16#00007# => romdata <= X"01000000";
99
    when 16#00008# => romdata <= X"03000040";
100
    when 16#00009# => romdata <= X"8210600F";
101
    when 16#0000A# => romdata <= X"C2A00040";
102
    when 16#0000B# => romdata <= X"87444000";
103
    when 16#0000C# => romdata <= X"8608E01F";
104
    when 16#0000D# => romdata <= X"88100000";
105
    when 16#0000E# => romdata <= X"8A100000";
106
    when 16#0000F# => romdata <= X"8C100000";
107
    when 16#00010# => romdata <= X"8E100000";
108
    when 16#00011# => romdata <= X"A0100000";
109
    when 16#00012# => romdata <= X"A2100000";
110
    when 16#00013# => romdata <= X"A4100000";
111
    when 16#00014# => romdata <= X"A6100000";
112
    when 16#00015# => romdata <= X"A8100000";
113
    when 16#00016# => romdata <= X"AA100000";
114
    when 16#00017# => romdata <= X"AC100000";
115
    when 16#00018# => romdata <= X"AE100000";
116
    when 16#00019# => romdata <= X"90100000";
117
    when 16#0001A# => romdata <= X"92100000";
118
    when 16#0001B# => romdata <= X"94100000";
119
    when 16#0001C# => romdata <= X"96100000";
120
    when 16#0001D# => romdata <= X"98100000";
121
    when 16#0001E# => romdata <= X"9A100000";
122
    when 16#0001F# => romdata <= X"9C100000";
123
    when 16#00020# => romdata <= X"9E100000";
124
    when 16#00021# => romdata <= X"86A0E001";
125
    when 16#00022# => romdata <= X"16BFFFEF";
126
    when 16#00023# => romdata <= X"81E00000";
127
    when 16#00024# => romdata <= X"82102002";
128
    when 16#00025# => romdata <= X"81904000";
129
    when 16#00026# => romdata <= X"03000004";
130
    when 16#00027# => romdata <= X"821060E0";
131
    when 16#00028# => romdata <= X"81884000";
132
    when 16#00029# => romdata <= X"01000000";
133
    when 16#0002A# => romdata <= X"01000000";
134
    when 16#0002B# => romdata <= X"01000000";
135
    when 16#0002C# => romdata <= X"87444000";
136
    when 16#0002D# => romdata <= X"8730E01C";
137
    when 16#0002E# => romdata <= X"8688E00F";
138
    when 16#0002F# => romdata <= X"12800006";
139
    when 16#00030# => romdata <= X"033FFC00";
140
    when 16#00031# => romdata <= X"82106100";
141
    when 16#00032# => romdata <= X"0539A81B";
142
    when 16#00033# => romdata <= X"8410A260";
143
    when 16#00034# => romdata <= X"C4204000";
144
    when 16#00035# => romdata <= X"3D1003FF";
145
    when 16#00036# => romdata <= X"BC17A3E0";
146
    when 16#00037# => romdata <= X"9C27A060";
147
    when 16#00038# => romdata <= X"03100000";
148
    when 16#00039# => romdata <= X"81C04000";
149
    when 16#0003A# => romdata <= X"01000000";
150
    when 16#0003B# => romdata <= X"01000000";
151
    when 16#0003C# => romdata <= X"01000000";
152
    when 16#0003D# => romdata <= X"01000000";
153
    when 16#0003E# => romdata <= X"01000000";
154
    when 16#0003F# => romdata <= X"01000000";
155
    when 16#00040# => romdata <= X"00000000";
156
    when 16#00041# => romdata <= X"00000000";
157
    when 16#00042# => romdata <= X"00000000";
158
    when 16#00043# => romdata <= X"00000000";
159
    when 16#00044# => romdata <= X"00000000";
160
    when others => romdata <= (others => '-');
161
    end case;
162
  end process;
163
  -- pragma translate_off
164
  bootmsg : report_version
165
  generic map ("ahbrom" & tost(hindex) &
166
  ": 32-bit AHB ROM Module,  " & tost(bytes/4) & " words, " & tost(abits-2) & " address bits" );
167
  -- pragma translate_on
168
  end;

powered by: WebSVN 2.1.0

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