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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.7/] [rtl/] [vlib/] [rlink/] [rlink_sp1c.vhd] - Blame information for rev 30

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 30 wfjm
-- $Id: rlink_sp1c.vhd 672 2015-05-02 21:58:28Z mueller $
2 16 wfjm
--
3 30 wfjm
-- Copyright 2011-2015 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
4 16 wfjm
--
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:    rlink_sp1c - syn
16
-- Description:    rlink_core8 + serport_1clock combo
17
--
18
-- Dependencies:   rlink_core8
19
--                 serport/serport_1clock
20 30 wfjm
--                 rbus/rbd_rbmon
21
--                 rbus/rb_sres_or_2
22 16 wfjm
--
23
-- Test bench:     -
24
--
25
-- Target Devices: generic
26 29 wfjm
-- Tool versions:  ise 13.1-14.7; viv 2014.4; ghdl 0.29-0.31
27 16 wfjm
--
28
-- Synthesized (xst):
29
-- Date         Rev  ise         Target      flop lutl lutm slic t peri ifa ofa
30 30 wfjm
-- 2015-05-02   672 14.7  131013 xc6slx16-2   495  671   56  255 s  8.8   -   -
31 16 wfjm
-- 2011-12-09   437 13.1    O40d xc3s1000-4   337  733   64  469 s  9.8   -   -
32
--
33
-- Revision History: 
34
-- Date         Rev Version  Comment
35 30 wfjm
-- 2015-05-02   672   4.2    add rbd_rbmon (optional via generics)
36
-- 2015-04-11   666   4.1    rename ENAESC->ESCFILL, rearrange XON handling
37 27 wfjm
-- 2014-08-28   588   4.0    use rlink v4 iface, 4 bit STAT
38 16 wfjm
-- 2011-12-09   437   1.0    Initial version 
39
------------------------------------------------------------------------------
40
 
41
library ieee;
42
use ieee.std_logic_1164.all;
43
use ieee.numeric_std.all;
44
 
45
use work.slvtypes.all;
46
use work.rblib.all;
47 30 wfjm
use work.rbdlib.all;
48 16 wfjm
use work.rlinklib.all;
49 19 wfjm
use work.serportlib.all;
50 16 wfjm
 
51
entity rlink_sp1c is                    -- rlink_core8+serport_1clock combo
52
  generic (
53 27 wfjm
    BTOWIDTH : positive :=  5;          -- rbus timeout counter width
54
    RTAWIDTH : positive :=  12;         -- retransmit buffer address width
55
    SYSID : slv32 := (others=>'0');     -- rlink system id
56 16 wfjm
    IFAWIDTH : natural :=  5;           -- input fifo address width  (0=none)
57
    OFAWIDTH : natural :=  5;           -- output fifo address width (0=none)
58 27 wfjm
    ENAPIN_RLMON : integer := -1;       -- SB_CNTL for rlmon  (-1=none)
59
    ENAPIN_RLBMON: integer := -1;       -- SB_CNTL for rlbmon (-1=none)
60
    ENAPIN_RBMON : integer := -1;       -- SB_CNTL for rbmon  (-1=none)
61 16 wfjm
    CDWIDTH : positive := 13;           -- clk divider width
62 30 wfjm
    CDINIT : natural   := 15;           -- clk divider initial/reset setting
63
    RBMON_AWIDTH : natural := 0;        -- rbmon: buffer size, (0=none)
64
    RBMON_RBADDR : slv16 := slv(to_unsigned(16#ffe8#,16))); -- rbmon: base addr
65 16 wfjm
  port (
66
    CLK  : in slbit;                    -- clock
67
    CE_USEC : in slbit;                 -- 1 usec clock enable
68
    CE_MSEC : in slbit;                 -- 1 msec clock enable
69 27 wfjm
    CE_INT : in slbit := '0';           -- rri ato time unit clock enable
70 16 wfjm
    RESET  : in slbit;                  -- reset
71
    ENAXON : in slbit;                  -- enable xon/xoff handling
72 30 wfjm
    ESCFILL : in slbit;                 -- enable fill escaping
73 16 wfjm
    RXSD : in slbit;                    -- receive serial data      (board view)
74
    TXSD : out slbit;                   -- transmit serial data     (board view)
75
    CTS_N : in slbit := '0';            -- clear to send   (act.low, board view)
76
    RTS_N : out slbit;                  -- request to send (act.low, board view)
77
    RB_MREQ : out rb_mreq_type;         -- rbus: request
78
    RB_SRES : in rb_sres_type;          -- rbus: response
79
    RB_LAM : in slv16;                  -- rbus: look at me
80 27 wfjm
    RB_STAT : in slv4;                  -- rbus: status flags
81 16 wfjm
    RL_MONI : out rl_moni_type;         -- rlink_core: monitor port
82
    SER_MONI : out serport_moni_type    -- serport: monitor port
83
  );
84
end entity rlink_sp1c;
85
 
86
 
87
architecture syn of rlink_sp1c is
88
 
89
  signal RLB_DI : slv8 := (others=>'0');
90
  signal RLB_ENA : slbit := '0';
91
  signal RLB_BUSY : slbit := '0';
92
  signal RLB_DO : slv8 := (others=>'0');
93
  signal RLB_VAL : slbit := '0';
94
  signal RLB_HOLD : slbit := '0';
95
 
96 30 wfjm
  signal RB_MREQ_M     : rb_mreq_type := rb_mreq_init;
97
  signal RB_SRES_M     : rb_sres_type := rb_sres_init;
98
  signal RB_SRES_RBMON : rb_sres_type := rb_sres_init;
99
 
100 16 wfjm
begin
101
 
102 30 wfjm
  CORE : rlink_core8                    -- rlink master ----------------------
103 16 wfjm
    generic map (
104 27 wfjm
      BTOWIDTH     => BTOWIDTH,
105
      RTAWIDTH     => RTAWIDTH,
106
      SYSID        => SYSID,
107 16 wfjm
      ENAPIN_RLMON => ENAPIN_RLMON,
108 27 wfjm
      ENAPIN_RLBMON=> ENAPIN_RLBMON,
109 16 wfjm
      ENAPIN_RBMON => ENAPIN_RBMON)
110
    port map (
111
      CLK        => CLK,
112
      CE_INT     => CE_INT,
113
      RESET      => RESET,
114 30 wfjm
      ESCXON     => ENAXON,
115
      ESCFILL    => ESCFILL,
116 16 wfjm
      RLB_DI     => RLB_DI,
117
      RLB_ENA    => RLB_ENA,
118
      RLB_BUSY   => RLB_BUSY,
119
      RLB_DO     => RLB_DO,
120
      RLB_VAL    => RLB_VAL,
121
      RLB_HOLD   => RLB_HOLD,
122
      RL_MONI    => RL_MONI,
123 30 wfjm
      RB_MREQ    => RB_MREQ_M,
124
      RB_SRES    => RB_SRES_M,
125 16 wfjm
      RB_LAM     => RB_LAM,
126
      RB_STAT    => RB_STAT
127
    );
128
 
129 30 wfjm
  SERPORT : serport_1clock              -- serport interface -----------------
130 16 wfjm
    generic map (
131
      CDWIDTH   => CDWIDTH,
132
      CDINIT    => CDINIT,
133
      RXFAWIDTH => IFAWIDTH,
134
      TXFAWIDTH => OFAWIDTH)
135
    port map (
136
      CLK      => CLK,
137
      CE_MSEC  => CE_MSEC,
138
      RESET    => RESET,
139
      ENAXON   => ENAXON,
140 30 wfjm
      ENAESC   => '0',                  -- escaping now in rlink_core8
141 16 wfjm
      RXDATA   => RLB_DI,
142
      RXVAL    => RLB_ENA,
143
      RXHOLD   => RLB_BUSY,
144
      TXDATA   => RLB_DO,
145
      TXENA    => RLB_VAL,
146
      TXBUSY   => RLB_HOLD,
147
      MONI     => SER_MONI,
148
      RXSD     => RXSD,
149
      TXSD     => TXSD,
150
      RXRTS_N  => RTS_N,
151
      TXCTS_N  => CTS_N
152
    );
153
 
154 30 wfjm
  RBMON : if RBMON_AWIDTH > 0 generate  -- rbus monitor --------------
155
  begin
156
    I0 : rbd_rbmon
157
      generic map (
158
        RB_ADDR => RBMON_RBADDR,
159
        AWIDTH  => RBMON_AWIDTH)
160
      port map (
161
        CLK         => CLK,
162
        RESET       => RESET,
163
        RB_MREQ     => RB_MREQ_M,
164
        RB_SRES     => RB_SRES_RBMON,
165
        RB_SRES_SUM => RB_SRES_M
166
      );
167
  end generate RBMON;
168
 
169
  RB_SRES_OR : rb_sres_or_2             -- rbus or ---------------------------
170
    port map (
171
      RB_SRES_1  => RB_SRES,
172
      RB_SRES_2  => RB_SRES_RBMON,
173
      RB_SRES_OR => RB_SRES_M
174
    );
175
 
176
  RB_MREQ         <= RB_MREQ_M;         -- setup output signals
177
 
178 16 wfjm
end syn;

powered by: WebSVN 2.1.0

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