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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.6/] [rtl/] [sys_gen/] [tst_rlink/] [rbd_tst_rlink.vhd] - Blame information for rev 24

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 16 wfjm
-- $Id: rbd_tst_rlink.vhd 438 2011-12-11 23:40:52Z mueller $
2
--
3
-- Copyright 2011- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
4
--
5
-- This program is free software; you may redistribute and/or modify it under
6
-- the terms of the GNU General Public License as published by the Free
7
-- Software Foundation, either version 2, or at your option any later version.
8
--
9
-- This program is distributed in the hope that it will be useful, but
10
-- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
11
-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12
-- for complete details.
13
--
14
------------------------------------------------------------------------------
15
-- Module Name:    rbd_tst_rlink - syn
16
-- Description:    rbus device for tst_rlink
17
--
18
-- Dependencies:   rbus/rbd_tester
19
--                 rbus/rbd_bram
20
--                 rbus/rbd_rbmon
21
--                 rbus/rbd_eyemon
22
--                 rbus/rbd_timer
23
--                 rbus/rb_sres_or_3
24
--                 rbus/rb_sres_or_4
25
--
26
-- Test bench:     nexys3/tb/tb_tst_rlink_n3
27
--
28
-- Target Devices: generic
29
-- Tool versions:  xst 13.1; ghdl 0.29
30
--
31
-- Revision History: 
32
-- Date         Rev Version  Comment
33
-- 2011-11-11   351   1.0    Initial version (derived from tst_rlink)
34
------------------------------------------------------------------------------
35
-- Usage of STAT signal:
36
--   STAT(0):   timer 0 busy 
37
--   STAT(1):   timer 1 busy 
38
--   STAT(2:7): unused
39
 
40
library ieee;
41
use ieee.std_logic_1164.all;
42
use ieee.numeric_std.all;
43
 
44
use work.slvtypes.all;
45
use work.rblib.all;
46
use work.rbdlib.all;
47
 
48
-- ----------------------------------------------------------------------------
49
 
50
entity rbd_tst_rlink is                 -- rbus device for tst_rlink
51
  port (
52
    CLK : in slbit;                     -- clock
53
    RESET : in slbit;                   -- reset
54
    CE_USEC : in slbit;                 -- usec pulse
55
    RB_MREQ : in rb_mreq_type;          -- rbus: request
56
    RB_SRES : out rb_sres_type;         -- rbus: response
57
    RB_LAM : out slv16;                 -- rbus: look at me
58
    RB_STAT : out slv3;                 -- rbus: status flags
59
    RB_SRES_TOP : in rb_sres_type;      -- top-level rb_sres, for rbd_mon
60
    RXSD : in slbit;                    -- serport rxsd, for rbd_emon
61
    RXACT : in slbit;                   -- serport rxact, for rbd_emon
62
    STAT : out slv8                     -- status flags
63
 
64
  );
65
end rbd_tst_rlink;
66
 
67
architecture syn of rbd_tst_rlink is
68
 
69
  signal RB_SRES_TEST  : rb_sres_type := rb_sres_init;
70
  signal RB_SRES_BRAM  : rb_sres_type := rb_sres_init;
71
  signal RB_SRES_MON   : rb_sres_type := rb_sres_init;
72
  signal RB_SRES_EMON  : rb_sres_type := rb_sres_init;
73
  signal RB_SRES_TIM0  : rb_sres_type := rb_sres_init;
74
  signal RB_SRES_TIM1  : rb_sres_type := rb_sres_init;
75
  signal RB_SRES_SUM1  : rb_sres_type := rb_sres_init;
76
 
77
  signal RB_LAM_TEST  : slv16 := (others=>'0');
78
 
79
  signal TIM0_DONE : slbit := '0';
80
  signal TIM0_BUSY : slbit := '0';
81
  signal TIM1_DONE : slbit := '0';
82
  signal TIM1_BUSY : slbit := '0';
83
 
84
  constant rbaddr_mon   : slv8 := "11111100"; -- 111111xx
85
  constant rbaddr_emon  : slv8 := "11111000"; -- 111110xx
86
  constant rbaddr_bram  : slv8 := "11110100"; -- 111101xx
87
  constant rbaddr_test  : slv8 := "11110000"; -- 111100xx
88
  constant rbaddr_tim1  : slv8 := "11100001"; -- 11100001
89
  constant rbaddr_tim0  : slv8 := "11100000"; -- 11100000
90
 
91
begin
92
 
93
  TEST : rbd_tester
94
    generic map (
95
      RB_ADDR => rbaddr_test)
96
    port map (
97
      CLK      => CLK,
98
      RESET    => RESET,
99
      RB_MREQ  => RB_MREQ,
100
      RB_SRES  => RB_SRES_TEST,
101
      RB_LAM   => RB_LAM_TEST,
102
      RB_STAT  => RB_STAT
103
    );
104
 
105
  BRAM : rbd_bram
106
    generic map (
107
      RB_ADDR => rbaddr_bram)
108
    port map (
109
      CLK      => CLK,
110
      RESET    => RESET,
111
      RB_MREQ  => RB_MREQ,
112
      RB_SRES  => RB_SRES_BRAM
113
    );
114
 
115
  MON : rbd_rbmon
116
    generic map (
117
      RB_ADDR => rbaddr_mon,
118
      AWIDTH  => 9)
119
    port map (
120
      CLK         => CLK,
121
      RESET       => RESET,
122
      RB_MREQ     => RB_MREQ,
123
      RB_SRES     => RB_SRES_MON,
124
      RB_SRES_SUM => RB_SRES_TOP
125
    );
126
 
127
  EMON : rbd_eyemon
128
    generic map (
129
      RB_ADDR => rbaddr_emon,
130
      RDIV    => slv(to_unsigned(0,8)))
131
    port map (
132
      CLK         => CLK,
133
      RESET       => RESET,
134
      RB_MREQ     => RB_MREQ,
135
      RB_SRES     => RB_SRES_EMON,
136
      RXSD        => RXSD,
137
      RXACT       => RXACT
138
    );
139
 
140
  TIM0 : rbd_timer
141
    generic map (
142
      RB_ADDR => rbaddr_tim0)
143
    port map (
144
      CLK         => CLK,
145
      CE_USEC     => CE_USEC,
146
      RESET       => RESET,
147
      RB_MREQ     => RB_MREQ,
148
      RB_SRES     => RB_SRES_TIM0,
149
      DONE        => TIM0_DONE,
150
      BUSY        => TIM0_BUSY
151
    );
152
 
153
  TIM1 : rbd_timer
154
    generic map (
155
      RB_ADDR => rbaddr_tim1)
156
    port map (
157
      CLK         => CLK,
158
      CE_USEC     => CE_USEC,
159
      RESET       => RESET,
160
      RB_MREQ     => RB_MREQ,
161
      RB_SRES     => RB_SRES_TIM1,
162
      DONE        => TIM1_DONE,
163
      BUSY        => TIM1_BUSY
164
    );
165
 
166
  RB_SRES_OR1 : rb_sres_or_3
167
    port map (
168
      RB_SRES_1  => RB_SRES_TEST,
169
      RB_SRES_2  => RB_SRES_BRAM,
170
      RB_SRES_3  => RB_SRES_MON,
171
      RB_SRES_OR => RB_SRES_SUM1
172
    );
173
 
174
  RB_SRES_OR : rb_sres_or_4
175
    port map (
176
      RB_SRES_1  => RB_SRES_SUM1,
177
      RB_SRES_2  => RB_SRES_EMON,
178
      RB_SRES_3  => RB_SRES_TIM0,
179
      RB_SRES_4  => RB_SRES_TIM1,
180
      RB_SRES_OR => RB_SRES
181
    );
182
 
183
  RB_LAM(15 downto 2) <= RB_LAM_TEST(15 downto 2);
184
  RB_LAM(1)           <= TIM1_DONE;
185
  RB_LAM(0)           <= TIM0_DONE;
186
 
187
  STAT(0) <= TIM0_BUSY;
188
  STAT(1) <= TIM1_BUSY;
189
  STAT(7 downto 2) <= (others=>'0');
190
 
191
end syn;

powered by: WebSVN 2.1.0

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