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-altera-ep3c25/] [testbench.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
--  Altera Cyclone-III LEON3 Demonstration design test bench
20
--  Copyright (C) 2007 Jiri Gaisler, Gaisler Research
21
------------------------------------------------------------------------------
22
 
23
library ieee;
24
use ieee.std_logic_1164.all;
25
library gaisler;
26
use gaisler.libdcom.all;
27
use gaisler.sim.all;
28
library techmap;
29
use techmap.gencomp.all;
30
library micron;
31
use micron.components.all;
32
library cypress;
33
use cypress.components.all;
34
 
35
use work.debug.all;
36
 
37
use work.config.all;    -- configuration
38
 
39
entity testbench is
40
  generic (
41
    fabtech   : integer := CFG_FABTECH;
42
    memtech   : integer := CFG_MEMTECH;
43
    padtech   : integer := CFG_PADTECH;
44
    clktech   : integer := CFG_CLKTECH;
45
    ncpu      : integer := CFG_NCPU;
46
    disas     : integer := CFG_DISAS;   -- Enable disassembly to console
47
    dbguart   : integer := CFG_DUART;   -- Print UART on console
48
    pclow     : integer := CFG_PCLOW;
49
 
50
    clkperiod : integer := 20;          -- system clock period
51
    romwidth  : integer := 8;           -- rom data width (8/32)
52
    romdepth  : integer := 23;          -- rom address depth
53
    sramwidth  : integer := 32;         -- ram data width (8/16/32)
54
    sramdepth  : integer := 20;         -- ram address depth
55
    srambanks  : integer := 1           -- number of ram banks
56
  );
57
end;
58
 
59
architecture behav of testbench is
60
 
61
constant promfile  : string := "prom.srec";  -- rom contents
62
constant sramfile  : string := "sram.srec";  -- ram contents
63
constant sdramfile : string := "sdram.srec"; -- sdram contents
64
 
65
signal clk : std_logic := '0';
66
signal clkout, pllref : std_ulogic;
67
signal Rst    : std_logic := '0';                        -- Reset
68
constant ct : integer := clkperiod/2;
69
 
70
signal address  : std_logic_vector(25 downto 0);
71
signal data     : std_logic_vector(31 downto 0);
72
signal romsn    : std_ulogic;
73
signal iosn     : std_ulogic;
74
signal oen      : std_ulogic;
75
signal writen   : std_ulogic;
76
signal dsuen, dsutx, dsurx, dsubren, dsuact : std_ulogic;
77
signal dsurst   : std_ulogic;
78
signal test     : std_ulogic;
79
signal error    : std_logic;
80
signal gpio     : std_logic_vector(CFG_GRGPIO_WIDTH-1 downto 0);
81
signal GND      : std_ulogic := '0';
82
signal VCC      : std_ulogic := '1';
83
signal NC       : std_ulogic := 'Z';
84
signal clk2     : std_ulogic := '1';
85
 
86
  signal ssram_cen    : std_logic;
87
  signal ssram_wen    : std_logic;
88
  signal ssram_bw     : std_logic_vector (0 to 3);
89
  signal ssram_oen    : std_ulogic;
90
  signal ssram_clk    : std_ulogic;
91
  signal ssram_adscn  : std_ulogic;
92
  signal ssram_adsp_n : std_ulogic;
93
  signal ssram_adv_n  : std_ulogic;
94
  signal datazz       : std_logic_vector(3 downto 0);
95
 
96
  -- ddr memory  
97
  signal ddr_clk        : std_logic;
98
  signal ddr_clkb       : std_logic;
99
  signal ddr_clkin      : std_logic;
100
  signal ddr_cke        : std_logic;
101
  signal ddr_csb        : std_logic;
102
  signal ddr_web        : std_ulogic;                       -- ddr write enable
103
  signal ddr_rasb       : std_ulogic;                       -- ddr ras
104
  signal ddr_casb       : std_ulogic;                       -- ddr cas
105
  signal ddr_dm         : std_logic_vector (1 downto 0);    -- ddr dm
106
  signal ddr_dqs        : std_logic_vector (1 downto 0);    -- ddr dqs
107
  signal ddr_ad      : std_logic_vector (12 downto 0);   -- ddr address
108
  signal ddr_ba      : std_logic_vector (1 downto 0);    -- ddr bank address
109
  signal ddr_dq                 : std_logic_vector (15 downto 0); -- ddr data
110
 
111
signal plllock    : std_ulogic;
112
signal txd1, rxd1 : std_ulogic;
113
--signal txd2, rxd2 : std_ulogic;       
114
 
115
-- for smc lan chip
116
signal eth_aen    : std_ulogic; -- for smsc eth
117
signal eth_readn  : std_ulogic; -- for smsc eth
118
signal eth_writen : std_ulogic; -- for smsc eth
119
signal eth_nbe    : std_logic_vector(3 downto 0); -- for smsc eth
120
signal eth_datacsn : std_ulogic;
121
 
122
constant lresp : boolean := false;
123
 
124
signal sa       : std_logic_vector(14 downto 0);
125
signal sd       : std_logic_vector(31 downto 0);
126
 
127
-- ATA signals
128
signal ata_rst   : std_logic;
129
signal ata_data  : std_logic_vector(15 downto 0);
130
signal ata_da    : std_logic_vector(2 downto 0);
131
signal ata_cs0   : std_logic;
132
signal ata_cs1   : std_logic;
133
signal ata_dior  : std_logic;
134
signal ata_diow  : std_logic;
135
signal ata_iordy : std_logic;
136
signal ata_intrq : std_logic;
137
signal ata_dmack : std_logic;
138
signal cf_gnd_da : std_logic_vector(10 downto 3);
139
signal cf_atasel : std_logic;
140
signal cf_we     : std_logic;
141
signal cf_power  : std_logic;
142
signal cf_csel   : std_logic;
143
 
144
begin
145
 
146
-- clock and reset
147
 
148
  clk <= not clk after ct * 1 ns;
149
  ddr_clkin <= not clk after ct * 1 ns;
150
  rst <= dsurst;
151
  dsubren <= '1'; rxd1 <= '1';
152
  address(0) <= '0';
153
 
154
--  ddr_dqs <= (others => 'L');
155
  d3 : entity work.leon3mp generic map (fabtech, memtech, padtech, clktech,
156
        ncpu, disas, dbguart, pclow )
157
    port map (rst, clk, error,
158
        address(25 downto 1), data, romsn, oen, writen, open,
159
        ssram_cen, ssram_wen, ssram_bw, ssram_oen,
160
        ssram_clk, ssram_adscn,  iosn,
161
        ddr_clk, ddr_clkb, ddr_cke, ddr_csb, ddr_web, ddr_rasb,
162
        ddr_casb, ddr_dm, ddr_dqs, ddr_ad, ddr_ba, ddr_dq,
163
        dsubren, dsuact, rxd1, txd1, gpio);
164
 
165
  ddr0 : mt46v16m16
166
    generic map (index => -1, fname => sdramfile)
167
    port map(
168
      Dq => ddr_dq(15 downto 0), Dqs => ddr_dqs(1 downto 0), Addr => ddr_ad,
169
      Ba => ddr_ba, Clk => ddr_clk,  Clk_n => ddr_clkb, Cke => ddr_cke,
170
      Cs_n => ddr_csb, Ras_n => ddr_rasb, Cas_n => ddr_casb, We_n => ddr_web,
171
      Dm => ddr_dm(1 downto 0));
172
 
173
  datazz <= "HHHH";
174
 
175
  ssram_adsp_n <= '1'; ssram_adv_n <= '1';
176
  ssram0 : cy7c1380d generic map (fname => sramfile)
177
   port map(
178
      ioDq(35 downto 32) => datazz, ioDq(31 downto 0) => data,
179
      iAddr => address(20 downto 2), iMode =>  gnd,
180
      inGW => vcc, inBWE => ssram_wen, inADV => ssram_adv_n,
181
      inADSP => ssram_adsp_n, inADSC => ssram_adscn,
182
      iClk => ssram_clk,
183
      inBwa => ssram_bw(3), inBwb => ssram_bw(2),
184
      inBwc => ssram_bw(1), inBwd => ssram_bw(0),
185
      inOE => ssram_oen, inCE1 => ssram_cen,
186
      iCE2 => vcc, inCE3 => gnd, iZz => gnd);
187
 
188
  -- 16 bit prom
189
  prom0 : sram16 generic map (index => 4, abits => romdepth, fname => promfile)
190
        port map (address(romdepth downto 1), data(31 downto 16),
191
                  gnd, gnd, romsn, writen, oen);
192
 
193
  error <= 'H';                   -- ERROR pull-up
194
 
195
   iuerr : process
196
   begin
197
     wait for 2500 ns;
198
     if to_x01(error) = '1' then wait on error; end if;
199
     assert (to_x01(error) = '1')
200
       report "*** IU in error mode, simulation halted ***"
201
         severity failure ;
202
   end process;
203
 
204
  data <= buskeep(data), (others => 'H') after 250 ns;
205
  sd <= buskeep(sd), (others => 'H') after 250 ns;
206
 
207
  test0 :  grtestmod
208
    port map ( rst, clk, error, address(21 downto 2), data,
209
               iosn, oen, writen, open);
210
 
211
 
212
  dsucom : process
213
    procedure dsucfg(signal dsurx : in std_ulogic; signal dsutx : out std_ulogic) is
214
    variable w32 : std_logic_vector(31 downto 0);
215
    variable c8  : std_logic_vector(7 downto 0);
216
    constant txp : time := 160 * 1 ns;
217
    begin
218
    dsutx <= '1';
219
    dsurst <= '0';
220
    wait for 500 ns;
221
    dsurst <= '1';
222
    wait;
223
    wait for 5000 ns;
224
    txc(dsutx, 16#55#, txp);            -- sync uart
225
 
226
--    txc(dsutx, 16#c0#, txp);
227
--    txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp);
228
--    txa(dsutx, 16#00#, 16#00#, 16#02#, 16#ae#, txp);
229
--    txc(dsutx, 16#c0#, txp);
230
--    txa(dsutx, 16#91#, 16#00#, 16#00#, 16#00#, txp);
231
--    txa(dsutx, 16#00#, 16#00#, 16#06#, 16#ae#, txp);
232
--    txc(dsutx, 16#c0#, txp);
233
--    txa(dsutx, 16#90#, 16#00#, 16#00#, 16#24#, txp);
234
--    txa(dsutx, 16#00#, 16#00#, 16#06#, 16#03#, txp);
235
--    txc(dsutx, 16#c0#, txp);
236
--    txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp);
237
--    txa(dsutx, 16#00#, 16#00#, 16#06#, 16#fc#, txp);
238
 
239
    txc(dsutx, 16#c0#, txp);
240
    txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp);
241
    txa(dsutx, 16#00#, 16#00#, 16#00#, 16#2f#, txp);
242
    txc(dsutx, 16#c0#, txp);
243
    txa(dsutx, 16#91#, 16#00#, 16#00#, 16#00#, txp);
244
    txa(dsutx, 16#00#, 16#00#, 16#00#, 16#6f#, txp);
245
    txc(dsutx, 16#c0#, txp);
246
    txa(dsutx, 16#90#, 16#11#, 16#00#, 16#00#, txp);
247
    txa(dsutx, 16#00#, 16#00#, 16#00#, 16#00#, txp);
248
    txc(dsutx, 16#c0#, txp);
249
    txa(dsutx, 16#90#, 16#40#, 16#00#, 16#04#, txp);
250
    txa(dsutx, 16#00#, 16#02#, 16#20#, 16#01#, txp);
251
    txc(dsutx, 16#c0#, txp);
252
    txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp);
253
    txa(dsutx, 16#00#, 16#00#, 16#00#, 16#02#, txp);
254
 
255
    txc(dsutx, 16#c0#, txp);
256
    txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp);
257
    txa(dsutx, 16#00#, 16#00#, 16#00#, 16#0f#, txp);
258
 
259
    txc(dsutx, 16#c0#, txp);
260
    txa(dsutx, 16#40#, 16#00#, 16#43#, 16#10#, txp);
261
    txa(dsutx, 16#00#, 16#00#, 16#00#, 16#0f#, txp);
262
 
263
    txc(dsutx, 16#c0#, txp);
264
    txa(dsutx, 16#91#, 16#40#, 16#00#, 16#24#, txp);
265
    txa(dsutx, 16#00#, 16#00#, 16#00#, 16#24#, txp);
266
    txc(dsutx, 16#c0#, txp);
267
    txa(dsutx, 16#91#, 16#70#, 16#00#, 16#00#, txp);
268
    txa(dsutx, 16#00#, 16#00#, 16#00#, 16#03#, txp);
269
 
270
 
271
 
272
 
273
 
274
    txc(dsutx, 16#c0#, txp);
275
    txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp);
276
    txa(dsutx, 16#00#, 16#00#, 16#ff#, 16#ff#, txp);
277
 
278
    txc(dsutx, 16#c0#, txp);
279
    txa(dsutx, 16#90#, 16#40#, 16#00#, 16#48#, txp);
280
    txa(dsutx, 16#00#, 16#00#, 16#00#, 16#12#, txp);
281
 
282
    txc(dsutx, 16#c0#, txp);
283
    txa(dsutx, 16#90#, 16#40#, 16#00#, 16#60#, txp);
284
    txa(dsutx, 16#00#, 16#00#, 16#12#, 16#10#, txp);
285
 
286
    txc(dsutx, 16#80#, txp);
287
    txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp);
288
    rxi(dsurx, w32, txp, lresp);
289
 
290
    txc(dsutx, 16#a0#, txp);
291
    txa(dsutx, 16#40#, 16#00#, 16#00#, 16#00#, txp);
292
    rxi(dsurx, w32, txp, lresp);
293
 
294
    end;
295
 
296
  begin
297
 
298
    dsucfg(dsutx, dsurx);
299
 
300
    wait;
301
  end process;
302
end ;
303
 

powered by: WebSVN 2.1.0

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