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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.61/] [rtl/] [bplib/] [fx2rlink/] [rlink_sp1c_fx2.vhd] - Blame information for rev 26

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 22 wfjm
-- $Id: rlink_sp1c_fx2.vhd 525 2013-07-06 12:19:39Z mueller $
2 20 wfjm
--
3
-- Copyright 2013- 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:    rlink_sp1c_fx2 - syn
16
-- Description:    rlink_core8 + serport_1clock + fx2 combo
17
--
18
-- Dependencies:   rlinklib/rlink_core8
19
--                 serport/serport_1clock
20
--                 rlinklib/rlink_rlbmux
21
--                 fx2lib/fx2_2fifoctl_ic
22
--
23
-- Test bench:     -
24
--
25
-- Target Devices: generic
26
-- Tool versions:  xst 13.1; ghdl 0.29
27
--
28
-- Synthesized (xst):
29
-- Date         Rev  ise         Target      flop lutl lutm slic t peri ifa ofa
30
-- 2013-04-20   509 13.3    O76d xc3s1200e-4  441  903  128  637 s  8.7   -   -
31
--
32
-- Revision History: 
33
-- Date         Rev Version  Comment
34
-- 2013-04-20   509   1.0    Initial version (derived from rlink_sp1c)
35
------------------------------------------------------------------------------
36
 
37
library ieee;
38
use ieee.std_logic_1164.all;
39
use ieee.numeric_std.all;
40
 
41
use work.slvtypes.all;
42
use work.rblib.all;
43
use work.rlinklib.all;
44
use work.serportlib.all;
45
use work.fx2lib.all;
46
 
47
entity rlink_sp1c_fx2 is                -- rlink_core8+serport_1clk+fx2_ic combo
48
  generic (
49
    ATOWIDTH : positive :=  5;          -- access timeout counter width
50
    ITOWIDTH : positive :=  6;          -- idle timeout counter width
51
    CPREF : slv4 := c_rlink_cpref;      -- comma prefix
52
    IFAWIDTH : natural :=  5;           -- ser input fifo addr width  (0=none)
53
    OFAWIDTH : natural :=  5;           -- ser output fifo addr width (0=none)
54
    PETOWIDTH : positive := 10;         -- fx2 packet end time-out counter width
55
    CCWIDTH :   positive :=  5;         -- fx2 chunk counter width
56
    ENAPIN_RLMON : integer := sbcntl_sbf_rlmon;  -- SB_CNTL for rlmon (-1=none)
57
    ENAPIN_RBMON : integer := sbcntl_sbf_rbmon;  -- SB_CNTL for rbmon (-1=none)
58
    CDWIDTH : positive := 13;           -- clk divider width
59
    CDINIT : natural   := 15);          -- clk divider initial/reset setting
60
  port (
61
    CLK  : in slbit;                    -- clock
62
    CE_USEC : in slbit;                 -- 1 usec clock enable
63
    CE_MSEC : in slbit;                 -- 1 msec clock enable
64
    CE_INT : in slbit := '0';           -- rri ito time unit clock enable
65
    RESET  : in slbit;                  -- reset
66
    ENAXON : in slbit;                  -- enable xon/xoff handling
67
    ENAESC : in slbit;                  -- enable xon/xoff escaping
68
    ENAFX2 : in slbit;                  -- enable fx2 usage
69
    RXSD : in slbit;                    -- receive serial data      (board view)
70
    TXSD : out slbit;                   -- transmit serial data     (board view)
71
    CTS_N : in slbit := '0';            -- clear to send   (act.low, board view)
72
    RTS_N : out slbit;                  -- request to send (act.low, board view)
73
    RB_MREQ : out rb_mreq_type;         -- rbus: request
74
    RB_SRES : in rb_sres_type;          -- rbus: response
75
    RB_LAM : in slv16;                  -- rbus: look at me
76
    RB_STAT : in slv3;                  -- rbus: status flags
77
    RL_MONI : out rl_moni_type;         -- rlink_core: monitor port
78
    RLB_MONI : out rlb_moni_type;       -- rlink 8b: monitor port
79
    SER_MONI : out serport_moni_type;   -- ser: monitor port
80
    FX2_MONI : out fx2ctl_moni_type;    -- fx2: monitor port
81
    I_FX2_IFCLK : in slbit;             -- fx2: interface clock
82
    O_FX2_FIFO : out slv2;              -- fx2: fifo address
83
    I_FX2_FLAG : in slv4;               -- fx2: fifo flags
84
    O_FX2_SLRD_N : out slbit;           -- fx2: read enable    (act.low)
85
    O_FX2_SLWR_N : out slbit;           -- fx2: write enable   (act.low)
86
    O_FX2_SLOE_N : out slbit;           -- fx2: output enable  (act.low)
87
    O_FX2_PKTEND_N : out slbit;         -- fx2: packet end     (act.low)
88
    IO_FX2_DATA : inout slv8            -- fx2: data lines
89
  );
90
end entity rlink_sp1c_fx2;
91
 
92
 
93
architecture syn of rlink_sp1c_fx2 is
94
 
95
  signal RLB_DI : slv8 := (others=>'0');
96
  signal RLB_ENA : slbit := '0';
97
  signal RLB_BUSY : slbit := '0';
98
  signal RLB_DO : slv8 := (others=>'0');
99
  signal RLB_VAL : slbit := '0';
100
  signal RLB_HOLD : slbit := '0';
101
 
102
  signal SER_RXDATA : slv8 := (others=>'0');
103
  signal SER_RXVAL  : slbit := '0';
104
  signal SER_RXHOLD : slbit := '0';
105
  signal SER_TXDATA : slv8 := (others=>'0');
106
  signal SER_TXENA  : slbit := '0';
107
  signal SER_TXBUSY : slbit := '0';
108
 
109
  signal FX2_RXDATA   : slv8 := (others=>'0');
110
  signal FX2_RXVAL    : slbit := '0';
111
  signal FX2_RXHOLD   : slbit := '0';
112
  signal FX2_RXAEMPTY : slbit := '0';
113
  signal FX2_TXDATA   : slv8 := (others=>'0');
114
  signal FX2_TXENA    : slbit := '0';
115
  signal FX2_TXBUSY   : slbit := '0';
116
  signal FX2_TXAFULL  : slbit := '0';
117
 
118
begin
119
 
120
  CORE : rlink_core8
121
    generic map (
122
      ATOWIDTH     => ATOWIDTH,
123
      ITOWIDTH     => ITOWIDTH,
124
      CPREF        => CPREF,
125
      ENAPIN_RLMON => ENAPIN_RLMON,
126
      ENAPIN_RBMON => ENAPIN_RBMON)
127
    port map (
128
      CLK        => CLK,
129
      CE_INT     => CE_INT,
130
      RESET      => RESET,
131
      RLB_DI     => RLB_DI,
132
      RLB_ENA    => RLB_ENA,
133
      RLB_BUSY   => RLB_BUSY,
134
      RLB_DO     => RLB_DO,
135
      RLB_VAL    => RLB_VAL,
136
      RLB_HOLD   => RLB_HOLD,
137
      RL_MONI    => RL_MONI,
138
      RB_MREQ    => RB_MREQ,
139
      RB_SRES    => RB_SRES,
140
      RB_LAM     => RB_LAM,
141
      RB_STAT    => RB_STAT
142
    );
143
 
144
  SERPORT : serport_1clock
145
    generic map (
146
      CDWIDTH   => CDWIDTH,
147
      CDINIT    => CDINIT,
148
      RXFAWIDTH => IFAWIDTH,
149
      TXFAWIDTH => OFAWIDTH)
150
    port map (
151
      CLK      => CLK,
152
      CE_MSEC  => CE_MSEC,
153
      RESET    => RESET,
154
      ENAXON   => ENAXON,
155
      ENAESC   => ENAESC,
156
      RXDATA   => SER_RXDATA,
157
      RXVAL    => SER_RXVAL,
158
      RXHOLD   => SER_RXHOLD,
159
      TXDATA   => SER_TXDATA,
160
      TXENA    => SER_TXENA,
161
      TXBUSY   => SER_TXBUSY,
162
      MONI     => SER_MONI,
163
      RXSD     => RXSD,
164
      TXSD     => TXSD,
165
      RXRTS_N  => RTS_N,
166
      TXCTS_N  => CTS_N
167
    );
168
 
169
  RLBMUX : rlink_rlbmux
170
    port map (
171
      SEL       => ENAFX2,
172
      RLB_DI    => RLB_DI,
173
      RLB_ENA   => RLB_ENA,
174
      RLB_BUSY  => RLB_BUSY,
175
      RLB_DO    => RLB_DO,
176
      RLB_VAL   => RLB_VAL,
177
      RLB_HOLD  => RLB_HOLD,
178
      P0_RXDATA => SER_RXDATA,
179
      P0_RXVAL  => SER_RXVAL,
180
      P0_RXHOLD => SER_RXHOLD,
181
      P0_TXDATA => SER_TXDATA,
182
      P0_TXENA  => SER_TXENA,
183
      P0_TXBUSY => SER_TXBUSY,
184
      P1_RXDATA => FX2_RXDATA,
185
      P1_RXVAL  => FX2_RXVAL,
186
      P1_RXHOLD => FX2_RXHOLD,
187
      P1_TXDATA => FX2_TXDATA,
188
      P1_TXENA  => FX2_TXENA,
189
      P1_TXBUSY => FX2_TXBUSY
190
    );
191
 
192
  FX2CNTL : fx2_2fifoctl_ic
193
    generic map (
194
      RXFAWIDTH  => 5,
195
      TXFAWIDTH  => 5,
196
      PETOWIDTH  => PETOWIDTH,
197
      CCWIDTH    => CCWIDTH,
198
      RXAEMPTY_THRES => 1,
199
      TXAFULL_THRES  => 1)
200
    port map (
201
      CLK      => CLK,
202
      RESET    => RESET,
203
      RXDATA   => FX2_RXDATA,
204
      RXVAL    => FX2_RXVAL,
205
      RXHOLD   => FX2_RXHOLD,
206
      RXAEMPTY => FX2_RXAEMPTY,
207
      TXDATA   => FX2_TXDATA,
208
      TXENA    => FX2_TXENA,
209
      TXBUSY   => FX2_TXBUSY,
210
      TXAFULL  => FX2_TXAFULL,
211
      MONI           => FX2_MONI,
212
      I_FX2_IFCLK    => I_FX2_IFCLK,
213
      O_FX2_FIFO     => O_FX2_FIFO,
214
      I_FX2_FLAG     => I_FX2_FLAG,
215
      O_FX2_SLRD_N   => O_FX2_SLRD_N,
216
      O_FX2_SLWR_N   => O_FX2_SLWR_N,
217
      O_FX2_SLOE_N   => O_FX2_SLOE_N,
218
      O_FX2_PKTEND_N => O_FX2_PKTEND_N,
219
      IO_FX2_DATA    => IO_FX2_DATA
220
    );
221
 
222
  RLB_MONI.rxval  <= RLB_VAL;
223
  RLB_MONI.rxhold <= RLB_HOLD;
224
  RLB_MONI.txena  <= RLB_ENA;
225
  RLB_MONI.txbusy <= RLB_BUSY;
226
 
227
end syn;

powered by: WebSVN 2.1.0

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