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-ge-hpe-midi-ep2s180/] [testbench.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dimamali
-----------------------------------------------------------------------------
2
--  LEON3 Demonstration design test bench
3
--  Copyright (C) 2004 Jiri Gaisler, 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
 
16
library ieee;
17
use ieee.std_logic_1164.all;
18
 
19
library gaisler;
20
use gaisler.libdcom.all;
21
use gaisler.sim.all;
22
--use gaisler.jtagtst.all;
23
 
24
library techmap;
25
use techmap.gencomp.all;
26
 
27
library micron;
28
use micron.components.all;
29
 
30
library gleichmann;
31
use gleichmann.hpi.all;
32
-- modified version of the JTAG test package
33
--  use gleichmann.jtagtst.all;
34
 
35
library work;
36
use work.debug.all;
37
use work.config.all;                    -- configuration
38
 
39
 
40
entity testbench is
41
  generic (
42
    fabtech : integer := CFG_FABTECH;
43
    memtech : integer := CFG_MEMTECH;
44
    padtech : integer := CFG_PADTECH;
45
    clktech : integer := CFG_CLKTECH;
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 := 25;          -- system clock period
51
    romwidth  : integer := 32;          -- rom data width (8/32)
52
    romdepth  : integer := 16;          -- rom address depth
53
    sramwidth : integer := 32;          -- ram data width (8/16/32)
54
    sramdepth : integer := 16;          -- ram address depth
55
    srambanks : integer := 2);          -- number of ram banks
56
  port (
57
    pci_rst    : in    std_logic;      -- PCI bus
58
    pci_clk    : in    std_logic;
59
    pci_gnt    : in    std_logic;
60
    pci_idsel  : in    std_logic;
61
    pci_lock   : inout std_logic;
62
    pci_ad     : inout std_logic_vector(31 downto 0);
63
    pci_cbe    : inout std_logic_vector(3 downto 0);
64
    pci_frame  : inout std_logic;
65
    pci_irdy   : inout std_logic;
66
    pci_trdy   : inout std_logic;
67
    pci_devsel : inout std_logic;
68
    pci_stop   : inout std_logic;
69
    pci_perr   : inout std_logic;
70
    pci_par    : inout std_logic;
71
    pci_req    : inout std_logic;
72
    pci_serr   : inout std_logic;
73
    pci_host   : in    std_logic;
74
    pci_66     : in    std_logic);
75
end testbench;
76
 
77
 
78
architecture behav of testbench is
79
 
80
  constant promfile  : string := "prom.srec";   -- rom contents
81
  constant sramfile  : string := "sram.srec";   -- ram contents
82
  constant sdramfile : string := "sdram.srec";  -- sdram contents
83
 
84
 
85
  signal   clk : std_logic := '0';
86
  signal   Rst : std_logic := '0';      -- Reset
87
  constant ct  : integer   := clkperiod/2;
88
 
89
  signal address : std_logic_vector(27 downto 0);
90
  signal data    : std_logic_vector(31 downto 0);
91
 
92
  signal ramsn                               : std_logic_vector(4 downto 0);
93
  signal ramoen                              : std_logic_vector(4 downto 0);
94
  signal rwen                                : std_logic_vector(3 downto 0);
95
  signal rwenx                               : std_logic_vector(3 downto 0);
96
  signal romsn                               : std_logic_vector(1 downto 0);
97
  signal iosn                                : std_logic;
98
  signal oen                                 : std_logic;
99
  signal read                                : std_logic;
100
  signal writen                              : std_logic;
101
  signal brdyn                               : std_logic;
102
  signal bexcn                               : std_logic;
103
  signal wdog                                : std_logic;
104
  signal dsuen, dsutx, dsurx, dsubre, dsuact : std_logic;
105
  signal dsurst                              : std_logic;
106
  signal test                                : std_logic;
107
 
108
  signal error : std_logic;
109
  alias errorn : std_logic is error;
110
 
111
  signal pio  : std_logic_vector(15 downto 0);
112
  signal GND  : std_logic := '0';
113
  signal VCC  : std_logic := '1';
114
  signal NC   : std_logic := 'Z';
115
  signal clk2 : std_logic := '1';
116
 
117
-- sdram
118
  signal sdclk  : std_logic_vector(1 downto 0);
119
-- signal sdclk    : std_logic;       
120
--  alias sdclk   : std_logic is sd_clk(0);
121
  signal sdcke  : std_logic_vector (1 downto 0);  -- clk en
122
  signal sa     : std_logic_vector(14 downto 0);
123
  signal sd     : std_logic_vector(63 downto 0);
124
  signal sddqm  : std_logic_vector (7 downto 0);  -- data i/o mask
125
  signal sdwen  : std_logic;                     -- write en
126
  signal sdcasn : std_logic;                     -- col addr stb
127
  signal sdrasn : std_logic;                     -- row addr stb
128
  signal sdcsn  : std_logic_vector (1 downto 0);  -- chip sel
129
 
130
  signal plllock : std_logic;
131
 
132
-- pulled up high, therefore std_logic
133
  signal txd1, rxd1 : std_logic;
134
 
135
  signal etx_clk, erx_clk, erx_dv, erx_er, erx_col, erx_crs, etx_en, etx_er : std_logic                    := '0';
136
  signal erxd, etxd                                                         : std_logic_vector(3 downto 0) := (others => '0');
137
  signal emdc, emdio                                                        : std_logic;  --dummy signal for the mdc,mdio in the phy which is not used
138
 
139
  signal emddis  : std_logic;
140
  signal epwrdwn : std_logic;
141
  signal ereset  : std_logic;
142
  signal esleep  : std_logic;
143
  signal epause  : std_logic;
144
  signal tp_out  : std_logic_vector(7 downto 0);
145
  signal led_cfg : std_logic_vector(2 downto 0);
146
 
147
  constant lresp : boolean := false;
148
 
149
 
150
 
151
-- Added for Hpe
152
 
153
  signal resoutn : std_logic;
154
  signal disrams : std_logic;
155
  signal rben    : std_logic_vector(3 downto 0);
156
  signal sdclk0  : std_logic;
157
  signal sdclk1  : std_logic;
158
  signal sdba0   : std_logic;           -- bank address zero
159
  signal sdba1   : std_logic;           -- bank address one
160
  signal dsubren : std_logic;
161
  signal dsuactn : std_logic;
162
  signal bufdir  : std_logic;
163
  signal bufoen  : std_logic;
164
  signal s_sddqm : std_logic_vector (3 downto 0);
165
 
166
  signal HRESETn   : std_logic;
167
  signal HSEL      : std_logic;
168
  signal HREADY_ba : std_logic;        -- hready input signal
169
  signal HADDR     : std_logic_vector(31 downto 0);
170
  signal HWRITE    : std_logic;
171
  signal HTRANS    : std_logic_vector(1 downto 0);
172
  signal HSIZE     : std_logic_vector(2 downto 0);
173
  signal HBURST    : std_logic_vector(2 downto 0);
174
  signal HWDATA    : std_logic_vector(31 downto 0);
175
  signal HMASTER   : std_logic_vector(3 downto 0);
176
  signal HMASTLOCK : std_logic;
177
  signal HREADY    : std_logic;
178
  signal HRESP     : std_logic_vector(1 downto 0);
179
  signal HRDATA    : std_logic_vector(31 downto 0);
180
  signal HSPLIT    : std_logic_vector(15 downto 0);
181
 
182
  signal clk_ctrl        : std_logic_vector(1 downto 0);  -- cpld      
183
  signal CAN_RXD         : std_logic;
184
  signal CAN_TXD         : std_logic;
185
  signal CAN_STB         : std_logic;
186
  signal CAN_TXD_delayed : std_logic := '1';
187
  signal gpio            : std_logic_vector(7 downto 0);
188
 
189
  subtype sd_address_range is natural range 24 downto 12;
190
  subtype sd_ba_range is natural range 26 downto 25;
191
 
192
  ---------------------------------------------------------------------------------------
193
  -- HPI SIGNALS
194
  ---------------------------------------------------------------------------------------
195
  signal hpiaddr : std_logic_vector(1 downto 0);
196
  signal hpidata : std_logic_vector(15 downto 0);
197
  signal hpicsn  : std_logic;
198
  signal hpiwrn  : std_logic;
199
  signal hpiint  : std_logic;
200
  signal hpirdn  : std_logic;
201
--  signal hpirdata : std_logic_vector(15 downto 0);
202
--  signal hpiwdata : std_logic_vector(15 downto 0);
203
 
204
--  signal dbg_rdata : std_logic_vector(15 downto 0);
205
--  signal dbg_wdata : std_logic_vector(15 downto 0);
206
---------------------------------------------------------------------------------------
207
 
208
component hpi_ram
209
  generic (
210
    abits : integer;
211
    dbits : integer);
212
  port (
213
    clk     : in  std_logic;
214
    address : in  std_logic_vector(1 downto 0);
215
    datain  : in  std_logic_vector(dbits-1 downto 0);
216
    dataout : out std_logic_vector(dbits-1 downto 0);
217
    writen  : in  std_logic;
218
    readn   : in  std_logic;
219
    csn     : in  std_logic);
220
end component;
221
 
222
-----------------------------------------------------------------------------------------
223
-- IO SECTION
224
-----------------------------------------------------------------------------------------
225
  signal dsw          : std_logic_vector(7 downto 0) := "00000001";
226
  signal led          : std_logic_vector(7 downto 0);
227
  signal sevensegment : std_logic_vector(9 downto 0);
228
  signal tst_col      : std_logic_vector(2 downto 0);
229
  signal tst_row      : std_logic_vector(3 downto 0);
230
  signal lcd_enable   : std_logic;
231
  signal lcd_regsel   : std_logic;
232
  signal lcd_rw       : std_logic;
233
 
234
  signal ac97_bit_clk   : std_logic := '0';
235
  signal ac97_sync      : std_logic;
236
  signal ac97_sdata_out : std_logic;
237
  signal ac97_sdata_in  : std_logic;
238
  signal ac97_resetn    : std_logic;
239
  signal ac97_ext_clk   : std_logic;
240
 
241
  signal vga_clk    : std_logic;
242
  signal vga_syncn  : std_logic;
243
  signal vga_blankn : std_logic;
244
  signal vga_vsync  : std_logic;
245
  signal vga_hsync  : std_logic;
246
  signal vga_rd     : std_logic_vector(7 downto 0);
247
  signal vga_gr     : std_logic_vector(7 downto 0);
248
  signal vga_bl     : std_logic_vector(7 downto 0);
249
 
250
  signal ps2_clk  : std_logic_vector(1 downto 0);
251
  signal ps2_data : std_logic_vector(1 downto 0);
252
 
253
  signal exp_datao : std_logic_vector(19 downto 0);
254
  signal exp_datai : std_logic_vector(19 downto 0);
255
 
256
  signal cb4_datao : std_logic_vector(35 downto 0);
257
  signal cb4_datai : std_logic_vector(35 downto 0);
258
 
259
  signal sdcard_cs   : std_logic;
260
  signal sdcard_di   : std_logic;
261
  signal sdcard_sclk : std_logic;
262
  signal sdcard_do   : std_logic;
263
 
264
  component spi_slave_model
265
    port(
266
      csn : in  std_logic;
267
      sck : in  std_logic;
268
      di  : in  std_logic;
269
      do  : out std_logic
270
      );
271
  end component;
272
 
273
-----------------------------------------------------------------------------------------
274
-- USB DEBUG LINK
275
-----------------------------------------------------------------------------------------
276
  signal usb_clkout    : std_logic;
277
  signal usb_d         : std_logic_vector(15 downto 0);
278
  signal usb_linestate : std_logic_vector(1 downto 0);
279
  signal usb_opmode    : std_logic_vector(1 downto 0);
280
  signal usb_reset     : std_logic;
281
  signal usb_rxactive  : std_logic;
282
  signal usb_rxerror   : std_logic;
283
  signal usb_rxvalid   : std_logic;
284
  signal usb_suspend   : std_logic;
285
  signal usb_termsel   : std_logic;
286
  signal usb_txready   : std_logic;
287
  signal usb_txvalid   : std_logic;
288
  signal usb_validh    : std_logic;
289
  signal usb_xcvrsel   : std_logic;
290
  signal usb_vbus      : std_logic;
291
  signal usb_dbus16    : std_logic;
292
  signal usb_unidir    : std_logic;
293
 
294
-----------------------------------------------------------------------------------------
295
-- ADC/DAC
296
-----------------------------------------------------------------------------------------
297
  signal adc_dout : std_logic;
298
  signal adc_ain  : std_logic;
299
  signal dac_out  : std_logic;
300
 
301
--------------------------------------------------------------------------------
302
-- MISC TEST BENCH SIGNALS
303
--------------------------------------------------------------------------------
304
  signal clock_cycle_counter : integer;
305
-- UART test bench module
306
  signal rts_internal        : std_logic;
307
  signal cts_internal        : std_logic;
308
 
309
begin
310
 
311
  dsubren <= not dsubre;
312
  disrams <= '0';
313
 
314
-- clock and reset
315
 
316
  clk <= not clk  after ct * 1 ns;
317
  rst <= '1', '0' after 10 ns, '1' after 100 ns;
318
 
319
  dsuen   <= '1'; dsubre <= '0'; rxd1 <= 'H';
320
  led_cfg <= "011";                     -- put the phy in base100f mode
321
 
322
  clk_count_seq : process (rst, clk) is
323
  begin
324
    if rst = '0' then
325
      clock_cycle_counter <= 0;
326
    elsif rising_edge(clk) then
327
      clock_cycle_counter <= clock_cycle_counter + 1;
328
    end if;
329
  end process;
330
 
331
  d3 : entity work.leon3hpe
332
--    generic map (
333
--      fabtech => fabtech,
334
--      memtech => memtech,
335
--      padtech => padtech,
336
--      clktech => clktech,
337
--      disas   => disas,
338
--      dbguart => dbguart,
339
--      pclow   => pclow)
340
    port map (
341
      resetn  => rst,
342
      resoutn => resoutn,
343
      clk     => clk,
344
--      pllref  => clk,
345
      errorn  => errorn,
346
      address => address,
347
      data    => data,
348
 
349
      sdclk  => sdclk,
350
      sdcke  => sdcke,
351
      sdaddr => sa(12 downto 0),
352
      sddq   => sd,
353
      sddqm  => sddqm,                  -- topmost bits are undriven
354
      sdwen  => sdwen,
355
      sdcasn => sdcasn,
356
      sdrasn => sdrasn,
357
      sdcsn  => sdcsn,
358
      sdba   => sa(14 downto 13),
359
 
360
      dsutx   => dsutx,
361
      dsurx   => dsurx,
362
--      dsuen   => dsuen,
363
      dsubre  => dsubre,
364
      dsuactn => dsuactn,
365
 
366
      txd1 => txd1,
367
      rxd1 => rxd1,
368
 
369
--      gpio => gpio,
370
 
371
      ramsn  => ramsn,
372
      ramoen => ramoen,
373
      oen    => oen,
374
      rben   => rben,
375
      rwen   => rwen,
376
      writen => writen,
377
      read   => read,
378
      iosn   => iosn,
379
      romsn  => romsn,
380
 
381
      emdio   => emdio,
382
      etx_clk => etx_clk,
383
      erx_clk => erx_clk,
384
      erxd    => erxd,
385
      erx_dv  => erx_dv,
386
      erx_er  => erx_er,
387
      erx_col => erx_col,
388
      erx_crs => erx_crs,
389
      etxd    => etxd,
390
      etx_en  => etx_en,
391
      etx_er  => etx_er,
392
      emdc    => emdc,
393
 
394
      can_txd => can_txd,
395
      can_rxd => can_rxd,
396
      can_stb => can_stb,
397
 
398
      dsw          => dsw,
399
--      led          => led,
400
      sevensegment => sevensegment,
401
      tst_col      => tst_col,
402
      tst_row      => tst_row,
403
      lcd_enable   => lcd_enable,
404
      lcd_regsel   => lcd_regsel,
405
      lcd_rw       => lcd_rw,
406
 
407
      ps2_clk   => ps2_clk,
408
      ps2_data  => ps2_data,
409
      exp_datao => exp_datao,
410
      exp_datai => exp_datai,
411
 
412
      -----------------------------------------------------------------------------------
413
      -- FOR TEST PURPOSES WITH THE AHB2HPI CORE
414
      -----------------------------------------------------------------------------------
415
 
416
      hpiint => gnd,
417
 
418
      hpiaddr => hpiaddr,
419
      hpidata => hpidata,
420
      hpicsn  => hpicsn,
421
      hpiwrn  => hpiwrn,
422
      hpirdn  => hpirdn,
423
 
424
      vga_clk    => vga_clk,
425
      vga_syncn  => vga_syncn,
426
      vga_blankn => vga_blankn,
427
      vga_vsync  => vga_vsync,
428
      vga_hsync  => vga_hsync,
429
      vga_rd     => vga_rd,
430
      vga_gr     => vga_gr,
431
      vga_bl     => vga_bl,
432
 
433
      ac97_bit_clk   => ac97_bit_clk,
434
      ac97_sync      => ac97_sync,
435
      ac97_sdata_out => ac97_sdata_out,
436
      ac97_sdata_in  => ac97_sdata_in,
437
      ac97_resetn    => ac97_resetn,
438
--    ac97_ext_clk   => ac97_ext_clk
439
 
440
      usb_clkout    => usb_clkout,
441
      usb_d         => usb_d,
442
      usb_linestate => usb_linestate,
443
      usb_opmode    => usb_opmode,
444
--      usb_reset     => usb_reset,
445
      usb_rxactive  => usb_rxactive,
446
      usb_rxerror   => usb_rxerror,
447
      usb_rxvalid   => usb_rxvalid,
448
      usb_suspend   => usb_suspend,
449
      usb_termsel   => usb_termsel,
450
      usb_txready   => usb_txready,
451
      usb_txvalid   => usb_txvalid,
452
      usb_validh    => usb_validh,
453
      usb_xcvrsel   => usb_xcvrsel,
454
      usb_vbus      => usb_vbus,
455
      usb_dbus16    => usb_dbus16,
456
      usb_unidir    => usb_unidir,
457
 
458
      adc_dout => adc_dout,
459
      adc_ain  => adc_ain,
460
      dac_out  => dac_out,
461
 
462
      sdcard_cs   => sdcard_cs,
463
      sdcard_di   => sdcard_di,
464
      sdcard_sclk => sdcard_sclk,
465
      sdcard_do   => sdcard_do
466
 
467
      );
468
 
469
 
470
  spi_slave_model_1 : spi_slave_model
471
    port map (
472
      csn => sdcard_cs,
473
      sck => sdcard_sclk,
474
      di  => sdcard_di,
475
      do  => sdcard_do);
476
 
477
 
478
  hpi_ram_1 : hpi_ram
479
    generic map (
480
      abits => 10,
481
      dbits => 16)
482
    port map (
483
      clk     => clk,
484
      address => hpiaddr,
485
      datain  => hpidata,
486
      dataout => hpidata,
487
      writen  => hpiwrn,
488
      readn   => hpirdn,
489
      csn     => hpicsn);
490
 
491
 
492
  sd0 : if (CFG_MCTRL_SDEN = 1) and (CFG_MCTRL_SEPBUS = 0) generate
493
    u0 : mt48lc16m16a2 generic map (index => 0, fname => sdramfile)
494
      port map(
495
        Dq   => data(31 downto 16), Addr => address(14 downto 2),
496
        Ba   => address(16 downto 15), Clk => sdclk(0), Cke => sdcke(0),
497
        Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,
498
        Dqm  => sddqm(3 downto 2));
499
    u1 : mt48lc16m16a2 generic map (index => 16, fname => sdramfile)
500
      port map(
501
        Dq   => data(15 downto 0), Addr => address(14 downto 2),
502
        Ba   => address(16 downto 15), Clk => sdclk(0), Cke => sdcke(0),
503
        Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,
504
        Dqm  => sddqm(1 downto 0));
505
    u2 : mt48lc16m16a2 generic map (index => 0, fname => sdramfile)
506
      port map(
507
        Dq   => data(31 downto 16), Addr => address(14 downto 2),
508
        Ba   => address(16 downto 15), Clk => sdclk(0), Cke => sdcke(0),
509
        Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,
510
        Dqm  => sddqm(3 downto 2));
511
    u3 : mt48lc16m16a2 generic map (index => 16, fname => sdramfile)
512
      port map(
513
        Dq   => data(15 downto 0), Addr => address(14 downto 2),
514
        Ba   => address(16 downto 15), Clk => sdclk(0), Cke => sdcke(0),
515
        Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,
516
        Dqm  => sddqm(1 downto 0));
517
  end generate;
518
 
519
  sd1 : if (CFG_MCTRL_SDEN = 1) and (CFG_MCTRL_SEPBUS = 1) generate
520
    u0 : mt48lc16m16a2 generic map (index => 0, fname => sdramfile)
521
      port map(
522
        Dq   => sd(31 downto 16), Addr => sa(12 downto 0),
523
        Ba   => sa(14 downto 13), Clk => sdclk(0), Cke => sdcke(0),
524
        Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,
525
        Dqm  => sddqm(3 downto 2));
526
    u1 : mt48lc16m16a2 generic map (index => 16, fname => sdramfile)
527
      port map(
528
        Dq   => sd(15 downto 0), Addr => sa(12 downto 0),
529
        Ba   => sa(14 downto 13), Clk => sdclk(0), Cke => sdcke(0),
530
        Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,
531
        Dqm  => sddqm(1 downto 0));
532
    u2 : mt48lc16m16a2 generic map (index => 0, fname => sdramfile)
533
      port map(
534
        Dq   => sd(31 downto 16), Addr => sa(12 downto 0),
535
        Ba   => sa(14 downto 13), Clk => sdclk(0), Cke => sdcke(0),
536
        Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,
537
        Dqm  => sddqm(3 downto 2));
538
    u3 : mt48lc16m16a2 generic map (index => 16, fname => sdramfile)
539
      port map(
540
        Dq   => sd(15 downto 0), Addr => sa(12 downto 0),
541
        Ba   => sa(14 downto 13), Clk => sdclk(0), Cke => sdcke(0),
542
        Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,
543
        Dqm  => sddqm(1 downto 0));
544
    sd64 : if (CFG_MCTRL_SD64 = 1) generate
545
      u4 : mt48lc16m16a2 generic map (index => 0, fname => sdramfile)
546
        port map(
547
          Dq   => sd(63 downto 48), Addr => sa(12 downto 0),
548
          Ba   => sa(14 downto 13), Clk => sdclk(0), Cke => sdcke(0),
549
          Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,
550
          Dqm  => sddqm(7 downto 6));
551
      u5 : mt48lc16m16a2 generic map (index => 16, fname => sdramfile)
552
        port map(
553
          Dq   => sd(47 downto 32), Addr => sa(12 downto 0),
554
          Ba   => sa(14 downto 13), Clk => sdclk(0), Cke => sdcke(0),
555
          Cs_n => sdcsn(0), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,
556
          Dqm  => sddqm(5 downto 4));
557
      u6 : mt48lc16m16a2 generic map (index => 0, fname => sdramfile)
558
        port map(
559
          Dq   => sd(63 downto 48), Addr => sa(12 downto 0),
560
          Ba   => sa(14 downto 13), Clk => sdclk(0), Cke => sdcke(0),
561
          Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,
562
          Dqm  => sddqm(7 downto 6));
563
      u7 : mt48lc16m16a2 generic map (index => 16, fname => sdramfile)
564
        port map(
565
          Dq   => sd(47 downto 32), Addr => sa(12 downto 0),
566
          Ba   => sa(14 downto 13), Clk => sdclk(0), Cke => sdcke(0),
567
          Cs_n => sdcsn(1), Ras_n => sdrasn, Cas_n => sdcasn, We_n => sdwen,
568
          Dqm  => sddqm(5 downto 4));
569
    end generate;
570
  end generate;
571
 
572
 
573
  extbprom : if CFG_AHBROMEN = 0 generate
574
    prom0 : for i in 0 to (romwidth/8)-1 generate
575
      sr0 : sram generic map (index => i, abits => romdepth, fname => promfile)
576
        port map (address(romdepth+1 downto 2), data(31-i*8 downto 24-i*8), romsn(0),
577
                  rwen(i), oen);
578
    end generate;
579
  end generate extbprom;
580
 
581
 
582
  sram0 : for i in 0 to (sramwidth/8)-1 generate
583
    sr0 : sram generic map (index => i, abits => sramdepth, fname => sramfile)
584
      port map (address(sramdepth+1 downto 2), data(31-i*8 downto 24-i*8), ramsn(0),
585
                rwen(0), ramoen(0));
586
  end generate;
587
 
588
  error <= 'H';                         -- ERROR pull-up
589
 
590
  iuerr : process
591
  begin
592
    wait for 2500 ns;
593
    if to_x01(error) = '1' then wait on error; end if;
594
    assert (to_x01(error) = '1')
595
      report "*** IU in error mode, simulation halted ***"
596
      severity failure;
597
  end process;
598
 
599
  data <= buskeep(data) after 5 ns;
600
  sd   <= buskeep(sd)   after 5 ns;
601
 
602
  can01 : if CFG_CAN /= 0 generate
603
    -- CAN_TXD_delayed <= CAN_TXD after 160 ns;
604
    CAN_TXD_delayed <= CAN_TXD;
605
    CAN_RXD         <= '1' and CAN_TXD_delayed;
606
  end generate;
607
  can00 : if CFG_CAN = 0 generate
608
    CAN_RXD <= '1';
609
  end generate;
610
 
611
  test0 : grtestmod
612
    port map (rst, clk, error, address(21 downto 2), data,
613
               iosn, oen, writen, brdyn);
614
 
615
 
616
  dcomstart : if CFG_AHBROMEN = 0 generate
617
    dsucom : process
618
      procedure dsucfg(signal dsurx : in std_logic; signal dsutx : out std_logic) is
619
        variable w32 : std_logic_vector(31 downto 0);
620
        variable c8  : std_logic_vector(7 downto 0);
621
        constant txp : time := 160 * 1 ns;
622
      begin
623
        dsutx  <= '1';
624
        dsurst <= '1';
625
        wait;
626
        wait for 5000 ns;
627
        txc(dsutx, 16#55#, txp);        -- sync uart
628
 
629
        txc(dsutx, 16#c0#, txp);
630
        txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp);
631
        txa(dsutx, 16#00#, 16#00#, 16#00#, 16#ef#, txp);
632
 
633
        txc(dsutx, 16#c0#, txp);
634
        txa(dsutx, 16#90#, 16#00#, 16#00#, 16#20#, txp);
635
        txa(dsutx, 16#00#, 16#00#, 16#ff#, 16#ff#, txp);
636
 
637
        txc(dsutx, 16#c0#, txp);
638
        txa(dsutx, 16#90#, 16#40#, 16#00#, 16#48#, txp);
639
        txa(dsutx, 16#00#, 16#00#, 16#00#, 16#12#, txp);
640
 
641
        txc(dsutx, 16#c0#, txp);
642
        txa(dsutx, 16#90#, 16#40#, 16#00#, 16#60#, txp);
643
        txa(dsutx, 16#00#, 16#00#, 16#12#, 16#10#, txp);
644
 
645
        txc(dsutx, 16#80#, txp);
646
        txa(dsutx, 16#90#, 16#00#, 16#00#, 16#00#, txp);
647
        rxi(dsurx, w32, txp, lresp);
648
 
649
        txc(dsutx, 16#a0#, txp);
650
        txa(dsutx, 16#40#, 16#00#, 16#00#, 16#00#, txp);
651
        rxi(dsurx, w32, txp, lresp);
652
 
653
      end;
654
 
655
    begin
656
      dsucfg(dsutx, dsurx);
657
      wait;
658
    end process;
659
  end generate dcomstart;
660
 
661
 
662
  altstimuli : if CFG_AHBROMEN = 1 generate
663
    stimuli : process
664
    begin
665
      dsurx <= '1';
666
      -- rxd1 <= 'H'; --already defined above
667
      txd1  <= 'H';
668
 
669
 
670
      wait;
671
    end process STIMULI;
672
  end generate altstimuli;
673
 
674
  -----------------------------------------------------------------------------
675
  -- ARC testbench modules
676
  -----------------------------------------------------------------------------
677
 
678
  phy0 : if CFG_GRETH > 0 generate
679
    p0 : entity gleichmann.phy_ext
680
      generic map (
681
        infile_name  => "indata",
682
        outfile_name => "outdata",
683
        logfile_name => "logfile_phy",
684
        win_size     => 3)
685
      port map (
686
        resetn    => rst,
687
        led_cfg   => led_cfg,
688
        log_en    => VCC,
689
        cycle_num => clock_cycle_counter,
690
        mdio      => emdio,
691
        tx_clk    => etx_clk,
692
        rx_clk    => erx_clk,
693
        rxd       => erxd,
694
        rx_dv     => erx_dv,
695
        rx_er     => erx_er,
696
        rx_col    => erx_col,
697
        rx_crs    => erx_crs,
698
        txd       => etxd,
699
        tx_en     => etx_en,
700
        tx_er     => etx_er,
701
        mdc       => emdc);
702
  end generate;
703
 
704
  uart0 : if CFG_UART1_ENABLE > 0 generate
705
    rts_internal <= '0',
706
                    '1' after 1000 ns,
707
                    '0' after 1150 ns,
708
                    'Z' after 1500 ns;
709
 
710
    uart_ext_1 : entity gleichmann.uart_ext
711
      generic map (
712
        logfile_name => "logfile_uart",
713
        t_delay      => 5 ns)
714
      port map (
715
        resetn    => rst,
716
        log_en    => VCC,
717
        cycle_num => clock_cycle_counter,
718
        cts       => cts_internal,
719
        rxd       => rxd1,
720
        txd       => txd1,
721
        rts       => rts_internal);
722
  end generate uart0;
723
end architecture behav;
724
 
725
 

powered by: WebSVN 2.1.0

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