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

Subversion Repositories mips_enhanced

[/] [mips_enhanced/] [trunk/] [grlib-gpl-1.0.19-b3188/] [lib/] [gaisler/] [leon3/] [grfpwxsh.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dimamali
------------------------------------------------------------------------------
2
--  This file is a part of the GRLIB VHDL IP LIBRARY
3
--  Copyright (C) 2003, Gaisler Research
4
--
5
--  This program is free software; you can redistribute it and/or modify
6
--  it under the terms of the GNU General Public License as published by
7
--  the Free Software Foundation; either version 2 of the License, or
8
--  (at your option) any later version.
9
--
10
--  This program is distributed in the hope that it will be useful,
11
--  but WITHOUT ANY WARRANTY; without even the implied warranty of
12
--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
--  GNU General Public License for more details.
14
--
15
--  You should have received a copy of the GNU General Public License
16
--  along with this program; if not, write to the Free Software
17
--  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
18
-----------------------------------------------------------------------------
19
-- Entity:      grfpwxsh
20
-- File:        grfpwxsh.vhd
21
-- Author:      Edvin Catovic - Gaisler Research
22
-- Description: GRFPU/GRFPC wrapper and FP register file
23
------------------------------------------------------------------------------
24
 
25
library IEEE;
26
use IEEE.std_logic_1164.all;
27
library techmap;
28
use techmap.gencomp.all;
29
library gaisler;
30
use gaisler.leon3.all;
31
 
32
entity grfpwxsh is
33
  generic (tech     : integer range 0 to NTECH := 0;
34
           pclow    : integer range 0 to 2 := 2;
35
           dsu      : integer range 0 to 1 := 0;
36
           disas    : integer range 0 to 2 := 0;
37
           id       : integer range 0 to 7 := 0);
38
  port (
39
    rst    : in  std_ulogic;                    -- Reset
40
    clk    : in  std_ulogic;
41
    holdn  : in  std_ulogic;                    -- pipeline hold
42
    cpi    : in  fpc_in_type;
43
    cpo    : out fpc_out_type;
44
    fpui   : out grfpu_in_type;
45
    fpuo   : in  grfpu_out_type
46
    );
47
end;
48
 
49
architecture rtl of grfpwxsh is
50
 
51
  signal rfi1, rfi2  : fp_rf_in_type;
52
  signal rfo1, rfo2  : fp_rf_out_type;
53
 
54
  component grfpwsh
55
  generic (tech     : integer range 0 to NTECH := 0;
56
           pclow    : integer range 0 to 2 := 2;
57
           dsu      : integer range 0 to 1 := 0;
58
           disas    : integer range 0 to 2 := 0;
59
           id       : integer range 0 to 7 := 0
60
           );
61
  port (
62
    rst    : in  std_ulogic;                    -- Reset
63
    clk    : in  std_ulogic;
64
    holdn  : in  std_ulogic;                    -- pipeline hold
65
    cpi_flush   : in std_ulogic;                          -- pipeline flush
66
    cpi_exack           : in std_ulogic;                          -- FP exception acknowledge
67
    cpi_a_rs1   : in std_logic_vector(4 downto 0);
68
    cpi_d_pc    : in std_logic_vector(31 downto 0);
69
    cpi_d_inst  : in std_logic_vector(31 downto 0);
70
    cpi_d_cnt   : in std_logic_vector(1 downto 0);
71
    cpi_d_trap  : in std_ulogic;
72
    cpi_d_annul : in std_ulogic;
73
    cpi_d_pv    : in std_ulogic;
74
    cpi_a_pc    : in std_logic_vector(31 downto 0);
75
    cpi_a_inst  : in std_logic_vector(31 downto 0);
76
    cpi_a_cnt   : in std_logic_vector(1 downto 0);
77
    cpi_a_trap  : in std_ulogic;
78
    cpi_a_annul : in std_ulogic;
79
    cpi_a_pv    : in std_ulogic;
80
    cpi_e_pc    : in std_logic_vector(31 downto 0);
81
    cpi_e_inst  : in std_logic_vector(31 downto 0);
82
    cpi_e_cnt   : in std_logic_vector(1 downto 0);
83
    cpi_e_trap  : in std_ulogic;
84
    cpi_e_annul : in std_ulogic;
85
    cpi_e_pv    : in std_ulogic;
86
    cpi_m_pc    : in std_logic_vector(31 downto 0);
87
    cpi_m_inst  : in std_logic_vector(31 downto 0);
88
    cpi_m_cnt   : in std_logic_vector(1 downto 0);
89
    cpi_m_trap  : in std_ulogic;
90
    cpi_m_annul : in std_ulogic;
91
    cpi_m_pv    : in std_ulogic;
92
    cpi_x_pc    : in std_logic_vector(31 downto 0);
93
    cpi_x_inst  : in std_logic_vector(31 downto 0);
94
    cpi_x_cnt   : in std_logic_vector(1 downto 0);
95
    cpi_x_trap  : in std_ulogic;
96
    cpi_x_annul : in std_ulogic;
97
    cpi_x_pv    : in std_ulogic;
98
    cpi_lddata        : in std_logic_vector(31 downto 0);     -- load data
99
    cpi_dbg_enable : in std_ulogic;
100
    cpi_dbg_write  : in std_ulogic;
101
    cpi_dbg_fsr    : in std_ulogic;                            -- FSR access
102
    cpi_dbg_addr   : in std_logic_vector(4 downto 0);
103
    cpi_dbg_data   : in std_logic_vector(31 downto 0);
104
 
105
    cpo_data          : out std_logic_vector(31 downto 0); -- store data
106
    cpo_exc             : out std_logic;                         -- FP exception
107
    cpo_cc           : out std_logic_vector(1 downto 0);  -- FP condition codes
108
    cpo_ccv            : out std_ulogic;                         -- FP condition codes valid
109
    cpo_ldlock       : out std_logic;                    -- FP pipeline hold
110
    cpo_holdn         : out std_ulogic;
111
    --cpo_restart      : out std_ulogic;
112
    cpo_dbg_data     : out std_logic_vector(31 downto 0);
113
 
114
    rfi1_rd1addr        : out std_logic_vector(3 downto 0);
115
    rfi1_rd2addr        : out std_logic_vector(3 downto 0);
116
    rfi1_wraddr         : out std_logic_vector(3 downto 0);
117
    rfi1_wrdata         : out std_logic_vector(31 downto 0);
118
    rfi1_ren1        : out std_ulogic;
119
    rfi1_ren2        : out std_ulogic;
120
    rfi1_wren        : out std_ulogic;
121
 
122
    rfi2_rd1addr        : out std_logic_vector(3 downto 0);
123
    rfi2_rd2addr        : out std_logic_vector(3 downto 0);
124
    rfi2_wraddr         : out std_logic_vector(3 downto 0);
125
    rfi2_wrdata         : out std_logic_vector(31 downto 0);
126
    rfi2_ren1        : out std_ulogic;
127
    rfi2_ren2        : out std_ulogic;
128
    rfi2_wren        : out std_ulogic;
129
 
130
    rfo1_data1          : in std_logic_vector(31 downto 0);
131
    rfo1_data2          : in std_logic_vector(31 downto 0);
132
    rfo2_data1          : in std_logic_vector(31 downto 0);
133
    rfo2_data2          : in std_logic_vector(31 downto 0);
134
 
135
    start       : out std_logic;
136
    nonstd      : out std_logic;
137
    flop        : out std_logic_vector(8 downto 0);
138
    op1         : out std_logic_vector(63 downto 0);
139
    op2         : out std_logic_vector(63 downto 0);
140
    opid        : out std_logic_vector(7 downto 0);
141
    flush       : out std_logic;
142
    flushid     : out std_logic_vector(5 downto 0);
143
    rndmode     : out std_logic_vector(1 downto 0);
144
    req         : out std_logic;
145
    res         : in std_logic_vector(63 downto 0);
146
    exc         : in std_logic_vector(5 downto 0);
147
    allow       : in std_logic_vector(2 downto 0);
148
    rdy         : in std_logic;
149
    cc          : in std_logic_vector(1 downto 0);
150
    idout       : in std_logic_vector(7 downto 0)
151
    );
152
  end component;
153
 
154
begin
155
 
156
   x0 : grfpwsh generic map (tech, pclow, dsu, disas, id)
157
     port map (rst,
158
               clk,
159
               holdn,
160
               cpi.flush    ,
161
               cpi.exack    ,
162
               cpi.a_rs1    ,
163
               cpi.d.pc     ,
164
               cpi.d.inst   ,
165
               cpi.d.cnt    ,
166
               cpi.d.trap   ,
167
               cpi.d.annul  ,
168
               cpi.d.pv     ,
169
               cpi.a.pc     ,
170
               cpi.a.inst   ,
171
               cpi.a.cnt    ,
172
               cpi.a.trap   ,
173
               cpi.a.annul  ,
174
               cpi.a.pv     ,
175
               cpi.e.pc     ,
176
               cpi.e.inst   ,
177
               cpi.e.cnt    ,
178
               cpi.e.trap   ,
179
               cpi.e.annul  ,
180
               cpi.e.pv     ,
181
               cpi.m.pc     ,
182
               cpi.m.inst   ,
183
               cpi.m.cnt    ,
184
               cpi.m.trap   ,
185
               cpi.m.annul  ,
186
               cpi.m.pv     ,
187
               cpi.x.pc     ,
188
               cpi.x.inst   ,
189
               cpi.x.cnt    ,
190
               cpi.x.trap   ,
191
               cpi.x.annul  ,
192
               cpi.x.pv     ,
193
               cpi.lddata   ,
194
               cpi.dbg.enable  ,
195
               cpi.dbg.write   ,
196
               cpi.dbg.fsr     ,
197
               cpi.dbg.addr    ,
198
               cpi.dbg.data    ,
199
 
200
               cpo.data        ,
201
               cpo.exc              ,
202
               cpo.cc          ,
203
               cpo.ccv              ,
204
               cpo.ldlock      ,
205
               cpo.holdn       ,
206
               cpo.dbg.data    ,
207
 
208
               rfi1.rd1addr    ,
209
               rfi1.rd2addr     ,
210
               rfi1.wraddr      ,
211
               rfi1.wrdata      ,
212
               rfi1.ren1        ,
213
               rfi1.ren2        ,
214
               rfi1.wren        ,
215
 
216
 
217
               rfi2.rd1addr     ,
218
               rfi2.rd2addr     ,
219
               rfi2.wraddr       ,
220
               rfi2.wrdata       ,
221
               rfi2.ren1         ,
222
               rfi2.ren2         ,
223
               rfi2.wren         ,
224
 
225
               rfo1.data1        ,
226
               rfo1.data2        ,
227
               rfo2.data1        ,
228
               rfo2.data2       ,
229
 
230
               fpui.start     ,
231
               fpui.nonstd    ,
232
               fpui.flop      ,
233
               fpui.op1       ,
234
               fpui.op2       ,
235
               fpui.opid      ,
236
               fpui.flush     ,
237
               fpui.flushid   ,
238
               fpui.rndmode   ,
239
               fpui.req       ,
240
               fpuo.res       ,
241
               fpuo.exc       ,
242
               fpuo.allow     ,
243
               fpuo.rdy       ,
244
               fpuo.cc        ,
245
               fpuo.idout
246
               );
247
 
248
   rf1 : regfile_3p generic map (tech, 4, 32, 1, 16)
249
     port map (clk, rfi1.wraddr, rfi1.wrdata, rfi1.wren, clk, rfi1.rd1addr, rfi1.ren1, rfo1.data1,
250
               rfi1.rd2addr, rfi1.ren2, rfo1.data2);
251
 
252
   rf2 : regfile_3p generic map (tech, 4, 32, 1, 16)
253
     port map (clk, rfi2.wraddr, rfi2.wrdata, rfi2.wren, clk, rfi2.rd1addr, rfi2.ren1, rfo2.data1,
254
               rfi2.rd2addr, rfi2.ren2, rfo2.data2);
255
 
256
end;

powered by: WebSVN 2.1.0

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