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

Subversion Repositories pcie_sg_dma

[/] [pcie_sg_dma/] [branches/] [Virtex6/] [ML605_ISE12.3/] [v6eb_pcie.vhd] - Blame information for rev 11

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 11 barabba
----------------------------------------------------------------------------------
2
-- Company: 
3
-- Engineer: 
4
-- 
5
-- Create Date:    09:12:51 01 Feb 2010
6
-- Design Name: 
7
-- Module Name:    v6pcieDMA - Behavioral 
8
-- Project Name: 
9
-- Target Devices: 
10
-- Tool versions: 
11
-- Description: 
12
--
13
-- Dependencies: 
14
--
15
-- Revision: 
16
-- 
17
-- Revision 1.00 - File Released
18
-- 
19
-- Additional Comments: 
20
--
21
----------------------------------------------------------------------------------
22
library IEEE;
23
use IEEE.STD_LOGIC_1164.ALL;
24
use IEEE.STD_LOGIC_ARITH.ALL;
25
use IEEE.STD_LOGIC_UNSIGNED.ALL;
26
 
27
library work;
28
use work.abb64Package.all;
29
 
30
---- Uncomment the following library declaration if instantiating
31
---- any Xilinx primitives in this code.
32
library UNISIM;
33
use UNISIM.VComponents.all;
34
 
35
entity v6pcieDMA is
36
    generic (
37
          constant pcieLanes            : integer     := C_NUM_PCIE_LANES
38
          );
39
    Port (
40
 
41
                         userclk_66MHz                                   : IN std_logic;    --66  MHz USER Socket SingleEnded
42
                         userclk_200MHz_n              : IN std_logic;    --200 MHz USER Socket LVDS N
43
                         userclk_200MHz_p              : IN std_logic;    --200 MHz USER Socket LVDS P
44
 
45
          -- DPR blinker
46
          LEDs_IO_pin                   : OUT   std_logic_vector(7 downto 0);
47
 
48
 
49
          -- PCIe transceivers
50
          pci_exp_rxp                   : IN    std_logic_vector(pcieLanes - 1 downto 0);
51
          pci_exp_rxn                   : IN    std_logic_vector(pcieLanes - 1 downto 0);
52
          pci_exp_txp                   : OUT   std_logic_vector(pcieLanes - 1 downto 0);
53
          pci_exp_txn                   : OUT   std_logic_vector(pcieLanes - 1 downto 0);
54
 
55
          -- Necessity signals
56
          sys_clk_p                     : IN    std_logic; --125 MHz PCIe Clock
57
          sys_clk_n                     : IN    std_logic; --125 MHz PCIe Clock
58
          sys_reset_n                   : IN    std_logic  --Reset
59
          );
60
 
61
end entity v6pcieDMA;
62
 
63
 
64
architecture Behavioral of v6pcieDMA is
65
 
66
 
67
 component PCIe_UserLogic_00
68
  port (
69
    bram_rd_dout: in std_logic_vector(63 downto 0);
70
    debug_in_1i: in std_logic_vector(31 downto 0);
71
    debug_in_2i: in std_logic_vector(31 downto 0);
72
    debug_in_3i: in std_logic_vector(31 downto 0);
73
    debug_in_4i: in std_logic_vector(31 downto 0);
74
    dma_host2board_busy: in std_logic;
75
    dma_host2board_done: in std_logic;
76
    fifo_rd_count: in std_logic_vector(14 downto 0);
77
    fifo_wr_count: in std_logic_vector(14 downto 0);
78
    fifo_rd_dout: in std_logic_vector(71 downto 0);
79
    fifo_rd_empty: in std_logic;
80
    fifo_rd_pempty: in std_logic;
81
    fifo_wr_full: in std_logic;
82
    fifo_wr_pfull: in std_logic;
83
    fifo_rd_valid: in std_logic;
84
    inout_logic_cw_ce: in std_logic := '1';
85
    inout_logic_cw_clk: in std_logic;
86
    reg01_td: in std_logic_vector(31 downto 0);
87
    reg01_tv: in std_logic;
88
    reg02_td: in std_logic_vector(31 downto 0);
89
    reg02_tv: in std_logic;
90
    reg03_td: in std_logic_vector(31 downto 0);
91
    reg03_tv: in std_logic;
92
    reg04_td: in std_logic_vector(31 downto 0);
93
    reg04_tv: in std_logic;
94
    reg05_td: in std_logic_vector(31 downto 0);
95
    reg05_tv: in std_logic;
96
    reg06_td: in std_logic_vector(31 downto 0);
97
    reg06_tv: in std_logic;
98
    reg07_td: in std_logic_vector(31 downto 0);
99
    reg07_tv: in std_logic;
100
    reg08_td: in std_logic_vector(31 downto 0);
101
    reg08_tv: in std_logic;
102
    reg09_td: in std_logic_vector(31 downto 0);
103
    reg09_tv: in std_logic;
104
    reg10_td: in std_logic_vector(31 downto 0);
105
    reg10_tv: in std_logic;
106
    reg11_td: in std_logic_vector(31 downto 0);
107
    reg11_tv: in std_logic;
108
    reg12_td: in std_logic_vector(31 downto 0);
109
    reg12_tv: in std_logic;
110
    reg13_td: in std_logic_vector(31 downto 0);
111
    reg13_tv: in std_logic;
112
    reg14_td: in std_logic_vector(31 downto 0);
113
    reg14_tv: in std_logic;
114
    rst_i: in std_logic;
115
    user_logic_cw_ce: in std_logic := '1';
116
    user_logic_cw_clk: in std_logic;
117
    bram_rd_addr: out std_logic_vector(11 downto 0);
118
    bram_wr_addr: out std_logic_vector(11 downto 0);
119
    bram_wr_din: out std_logic_vector(63 downto 0);
120
    bram_wr_en: out std_logic_vector(7 downto 0);
121
    fifo_rd_en: out std_logic;
122
    fifo_wr_din: out std_logic_vector(71 downto 0);
123
    fifo_wr_en: out std_logic;
124
    reg01_rd: out std_logic_vector(31 downto 0);
125
    reg01_rv: out std_logic;
126
    reg02_rd: out std_logic_vector(31 downto 0);
127
    reg02_rv: out std_logic;
128
    reg03_rd: out std_logic_vector(31 downto 0);
129
    reg03_rv: out std_logic;
130
    reg04_rd: out std_logic_vector(31 downto 0);
131
    reg04_rv: out std_logic;
132
    reg05_rd: out std_logic_vector(31 downto 0);
133
    reg05_rv: out std_logic;
134
    reg06_rd: out std_logic_vector(31 downto 0);
135
    reg06_rv: out std_logic;
136
    reg07_rd: out std_logic_vector(31 downto 0);
137
    reg07_rv: out std_logic;
138
    reg08_rd: out std_logic_vector(31 downto 0);
139
    reg08_rv: out std_logic;
140
    reg09_rd: out std_logic_vector(31 downto 0);
141
    reg09_rv: out std_logic;
142
    reg10_rd: out std_logic_vector(31 downto 0);
143
    reg10_rv: out std_logic;
144
    reg11_rd: out std_logic_vector(31 downto 0);
145
    reg11_rv: out std_logic;
146
    reg12_rd: out std_logic_vector(31 downto 0);
147
    reg12_rv: out std_logic;
148
    reg13_rd: out std_logic_vector(31 downto 0);
149
    reg13_rv: out std_logic;
150
    reg14_rd: out std_logic_vector(31 downto 0);
151
    reg14_rv: out std_logic;
152
    rst_o: out std_logic;
153
    user_int_1o: out std_logic;
154
    user_int_2o: out std_logic;
155
    user_int_3o: out std_logic
156
  );
157
end component;
158
 
159
 
160
-- -----------------------------------------------------------------------
161
--- COMPONENT Declaration: v6_pcie_v1_6 x4                                                                        ---
162
--- OSS: Ricordarsi di matchare POWER_SAVE - VENDOR_ID e DEVICE_ID     ---
163
--- OSS: For POWER_SAVE error correct bit[4] and install ISE12 Patch!! ---
164
-- -----------------------------------------------------------------------
165
 
166
--S component v6_pcie_v1_3
167
--S component v6_pcie_v1_6_x1
168
--S component v6_pcie_v1_6_x8
169
 component v6_pcie_v1_6
170
   generic (
171
         PL_FAST_TRAIN  : boolean
172
         );
173
   port (
174
    ---------------------------------------------------------
175
    -- 1. PCI Express (pci_exp) Interface
176
    ---------------------------------------------------------
177
 
178
    -- Tx
179
    pci_exp_txn                    : out STD_LOGIC_VECTOR ( pcieLanes - 1 downto 0 );
180
    pci_exp_txp                    : out STD_LOGIC_VECTOR ( pcieLanes - 1 downto 0 );
181
 
182
    -- Rx
183
    pci_exp_rxn                    : in  STD_LOGIC_VECTOR ( pcieLanes - 1 downto 0 );
184
    pci_exp_rxp                    : in  STD_LOGIC_VECTOR ( pcieLanes - 1 downto 0 );
185
 
186
    ---------------------------------------------------------
187
    -- 2. Transaction (TRN) Interface
188
    ---------------------------------------------------------
189
 
190
    -- Common
191
    trn_clk                        : out STD_LOGIC;
192
    trn_reset_n                    : out STD_LOGIC;
193
    trn_lnk_up_n                   : out STD_LOGIC;
194
 
195
    -- Tx                      
196
    trn_tsof_n                     : in  STD_LOGIC;
197
    trn_teof_n                     : in  STD_LOGIC;
198
    trn_td                         : in  STD_LOGIC_vector (64-1 downto 0);
199
    trn_trem_n                     : in  STD_LOGIC;
200
    trn_tsrc_rdy_n                 : in  STD_LOGIC;
201
    trn_tsrc_dsc_n                 : in  STD_LOGIC;
202
    trn_tbuf_av                    : out STD_LOGIC_vector (6-1 downto 0);
203
    trn_terrfwd_n                  : in  STD_LOGIC;
204
 
205
    trn_tcfg_req_n                 : out STD_LOGIC;
206
    trn_terr_drop_n                : out STD_LOGIC;
207
    trn_tdst_rdy_n                 : out STD_LOGIC;
208
    trn_tcfg_gnt_n                 : in  STD_LOGIC;
209
    trn_tstr_n                     : in  STD_LOGIC;
210
 
211
    -- Rx                      
212
    trn_rd                         : out STD_LOGIC_vector (64-1 downto 0);
213
    trn_rrem_n                     : out STD_LOGIC;
214
    trn_rsof_n                     : out STD_LOGIC;
215
    trn_reof_n                     : out STD_LOGIC;
216
    trn_rsrc_rdy_n                 : out STD_LOGIC;
217
    trn_rsrc_dsc_n                 : out STD_LOGIC;
218
    trn_rerrfwd_n                  : out STD_LOGIC;
219
    trn_rbar_hit_n                 : out STD_LOGIC_vector (7-1 downto 0);
220
    trn_rdst_rdy_n                 : in  STD_LOGIC;
221
    trn_rnp_ok_n                   : in  STD_LOGIC;
222
 
223
    -- Flow Control            
224
    trn_fc_cpld                    : out STD_LOGIC_vector (12-1 downto 0);
225
    trn_fc_cplh                    : out STD_LOGIC_vector (8-1 downto 0);
226
    trn_fc_npd                     : out STD_LOGIC_vector (12-1 downto 0);
227
    trn_fc_nph                     : out STD_LOGIC_vector (8-1 downto 0);
228
    trn_fc_pd                      : out STD_LOGIC_vector (12-1 downto 0);
229
    trn_fc_ph                      : out STD_LOGIC_vector (8-1 downto 0);
230
    trn_fc_sel                     : in  STD_LOGIC_vector (3-1 downto 0);
231
 
232
 
233
    ---------------------------------------------------------
234
    -- 3. Configuration (CFG) Interface
235
    ---------------------------------------------------------
236
 
237
    cfg_do                         : out STD_LOGIC_vector (32-1 downto 0);
238
    cfg_rd_wr_done_n               : out STD_LOGIC;
239
    cfg_di                         : in  STD_LOGIC_vector (32-1 downto 0);
240
    cfg_byte_en_n                  : in  STD_LOGIC_vector (4-1 downto 0);
241
    cfg_dwaddr                     : in  STD_LOGIC_vector (10-1 downto 0);
242
    cfg_wr_en_n                    : in  STD_LOGIC;
243
    cfg_rd_en_n                    : in  STD_LOGIC;
244
 
245
    cfg_err_cor_n                  : in  STD_LOGIC;
246
    cfg_err_ur_n                   : in  STD_LOGIC;
247
    cfg_err_ecrc_n                 : in  STD_LOGIC;
248
    cfg_err_cpl_timeout_n          : in  STD_LOGIC;
249
    cfg_err_cpl_abort_n            : in  STD_LOGIC;
250
    cfg_err_cpl_unexpect_n         : in  STD_LOGIC;
251
    cfg_err_posted_n               : in  STD_LOGIC;
252
    cfg_err_locked_n               : in  STD_LOGIC;
253
    cfg_err_tlp_cpl_header         : in  STD_LOGIC_vector (48-1 downto 0);
254
    cfg_err_cpl_rdy_n              : out STD_LOGIC;
255
    cfg_interrupt_n                : in  STD_LOGIC;
256
    cfg_interrupt_rdy_n            : out STD_LOGIC;
257
    cfg_interrupt_assert_n         : in  STD_LOGIC;
258
    cfg_interrupt_di               : in  STD_LOGIC_vector (8-1 downto 0);
259
    cfg_interrupt_do               : out STD_LOGIC_vector (8-1 downto 0);
260
    cfg_interrupt_mmenable         : out STD_LOGIC_vector (3-1 downto 0);
261
    cfg_interrupt_msienable        : out STD_LOGIC;
262
    cfg_interrupt_msixenable       : out STD_LOGIC;
263
    cfg_interrupt_msixfm           : out STD_LOGIC;
264
    cfg_turnoff_ok_n               : in  STD_LOGIC;
265
    cfg_to_turnoff_n               : out STD_LOGIC;
266
    cfg_trn_pending_n              : in  STD_LOGIC;
267
    cfg_pm_wake_n                  : in  STD_LOGIC;
268
    cfg_bus_number                 : out STD_LOGIC_vector (8-1 downto 0);
269
    cfg_device_number              : out STD_LOGIC_vector (5-1 downto 0);
270
    cfg_function_number            : out STD_LOGIC_vector (3-1 downto 0);
271
    cfg_status                     : out STD_LOGIC_vector (16-1 downto 0);
272
    cfg_command                    : out STD_LOGIC_vector (16-1 downto 0);
273
    cfg_dstatus                    : out STD_LOGIC_vector (16-1 downto 0);
274
    cfg_dcommand                   : out STD_LOGIC_vector (16-1 downto 0);
275
    cfg_lstatus                    : out STD_LOGIC_vector (16-1 downto 0);
276
    cfg_lcommand                   : out STD_LOGIC_vector (16-1 downto 0);
277
    cfg_dcommand2                  : out STD_LOGIC_vector (16-1 downto 0);
278
    cfg_pcie_link_state_n          : out STD_LOGIC_vector (3-1 downto 0);
279
    cfg_dsn                        : in  STD_LOGIC_vector (64-1 downto 0);
280
    cfg_pmcsr_pme_en               : out STD_LOGIC;
281
    cfg_pmcsr_pme_status           : out STD_LOGIC;
282
    cfg_pmcsr_powerstate           : out STD_LOGIC_vector (2-1 downto 0);
283
--S v1.3 --> 1.6    lnk_clk_en     : out STD_LOGIC; 
284
--       lnk_clk_en                                               : out STD_LOGIC; 
285
 
286
    ---------------------------------------------------------
287
    -- 4. Physical Layer Control and Status (PL) Interface
288
    ---------------------------------------------------------
289
 
290
    pl_initial_link_width          : out STD_LOGIC_vector (3-1 downto 0);
291
    pl_lane_reversal_mode          : out STD_LOGIC_vector (2-1 downto 0);
292
    pl_link_gen2_capable           : out STD_LOGIC;
293
    pl_link_partner_gen2_supported : out STD_LOGIC;
294
    pl_link_upcfg_capable          : out STD_LOGIC;
295
    pl_ltssm_state                 : out STD_LOGIC_vector (6-1 downto 0);
296
    pl_received_hot_rst            : out STD_LOGIC;
297
    pl_sel_link_rate               : out STD_LOGIC;
298
    pl_sel_link_width              : out STD_LOGIC_vector (2-1 downto 0);
299
    pl_directed_link_auton         : in  STD_LOGIC;
300
    pl_directed_link_change        : in  STD_LOGIC_vector (2-1 downto 0);
301
    pl_directed_link_speed         : in  STD_LOGIC;
302
    pl_directed_link_width         : in  STD_LOGIC_vector (2-1 downto 0);
303
    pl_upstream_prefer_deemph      : in  STD_LOGIC;
304
 
305
 
306
    ---------------------------------------------------------
307
    -- 5. System  (SYS) Interface
308
    ---------------------------------------------------------
309
 
310
    sys_clk                        : in  STD_LOGIC;
311
    sys_reset_n                    : in  STD_LOGIC
312
  );
313
 end component;
314
 
315
 
316
 
317
 
318
 
319
     signal fifo_reset_done              : std_logic;
320
     signal pio_reading_status           : std_logic;
321
 
322
 
323
-- -----------------------------------------------------------------------
324
--  DDR SDRAM control module
325
-- -----------------------------------------------------------------------
326
 
327
   COMPONENT bram_DDRs_Control_loopback
328
   GENERIC (
329
             C_ASYNFIFO_WIDTH  :  integer ;
330
             P_SIMULATION      :  boolean
331
            );
332
   PORT (
333
 
334
      DDR_wr_sof               : IN    std_logic;
335
      DDR_wr_eof               : IN    std_logic;
336
      DDR_wr_v                 : IN    std_logic;
337
      DDR_wr_FA                : IN    std_logic;
338
      DDR_wr_Shift             : IN    std_logic;
339
      DDR_wr_Mask              : IN    std_logic_vector(2-1 downto 0);
340
      DDR_wr_din               : IN    std_logic_vector(C_DBUS_WIDTH-1 downto 0);
341
      DDR_wr_full              : OUT   std_logic;
342
 
343
      DDR_rdc_sof              : IN    std_logic;
344
      DDR_rdc_eof              : IN    std_logic;
345
      DDR_rdc_v                : IN    std_logic;
346
      DDR_rdc_FA               : IN    std_logic;
347
      DDR_rdc_Shift            : IN    std_logic;
348
      DDR_rdc_din              : IN    std_logic_vector(C_DBUS_WIDTH-1 downto 0);
349
      DDR_rdc_full             : OUT   std_logic;
350
 
351
      -- DDR payload FIFO Read Port
352
      DDR_FIFO_RdEn            : IN    std_logic;
353
      DDR_FIFO_Empty           : OUT   std_logic;
354
      DDR_FIFO_RdQout          : OUT   std_logic_vector(C_DBUS_WIDTH-1 downto 0);
355
 
356
      -- Common interface
357
      DDR_Ready                : OUT   std_logic;
358
      DDR_Blinker              : OUT   std_logic;
359
      mem_clk                  : IN    std_logic;
360
      trn_clk                  : IN    std_logic;
361
                Sim_Zeichen              : OUT   std_logic;
362
      trn_reset_n              : IN    std_logic
363
    );
364
   END COMPONENT;
365
 
366
 
367
   COMPONENT bram_DDRs_Control
368
   GENERIC (
369
             C_ASYNFIFO_WIDTH  :  integer ;
370
             P_SIMULATION      :  boolean
371
            );
372
   PORT (
373
 
374
                --USER Logic Interface
375
                user_wr_weA              : IN    std_logic_vector(7 downto 0);
376
                user_wr_addrA            : IN    std_logic_vector(C_PRAM_AWIDTH-1 downto 0);
377
                user_wr_dinA             : IN    std_logic_vector(C_DBUS_WIDTH-1 downto 0);
378
                user_rd_addrB            : IN    std_logic_vector(C_PRAM_AWIDTH-1 downto 0);
379
                user_rd_doutB            : OUT   std_logic_vector(C_DBUS_WIDTH-1 downto 0);
380
                user_rd_clk              : IN    std_logic;
381
                user_wr_clk              : IN    std_logic;
382
 
383
      -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
384
      DDR_wr_sof               : IN    std_logic;
385
      DDR_wr_eof               : IN    std_logic;
386
      DDR_wr_v                 : IN    std_logic;
387
      DDR_wr_FA                : IN    std_logic;
388
      DDR_wr_Shift             : IN    std_logic;
389
      DDR_wr_Mask              : IN    std_logic_vector(2-1 downto 0);
390
      DDR_wr_din               : IN    std_logic_vector(C_DBUS_WIDTH-1 downto 0);
391
      DDR_wr_full              : OUT   std_logic;
392
 
393
      DDR_rdc_sof              : IN    std_logic;
394
      DDR_rdc_eof              : IN    std_logic;
395
      DDR_rdc_v                : IN    std_logic;
396
      DDR_rdc_FA               : IN    std_logic;
397
      DDR_rdc_Shift            : IN    std_logic;
398
      DDR_rdc_din              : IN    std_logic_vector(C_DBUS_WIDTH-1 downto 0);
399
      DDR_rdc_full             : OUT   std_logic;
400
 
401
      -- DDR payload FIFO Read Port
402
      DDR_FIFO_RdEn            : IN    std_logic;
403
      DDR_FIFO_Empty           : OUT   std_logic;
404
      DDR_FIFO_RdQout          : OUT   std_logic_vector(C_DBUS_WIDTH-1 downto 0);
405
 
406
      -- Common interface
407
      DDR_Ready                : OUT   std_logic;
408
      DDR_Blinker              : OUT   std_logic;
409
      mem_clk                  : IN    std_logic;
410
      trn_clk                  : IN    std_logic;
411
                Sim_Zeichen              : OUT   std_logic;
412
      trn_reset_n              : IN    std_logic
413
    );
414
   END COMPONENT;
415
 
416
 
417
   signal    DDR_wr_sof               :  std_logic;
418
   signal    DDR_wr_eof               :  std_logic;
419
   signal    DDR_wr_v                 :  std_logic;
420
   signal    DDR_wr_FA                :  std_logic;
421
   signal    DDR_wr_Shift             :  std_logic;
422
   signal    DDR_wr_Mask              :  std_logic_vector(2-1 downto 0);
423
   signal    DDR_wr_din               :  std_logic_vector(C_DBUS_WIDTH-1 downto 0);
424
   signal    DDR_wr_full              :  std_logic;
425
 
426
   signal    DDR_rdc_sof              :  std_logic;
427
   signal    DDR_rdc_eof              :  std_logic;
428
   signal    DDR_rdc_v                :  std_logic;
429
   signal    DDR_rdc_FA               :  std_logic;
430
   signal    DDR_rdc_Shift            :  std_logic;
431
   signal    DDR_rdc_din              :  std_logic_vector(C_DBUS_WIDTH-1 downto 0);
432
   signal    DDR_rdc_full             :  std_logic;
433
 
434
   signal    DDR_FIFO_RdEn            :  std_logic;
435
   signal    DDR_FIFO_Empty           :  std_logic;
436
   signal    DDR_FIFO_RdQout          :  std_logic_vector(C_DBUS_WIDTH-1 downto 0);
437
 
438
   signal    DDR_Ready                :  std_logic;
439
   signal    DDR_Blinker              :  std_logic;
440
 
441
        signal  user_wr_weA              : std_logic_vector(7 downto 0) := (Others =>'0');
442
        signal  user_wr_addrA            : std_logic_vector(C_PRAM_AWIDTH-1 downto 0) := (Others =>'0');
443
        signal  user_wr_dinA             : std_logic_vector(C_DBUS_WIDTH-1 downto 0)  := (Others =>'0');
444
        signal  user_rd_addrB            : std_logic_vector(C_PRAM_AWIDTH-1 downto 0) := (Others =>'0');
445
        signal  user_rd_doutB            : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
446
 
447
 
448
   -- -----------------------------------------------------------------------
449
   -- FIFO module
450
   -- -----------------------------------------------------------------------
451
 
452
 
453
   component eb_wrapper_loopback
454
     port (
455
           wr_clk      : IN  std_logic;
456
           wr_en       : IN  std_logic;
457
           din         : IN  std_logic_VECTOR(72-1 downto 0);
458
           pfull       : OUT std_logic;
459
           full        : OUT std_logic;
460
 
461
           rd_clk      : IN  std_logic;
462
           rd_en       : IN  std_logic;
463
           dout        : OUT std_logic_VECTOR(72-1 downto 0);
464
           pempty      : OUT std_logic;
465
           empty       : OUT std_logic;
466
 
467
           data_count  : OUT std_logic_VECTOR(C_EMU_FIFO_DC_WIDTH-1 downto 0);
468
           rst         : IN  std_logic
469
           );
470
   end component;
471
 
472
 
473
   component eb_wrapper
474
     port (
475
                         --FIFO PCIe-->USER
476
                         H2B_wr_clk        : IN  std_logic;
477
          H2B_wr_en         : IN  std_logic;
478
          H2B_wr_din        : IN  std_logic_VECTOR(72-1 downto 0);
479
          H2B_wr_pfull      : OUT std_logic;
480
          H2B_wr_full       : OUT std_logic;
481
          H2B_wr_data_count : OUT std_logic_VECTOR(C_EMU_FIFO_DC_WIDTH-1 downto 0);
482
          H2B_rd_clk        : IN  std_logic;
483
          H2B_rd_en         : IN  std_logic;
484
          H2B_rd_dout       : OUT std_logic_VECTOR(72-1 downto 0);
485
          H2B_rd_pempty     : OUT std_logic;
486
          H2B_rd_empty      : OUT std_logic;
487
          H2B_rd_data_count : OUT std_logic_VECTOR(C_EMU_FIFO_DC_WIDTH-1 downto 0);
488
                         H2B_rd_valid      : OUT std_logic;
489
                         --FIFO USER-->PCIe
490
          B2H_wr_clk        : IN  std_logic;
491
          B2H_wr_en         : IN  std_logic;
492
          B2H_wr_din        : IN  std_logic_VECTOR(72-1 downto 0);
493
          B2H_wr_pfull      : OUT std_logic;
494
          B2H_wr_full       : OUT std_logic;
495
          B2H_wr_data_count : OUT std_logic_VECTOR(C_EMU_FIFO_DC_WIDTH-1 downto 0);
496
          B2H_rd_clk        : IN  std_logic;
497
          B2H_rd_en         : IN  std_logic;
498
          B2H_rd_dout       : OUT std_logic_VECTOR(72-1 downto 0);
499
          B2H_rd_pempty     : OUT std_logic;
500
          B2H_rd_empty      : OUT std_logic;
501
          B2H_rd_data_count : OUT std_logic_VECTOR(C_EMU_FIFO_DC_WIDTH-1 downto 0);
502
                         B2H_rd_valid            : OUT std_logic;
503
          --RESET from PCIe
504
                         rst               : IN  std_logic
505
          );
506
   end component;
507
 
508
 
509
   signal  eb_wclk            :  std_logic;
510
   signal  eb_we              :  std_logic;
511
   signal  eb_wsof            :  std_logic;
512
   signal  eb_weof            :  std_logic;
513
   signal  eb_din             :  std_logic_VECTOR(72-1 downto 0);
514
   signal  eb_pfull           :  std_logic;
515
   signal  eb_full            :  std_logic;
516
   signal  eb_rclk            :  std_logic;
517
   signal  eb_re              :  std_logic;
518
   signal  eb_dout            :  std_logic_VECTOR(72-1 downto 0);
519
   signal  eb_pempty          :  std_logic;
520
   signal  eb_empty           :  std_logic;
521
   signal  eb_valid           :  std_logic;
522
   signal  eb_rst             :  std_logic;
523
 
524
   signal  eb_data_count      :  std_logic_vector(C_FIFO_DC_WIDTH downto 0);
525
   signal  H2B_wr_data_count  :  std_logic_vector(C_FIFO_DC_WIDTH downto 0);
526
   signal  B2H_rd_data_count  :  std_logic_vector(C_FIFO_DC_WIDTH downto 0);
527
 
528
 
529
   signal  pio_read_status    :  std_logic;
530
   signal  eb_FIFO_ow         :  std_logic;
531
 
532
   signal  eb_FIFO_Status     :  std_logic_VECTOR(C_DBUS_WIDTH-1 downto 0);
533
   signal  H2B_FIFO_Status    :  std_logic_VECTOR(C_DBUS_WIDTH-1 downto 0);
534
   signal  B2H_FIFO_Status    :  std_logic_VECTOR(C_DBUS_WIDTH-1 downto 0);
535
 
536
   signal  eb_we_up           :  std_logic;
537
   signal  eb_din_up          :  std_logic_VECTOR(72-1 downto 0);
538
 
539
   signal  tab_sel            : STD_LOGIC;
540
 
541
        signal   user_rd_en         : std_logic := '0';
542
        signal   user_rd_dout       : std_logic_VECTOR(72-1 downto 0);
543
        signal   user_rd_pempty     : std_logic;
544
        signal   user_rd_empty      : std_logic;
545
        signal   user_rd_data_count : std_logic_VECTOR(C_EMU_FIFO_DC_WIDTH-1 downto 0);
546
        signal   user_wr_data_count : std_logic_VECTOR(C_EMU_FIFO_DC_WIDTH-1 downto 0);
547
        signal   user_wr_en         : std_logic := '0';
548
        signal   user_wr_din        : std_logic_VECTOR(72-1 downto 0) := (Others =>'0');
549
        signal   user_wr_pfull      : std_logic;
550
        signal   user_wr_full       : std_logic;
551
        signal   user_rd_valid      : std_logic;
552
 
553
 
554
 
555
------------- COMPONENT Declaration: tlpControl   ------
556
-- 
557
 component tlpControl
558
   port (
559
        --  Test pin, emulating DDR data flow discontinuity
560
        mbuf_UserFull                : IN  std_logic;
561
        trn_Blinker                  : OUT std_logic;
562
 
563
 
564
 
565
--S     SIMONE: Wanxau UserLogic Signals, not Used
566
        -- DCB protocol interface
567
        protocol_link_act            : IN  std_logic_vector(2-1 downto 0);
568
        protocol_rst                 : OUT std_logic;
569
        -- Fabric side: CTL Rx
570
        ctl_rv                       : OUT std_logic;
571
        ctl_rd                       : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
572
        -- Fabric side: CTL Tx
573
        ctl_ttake                    : OUT std_logic;
574
        ctl_tv                       : IN  std_logic;
575
        ctl_td                       : IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
576
        ctl_tstop                    : OUT std_logic;
577
        ctl_reset                    : OUT std_logic;
578
        ctl_status                   : IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
579
        -- Fabric side: DLM Rx
580
        dlm_rv                       : OUT std_logic;
581
        dlm_rd                       : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
582
        -- Fabric side: DLM Tx
583
        dlm_tv                       : IN  std_logic;
584
        dlm_td                       : IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
585
        Link_Buf_full                : IN  std_logic;
586
        -- Data generator table write
587
        tab_we                       : OUT std_logic_vector(2-1 downto 0);
588
        tab_wa                       : OUT std_logic_vector(12-1 downto 0);
589
        tab_wd                       : OUT std_logic_vector(C_DBUS_WIDTH-1 downto 0);
590
        -- Data generator control
591
        DG_is_Running                : IN  std_logic;
592
        DG_Reset                     : OUT std_logic;
593
        DG_Mask                      : OUT std_logic;
594
--S     SIMONE: Wanxau UserLogic Signals, not Used
595
 
596
 
597
        -- Interrupter triggers
598
        DAQ_irq                      : IN  std_logic;
599
        CTL_irq                      : IN  std_logic;
600
        DLM_irq                      : IN  std_logic;
601
 
602
 
603
        -- SIMONE Register: PC-->FPGA
604
        reg01_tv                   : OUT std_logic;
605
        reg01_td                   : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
606
        reg02_tv                   : OUT std_logic;
607
        reg02_td                   : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
608
        reg03_tv                   : OUT std_logic;
609
        reg03_td                   : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
610
        reg04_tv                   : OUT std_logic;
611
        reg04_td                   : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
612
        reg05_tv                   : OUT std_logic;
613
        reg05_td                   : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
614
        reg06_tv                   : OUT std_logic;
615
        reg06_td                   : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
616
        reg07_tv                   : OUT std_logic;
617
        reg07_td                   : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
618
        reg08_tv                   : OUT std_logic;
619
        reg08_td                   : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
620
        reg09_tv                   : OUT std_logic;
621
        reg09_td                   : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
622
        reg10_tv                   : OUT std_logic;
623
        reg10_td                   : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
624
        reg11_tv                   : OUT std_logic;
625
        reg11_td                   : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
626
        reg12_tv                   : OUT std_logic;
627
        reg12_td                   : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
628
        reg13_tv                   : OUT std_logic;
629
        reg13_td                   : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
630
        reg14_tv                   : OUT std_logic;
631
        reg14_td                   : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
632
 
633
        -- SIMONE Register: FPGA-->PC
634
        reg01_rv                   : IN  std_logic;
635
        reg01_rd                   : IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
636
        reg02_rv                   : IN  std_logic;
637
        reg02_rd                   : IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
638
        reg03_rv                   : IN  std_logic;
639
        reg03_rd                   : IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
640
        reg04_rv                   : IN  std_logic;
641
        reg04_rd                   : IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
642
        reg05_rv                   : IN  std_logic;
643
        reg05_rd                   : IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
644
        reg06_rv                   : IN  std_logic;
645
        reg06_rd                   : IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
646
        reg07_rv                   : IN  std_logic;
647
        reg07_rd                   : IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
648
        reg08_rv                   : IN  std_logic;
649
        reg08_rd                   : IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
650
        reg09_rv                   : IN  std_logic;
651
        reg09_rd                   : IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
652
        reg10_rv                   : IN  std_logic;
653
        reg10_rd                   : IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
654
        reg11_rv                   : IN  std_logic;
655
        reg11_rd                   : IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
656
        reg12_rv                   : IN  std_logic;
657
        reg12_rd                   : IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
658
        reg13_rv                   : IN  std_logic;
659
        reg13_rd                   : IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
660
        reg14_rv                   : IN  std_logic;
661
        reg14_rd                   : IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
662
 
663
                  --SIMONE debug signals
664
                 debug_in_1i                                      : OUT std_logic_vector(31 downto 0);
665
                 debug_in_2i                                      : OUT std_logic_vector(31 downto 0);
666
                 debug_in_3i                                      : OUT std_logic_vector(31 downto 0);
667
                 debug_in_4i                                      : OUT std_logic_vector(31 downto 0);
668
 
669
 
670
        -- Event Buffer FIFO interface
671
        eb_FIFO_we                   : OUT std_logic;
672
        eb_FIFO_wsof                 : OUT std_logic;
673
        eb_FIFO_weof                 : OUT std_logic;
674
        eb_FIFO_din                  : OUT std_logic_vector(C_DBUS_WIDTH-1 downto 0);
675
 
676
        eb_FIFO_re                   : OUT std_logic;
677
        eb_FIFO_empty                : IN  std_logic;
678
        eb_FIFO_qout                 : IN  std_logic_vector(C_DBUS_WIDTH-1 downto 0);
679
        eb_FIFO_data_count           : IN  std_logic_vector(C_FIFO_DC_WIDTH downto 0);
680
 
681
        eb_FIFO_ow                   : IN  std_logic;
682
 
683
        pio_reading_status           : OUT std_logic;
684
        eb_FIFO_Status               : IN  std_logic_vector(C_DBUS_WIDTH-1 downto 0);
685
        eb_FIFO_Rst                  : OUT std_logic;
686
 
687
                  H2B_FIFO_Status                        : IN std_logic_VECTOR(C_DBUS_WIDTH-1 downto 0);
688
                  B2H_FIFO_Status                        : IN std_logic_VECTOR(C_DBUS_WIDTH-1 downto 0);
689
 
690
        -- Debugging signals
691
        DMA_us_Done                  : OUT std_logic;
692
        DMA_us_Busy                  : OUT std_logic;
693
        DMA_us_Busy_LED              : OUT std_logic;
694
        DMA_ds_Done                  : OUT std_logic;
695
        DMA_ds_Busy                  : OUT std_logic;
696
        DMA_ds_Busy_LED              : OUT std_logic;
697
 
698
        -- DDR control interface
699
        DDR_Ready                    : IN    std_logic;
700
 
701
        DDR_wr_sof                   : OUT   std_logic;
702
        DDR_wr_eof                   : OUT   std_logic;
703
        DDR_wr_v                     : OUT   std_logic;
704
        DDR_wr_FA                    : OUT   std_logic;
705
        DDR_wr_Shift                 : OUT   std_logic;
706
        DDR_wr_Mask                  : OUT   std_logic_vector(2-1 downto 0);
707
        DDR_wr_din                   : OUT   std_logic_vector(C_DBUS_WIDTH-1 downto 0);
708
        DDR_wr_full                  : IN    std_logic;
709
 
710
        DDR_rdc_sof                  : OUT   std_logic;
711
        DDR_rdc_eof                  : OUT   std_logic;
712
        DDR_rdc_v                    : OUT   std_logic;
713
        DDR_rdc_FA                   : OUT   std_logic;
714
        DDR_rdc_Shift                : OUT   std_logic;
715
        DDR_rdc_din                  : OUT   std_logic_vector(C_DBUS_WIDTH-1 downto 0);
716
        DDR_rdc_full                 : IN    std_logic;
717
 
718
        -- DDR payload FIFO Read Port
719
        DDR_FIFO_RdEn                : OUT std_logic;
720
        DDR_FIFO_Empty               : IN  std_logic;
721
        DDR_FIFO_RdQout              : IN  std_logic_vector(C_DBUS_WIDTH-1 downto 0);
722
 
723
        -- Transaction layer interface
724
        trn_lnk_up_n                 : IN  std_logic;
725
        trn_rsrc_dsc_n               : IN  std_logic;
726
        trn_rnp_ok_n                 : OUT std_logic;
727
        trn_tsrc_dsc_n               : OUT std_logic;
728
        trn_tdst_dsc_n               : IN  std_logic;
729
        trn_tbuf_av                  : IN  std_logic_vector(C_TBUF_AWIDTH-1 downto 0);
730
        trn_terrfwd_n                : OUT std_logic;
731
 
732
        trn_clk                      : IN  std_logic;
733
        trn_reset_n                  : IN  std_logic;
734
        trn_rsrc_rdy_n               : IN  std_logic;
735
        trn_tdst_rdy_n               : IN  std_logic;
736
        trn_rsof_n                   : IN  std_logic;
737
        trn_reof_n                   : IN  std_logic;
738
        trn_rerrfwd_n                : IN  std_logic;
739
        trn_rrem_n                   : IN  std_logic_vector(C_DBUS_WIDTH/8-1 downto 0);
740
        trn_rd                       : IN  std_logic_vector(C_DBUS_WIDTH-1 downto 0);
741
 
742
        cfg_dcommand                 : IN  std_logic_vector(15 downto 0);
743
        pcie_link_width              : IN  std_logic_vector( 5 downto 0);
744
        localId                      : IN  std_logic_vector(15 downto 0);
745
 
746
        cfg_interrupt_n              : OUT std_logic;
747
        cfg_interrupt_rdy_n          : IN  std_logic;
748
        cfg_interrupt_mmenable       : IN  std_logic_vector(2 downto 0);
749
        cfg_interrupt_msienable      : IN  std_logic;
750
        cfg_interrupt_di             : OUT std_logic_vector(7 downto 0);
751
        cfg_interrupt_do             : IN  std_logic_vector(7 downto 0);
752
        cfg_interrupt_assert_n       : OUT std_logic;
753
 
754
        Format_Shower                : OUT   std_logic;
755
 
756
        trn_rbar_hit_n               : IN  std_logic_vector(6 downto 0);
757
        trn_tsrc_rdy_n               : OUT std_logic;
758
        trn_rdst_rdy_n               : OUT std_logic;
759
        trn_tsof_n                   : OUT std_logic;
760
        trn_teof_n                   : OUT std_logic;
761
        trn_trem_n                   : OUT std_logic_vector(C_DBUS_WIDTH/8-1 downto 0);
762
        trn_td                       : OUT std_logic_vector(C_DBUS_WIDTH-1 downto 0)
763
        );
764
 end component;
765
 
766
 signal   Format_Shower              : std_logic;
767
 
768
 
769
 
770
 
771
  -- TRN Layer signals
772
 
773
  signal trn_terr_drop_n                 : std_logic;
774
  signal trn_tcfg_gnt_n                  : std_logic;
775
  signal trn_tstr_n                      : std_logic;
776
  signal trn_fc_cpld                     : STD_LOGIC_vector (12-1 downto 0);
777
  signal trn_fc_cplh                     : STD_LOGIC_vector (8-1 downto 0);
778
  signal trn_fc_npd                      : STD_LOGIC_vector (12-1 downto 0);
779
  signal trn_fc_nph                      : STD_LOGIC_vector (8-1 downto 0);
780
  signal trn_fc_pd                       : STD_LOGIC_vector (12-1 downto 0);
781
  signal trn_fc_ph                       : STD_LOGIC_vector (8-1 downto 0);
782
  signal trn_fc_sel                      : STD_LOGIC_vector (3-1 downto 0);
783
 
784
  signal cfg_interrupt_msixenable        : std_logic;
785
  signal cfg_interrupt_msixfm            : std_logic;
786
  signal cfg_dcommand2                   : std_logic_vector (16-1 downto 0);
787
  signal trn_tcfg_req_n                  : std_logic;
788
 
789
  signal  pl_initial_link_width          : STD_LOGIC_vector (3-1 downto 0);
790
  signal  pl_lane_reversal_mode          : STD_LOGIC_vector (2-1 downto 0);
791
  signal  pl_link_gen2_capable           : STD_LOGIC;
792
  signal  pl_link_partner_gen2_supported : STD_LOGIC;
793
  signal  pl_link_upcfg_capable          : STD_LOGIC;
794
  signal  pl_ltssm_state                 : STD_LOGIC_vector (6-1 downto 0);
795
  signal  pl_received_hot_rst            : STD_LOGIC;
796
  signal  pl_sel_link_rate               : STD_LOGIC;
797
  signal  pl_sel_link_width              : STD_LOGIC_vector (2-1 downto 0);
798
  signal  pl_directed_link_auton         : STD_LOGIC;
799
  signal  pl_directed_link_change        : STD_LOGIC_vector (2-1 downto 0);
800
  signal  pl_directed_link_speed         : STD_LOGIC;
801
  signal  pl_directed_link_width         : STD_LOGIC_vector (2-1 downto 0);
802
  signal  pl_upstream_prefer_deemph      : STD_LOGIC;
803
 
804
  signal  trn_reset_n_int1       : STD_LOGIC;
805
  signal  trn_lnk_up_n_int1      : STD_LOGIC;
806
 
807
  signal trn_clk                     : std_logic;
808
  signal trn_reset_n                 : std_logic;
809
  signal trn_lnk_up_n                : std_logic;
810
  signal trn_td                      : std_logic_vector(63 downto 0);
811
  signal trn_trem_n                  : std_logic_vector(7 downto 0);
812
  signal trn_tsof_n                  : std_logic;
813
  signal trn_teof_n                  : std_logic;
814
  signal trn_tsrc_rdy_n              : std_logic;
815
  signal trn_tdst_rdy_n              : std_logic;
816
  signal trn_tdst_dsc_n              : std_logic;
817
  signal trn_tsrc_dsc_n              : std_logic;
818
  signal trn_terrfwd_n               : std_logic;
819
  signal trn_tbuf_av                 : std_logic_vector(5 downto 0);
820
  signal trn_rd                      : std_logic_vector(63 downto 0);
821
  signal trn_rrem_n                  : std_logic_vector(7 downto 0);
822
  signal trn_rsof_n                  : std_logic;
823
  signal trn_reof_n                  : std_logic;
824
  signal trn_rsrc_rdy_n              : std_logic;
825
  signal trn_rsrc_dsc_n              : std_logic;
826
  signal trn_rdst_rdy_n              : std_logic;
827
  signal trn_rerrfwd_n               : std_logic;
828
  signal trn_rnp_ok_n                : std_logic;
829
  signal trn_rbar_hit_n              : std_logic_vector(6 downto 0);
830
  signal trn_rfc_nph_av              : std_logic_vector(7 downto 0);
831
  signal trn_rfc_npd_av              : std_logic_vector(11 downto 0);
832
  signal trn_rfc_ph_av               : std_logic_vector(7 downto 0);
833
  signal trn_rfc_pd_av               : std_logic_vector(11 downto 0);
834
  signal trn_rfc_cplh_av             : std_logic_vector(7 downto 0);
835
  signal trn_rfc_cpld_av             : std_logic_vector(11 downto 0);
836
  signal trn_rcpl_streaming_n        : std_logic;
837
  signal cfg_do                      : std_logic_vector(31 downto 0);
838
  signal cfg_rd_wr_done_n            : std_logic;
839
  signal cfg_di                      : std_logic_vector(31 downto 0);
840
  signal cfg_byte_en_n               : std_logic_vector(3 downto 0);
841
  signal cfg_dwaddr                  : std_logic_vector(9 downto 0);
842
  signal cfg_wr_en_n                 : std_logic;
843
  signal cfg_rd_en_n                 : std_logic;
844
  signal cfg_err_cor_n               : std_logic;
845
  signal cfg_err_ur_n                : std_logic;
846
  signal cfg_err_cpl_rdy_n           : std_logic;
847
  signal cfg_err_ecrc_n              : std_logic;
848
  signal cfg_err_cpl_timeout_n       : std_logic;
849
  signal cfg_err_cpl_abort_n         : std_logic;
850
  signal cfg_err_cpl_unexpect_n      : std_logic;
851
  signal cfg_err_posted_n            : std_logic;
852
  signal cfg_err_locked_n            : std_logic;
853
  signal cfg_err_tlp_cpl_header      : std_logic_vector(47 downto 0);
854
  signal cfg_interrupt_n             : std_logic;
855
  signal cfg_interrupt_rdy_n         : std_logic;
856
  signal cfg_interrupt_mmenable      : std_logic_vector(2 downto 0);
857
  signal cfg_interrupt_msienable     : std_logic;
858
  signal cfg_interrupt_di            : std_logic_vector(7 downto 0);
859
  signal cfg_interrupt_do            : std_logic_vector(7 downto 0);
860
  signal cfg_interrupt_assert_n      : std_logic;
861
  signal cfg_turnoff_ok_n            : std_logic;
862
  signal cfg_to_turnoff_n            : std_logic;
863
  signal cfg_pm_wake_n               : std_logic;
864
  signal cfg_pcie_link_state_n       : std_logic_vector(2 downto 0);
865
  signal cfg_trn_pending_n           : std_logic;
866
  signal cfg_bus_number              : std_logic_vector(7 downto 0);
867
  signal cfg_device_number           : std_logic_vector(4 downto 0);
868
  signal cfg_function_number         : std_logic_vector(2 downto 0);
869
  signal cfg_dsn                     : std_logic_vector(63 downto 0);
870
  signal cfg_status                  : std_logic_vector(15 downto 0);
871
  signal cfg_command                 : std_logic_vector(15 downto 0);
872
  signal cfg_dstatus                 : std_logic_vector(15 downto 0);
873
  signal cfg_dcommand                : std_logic_vector(15 downto 0);
874
  signal cfg_lstatus                 : std_logic_vector(15 downto 0);
875
  signal cfg_lcommand                : std_logic_vector(15 downto 0);
876
  signal fast_train_simulation_only  : std_logic;
877
  signal two_plm_auto_config         : std_logic_vector(1 downto 0);
878
  signal sys_clk_c                   : std_logic;
879
  signal sys_reset_n_c               : std_logic;
880
  signal reset_n                     : std_logic;
881
 
882
  signal localId                     : std_logic_vector(15 downto 0);
883
  signal pcie_link_width             : std_logic_vector( 5 downto 0);
884
 
885
  signal synclk2out                  : std_logic;
886
 
887
  signal Sim_Zeichen                 : std_logic;
888
  --
889
  signal   trn_Blinker               : std_logic;
890
 
891
 
892
 
893
        signal   DAQ_irq            : std_logic := '0';
894
        signal   CTL_irq            : std_logic := '0';
895
        signal   DLM_irq            : std_logic := '0';
896
 
897
 
898
 
899
--S     SIMONE: Wanxau UserLogic Signals, not Used
900
        signal   protocol_link_act  : std_logic_vector(2-1 downto 0) := (OTHERS=>'0');
901
        signal   protocol_rst       : std_logic;
902
        signal   daq_rstop          : std_logic;
903
        signal   ctl_rv             : std_logic;
904
        signal   ctl_rd             : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
905
        signal   ctl_ttake          : std_logic;
906
        signal   ctl_tv             : std_logic := '0';
907
        signal   ctl_td             : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0) := (OTHERS=>'0');
908
        signal   ctl_tstop          : std_logic;
909
        signal   ctl_reset          : std_logic;
910
        signal   ctl_status         : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0) := (OTHERS=>'0');
911
        signal   dlm_tv             : std_logic;
912
        signal   dlm_td             : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
913
        signal   dlm_rv             : std_logic := '0';
914
        signal   dlm_rd             : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0) := (OTHERS=>'0');
915
   signal   tab_we             : std_logic_vector(2-1 downto 0);
916
   signal   tab_wa             : std_logic_vector(12-1 downto 0);
917
   signal   tab_wd             : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
918
   signal   dg_running         : std_logic := '0';
919
   signal   dg_rst             : STD_LOGIC;
920
   signal   DG_Mask            : STD_LOGIC;
921
--S     SIMONE: Wanxau UserLogic Signals, not Used
922
 
923
 
924
 
925
        -- SIMONE Register: PC-->FPGA
926
   signal  reg01_tv            : std_logic;
927
   signal  reg01_td            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
928
   signal  reg02_tv            : std_logic;
929
   signal  reg02_td            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
930
   signal  reg03_tv            : std_logic;
931
   signal  reg03_td            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
932
   signal  reg04_tv            : std_logic;
933
   signal  reg04_td            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
934
   signal  reg05_tv            : std_logic;
935
   signal  reg05_td            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
936
   signal  reg06_tv            : std_logic;
937
   signal  reg06_td            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
938
   signal  reg07_tv            : std_logic;
939
   signal  reg07_td            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
940
   signal  reg08_tv            : std_logic;
941
   signal  reg08_td            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
942
   signal  reg09_tv            : std_logic;
943
   signal  reg09_td            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
944
   signal  reg10_tv            : std_logic;
945
   signal  reg10_td            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
946
   signal  reg11_tv            : std_logic;
947
   signal  reg11_td            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
948
   signal  reg12_tv            : std_logic;
949
   signal  reg12_td            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
950
   signal  reg13_tv            : std_logic;
951
   signal  reg13_td            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
952
   signal  reg14_tv            : std_logic;
953
   signal  reg14_td            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
954
 
955
        -- SIMONE Register: FPGA-->PC
956
   signal  reg01_rv            : std_logic := '0';
957
   signal  reg01_rd            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0) := (OTHERS=>'0');
958
   signal  reg02_rv            : std_logic := '0';
959
   signal  reg02_rd            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0) := (OTHERS=>'0');
960
   signal  reg03_rv            : std_logic := '0';
961
   signal  reg03_rd            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0) := (OTHERS=>'0');
962
   signal  reg04_rv            : std_logic := '0';
963
   signal  reg04_rd            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0) := (OTHERS=>'0');
964
   signal  reg05_rv            : std_logic := '0';
965
   signal  reg05_rd            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0) := (OTHERS=>'0');
966
   signal  reg06_rv            : std_logic := '0';
967
   signal  reg06_rd            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0) := (OTHERS=>'0');
968
   signal  reg07_rv            : std_logic := '0';
969
   signal  reg07_rd            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0) := (OTHERS=>'0');
970
   signal  reg08_rv            : std_logic := '0';
971
   signal  reg08_rd            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0) := (OTHERS=>'0');
972
   signal  reg09_rv            : std_logic := '0';
973
   signal  reg09_rd            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0) := (OTHERS=>'0');
974
   signal  reg10_rv            : std_logic := '0';
975
   signal  reg10_rd            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0) := (OTHERS=>'0');
976
   signal  reg11_rv            : std_logic := '0';
977
   signal  reg11_rd            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0) := (OTHERS=>'0');
978
   signal  reg12_rv            : std_logic := '0';
979
   signal  reg12_rd            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0) := (OTHERS=>'0');
980
   signal  reg13_rv            : std_logic := '0';
981
   signal  reg13_rd            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0) := (OTHERS=>'0');
982
   signal  reg14_rv            : std_logic := '0';
983
   signal  reg14_rd            : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0) := (OTHERS=>'0');
984
 
985
   signal  debug_in_1i                   : std_logic_vector(31 downto 0);
986
   signal  debug_in_2i                   : std_logic_vector(31 downto 0);
987
   signal  debug_in_3i                   : std_logic_vector(31 downto 0);
988
   signal  debug_in_4i                   : std_logic_vector(31 downto 0);
989
 
990
        signal  user_rst_o          : std_logic;
991
 
992
        signal  clk_200MHz          : std_logic;
993
 
994
        signal  DMA_Host2Board_Busy : std_logic;
995
        signal  DMA_Host2Board_Done : std_logic;
996
 
997
        signal  DMA_us_Busy         : std_logic;
998
        signal  DMA_us_Done         : std_logic;
999
        signal  DMA_ds_Done         : std_logic;
1000
        signal  DMA_ds_Busy         : std_logic;
1001
 
1002
 
1003
begin
1004
 
1005
 
1006
   LoopBack_Off_UserLogic:  if not USE_LOOPBACK_TEST generate
1007
 
1008
--S SIMONE: My Custom User Logic!!
1009
  pcie_userlogic_00_x0: PCIe_UserLogic_00
1010
    port map (
1011
                inout_logic_cw_ce   => '1',
1012
                inout_logic_cw_clk  => trn_clk,
1013
                user_logic_cw_ce    => '1',
1014
                user_logic_cw_clk   => clk_200MHz,
1015
      fifo_rd_count  => user_rd_data_count,
1016
      fifo_rd_dout   => user_rd_dout      ,
1017
      fifo_rd_empty  => user_rd_empty     ,
1018
      fifo_rd_pempty => user_rd_pempty    ,
1019
      fifo_wr_full   => user_wr_full      ,
1020
      fifo_wr_pfull  => user_wr_pfull     ,
1021
      fifo_rd_en                => user_rd_en        ,
1022
      fifo_wr_din       => user_wr_din       ,
1023
      fifo_wr_en                => user_wr_en        ,
1024
      fifo_rd_valid     => user_rd_valid     ,
1025
      fifo_wr_count  => user_wr_data_count,
1026
      bram_rd_addr      => user_rd_addrB     ,
1027
      bram_wr_addr      => user_wr_addrA     ,
1028
      bram_wr_din       => user_wr_dinA      ,
1029
      bram_wr_en                => user_wr_weA       ,
1030
      bram_rd_dout   => user_rd_doutB     ,
1031
                DMA_Host2Board_Busy => DMA_Host2Board_Busy,
1032
                DMA_Host2Board_Done => DMA_Host2Board_Done,
1033
                reg01_td                => reg01_td,
1034
      reg01_tv          => reg01_tv,
1035
      reg02_td          => reg02_td,
1036
      reg02_tv          => reg02_tv,
1037
      reg03_td          => reg03_td,
1038
      reg03_tv          => reg03_tv,
1039
      reg04_td          => reg04_td,
1040
      reg04_tv          => reg04_tv,
1041
      reg05_td          => reg05_td,
1042
      reg05_tv          => reg05_tv,
1043
      reg06_td          => reg06_td,
1044
      reg06_tv          => reg06_tv,
1045
      reg07_td          => reg07_td,
1046
      reg07_tv          => reg07_tv,
1047
      reg08_td          => reg08_td,
1048
      reg08_tv          => reg08_tv,
1049
      reg09_td          => reg09_td,
1050
      reg09_tv          => reg09_tv,
1051
      reg10_td          => reg10_td,
1052
      reg10_tv          => reg10_tv,
1053
      reg11_td          => reg11_td,
1054
      reg11_tv          => reg11_tv,
1055
      reg12_td          => reg12_td,
1056
      reg12_tv          => reg12_tv,
1057
      reg13_td          => reg13_td,
1058
      reg13_tv          => reg13_tv,
1059
      reg14_td          => reg14_td,
1060
      reg14_tv          => reg14_tv,
1061
      reg01_rd          => reg01_rd,
1062
      reg01_rv          => reg01_rv,
1063
      reg02_rd          => reg02_rd,
1064
      reg02_rv          => reg02_rv,
1065
      reg03_rd          => reg03_rd,
1066
      reg03_rv          => reg03_rv,
1067
      reg04_rd          => reg04_rd,
1068
      reg04_rv          => reg04_rv,
1069
      reg05_rd          => reg05_rd,
1070
      reg05_rv          => reg05_rv,
1071
      reg06_rd          => reg06_rd,
1072
      reg06_rv          => reg06_rv,
1073
      reg07_rd          => reg07_rd,
1074
      reg07_rv          => reg07_rv,
1075
      reg08_rd          => reg08_rd,
1076
      reg08_rv          => reg08_rv,
1077
      reg09_rd          => reg09_rd,
1078
      reg09_rv          => reg09_rv,
1079
      reg10_rd          => reg10_rd,
1080
      reg10_rv          => reg10_rv,
1081
      reg11_rd          => reg11_rd,
1082
      reg11_rv          => reg11_rv,
1083
      reg12_rd          => reg12_rd,
1084
      reg12_rv          => reg12_rv,
1085
      reg13_rd          => reg13_rd,
1086
      reg13_rv          => reg13_rv,
1087
      reg14_rd          => reg14_rd,
1088
      reg14_rv          => reg14_rv,
1089
                user_int_1o    => CTL_irq,
1090
                user_int_2o    => DAQ_irq,
1091
                user_int_3o    => DLM_irq,
1092
      debug_in_1i    => debug_in_1i,
1093
      debug_in_2i    => debug_in_2i,
1094
      debug_in_3i    => debug_in_3i,
1095
      debug_in_4i    => debug_in_4i,
1096
      rst_i                     => trn_reset_n,
1097
      rst_o                     => user_rst_o
1098
    );
1099
 
1100
   end generate;
1101
 
1102
        DMA_Host2Board_Busy <= '0'; --DMA_ds_Busy;
1103
        DMA_Host2Board_Done <= DMA_ds_Done;
1104
   LEDs_IO_pin(5) <= DMA_ds_Done;
1105
        LEDs_IO_pin(7) <= DMA_us_Done;
1106
 
1107
 
1108
 
1109
   sys_reset_n_ibuf : IBUF
1110
      port map (
1111
                 O      =>  sys_reset_n_c,
1112
                 I      =>  sys_reset_n
1113
                );
1114
 
1115
   refclk_ibuf : IBUFDS_GTXE1
1116
      port map (
1117
                 O      =>  sys_clk_c,
1118
                 ODIV2  =>  open,
1119
                 I      =>  sys_clk_p,
1120
                 IB     =>  sys_clk_n,
1121
                 CEB    =>  '0'
1122
                );
1123
 
1124
   userclk_ibuf : IBUFDS
1125
      port map (
1126
                 O  => clk_200MHz,
1127
                 I  => userclk_200MHz_p,
1128
                 IB => userclk_200MHz_n
1129
                );
1130
 
1131
 
1132
 
1133
   cfg_err_cor_n              <= '1';
1134
   cfg_err_ur_n               <= '1';
1135
   cfg_err_ecrc_n             <= '1';
1136
   cfg_err_cpl_timeout_n      <= '1';
1137
   cfg_err_cpl_abort_n        <= '1';
1138
   cfg_err_cpl_unexpect_n     <= '1';
1139
   cfg_err_posted_n           <= '0';
1140
   cfg_err_locked_n           <= '0';
1141
   cfg_err_tlp_cpl_header     <= (OTHERS=>'0');
1142
   cfg_trn_pending_n          <= '1';
1143
   cfg_pm_wake_n              <= '1';
1144
 
1145
 
1146
-- 
1147
   trn_fc_sel                 <= (OTHERS=>'0');
1148
 
1149
   pl_directed_link_auton     <= '0';
1150
   pl_directed_link_change    <= (OTHERS=>'0');
1151
   pl_directed_link_speed     <= '0';
1152
   pl_directed_link_width     <= (OTHERS=>'0');
1153
   pl_upstream_prefer_deemph  <= '0';
1154
 
1155
   trn_tcfg_gnt_n             <= '0';
1156
   trn_tstr_n                 <= '0';  -- '1';
1157
 
1158
-- 
1159
 
1160
   trn_tdst_dsc_n             <= '1';
1161
 
1162
--
1163
   cfg_di                     <= (OTHERS=>'0');
1164
   cfg_dwaddr                 <= (OTHERS=>'1');
1165
   cfg_byte_en_n              <= (OTHERS=>'1');
1166
   cfg_wr_en_n                <= '1';
1167
   cfg_rd_en_n                <= '1';
1168
   cfg_dsn      <= X"00000001" &  X"01" & X"000A35";   -- //this is taken from GUI -
1169
 
1170
   cfg_turnoff_ok_n           <= '0';
1171
 
1172
 
1173
   localId                    <= cfg_bus_number & cfg_device_number & cfg_function_number;
1174
 
1175
   pcie_link_width            <= cfg_lstatus(9 downto 4);
1176
 
1177
 
1178
 
1179
   trn_lnk_up_n_int_i: FDCP
1180
     generic map (
1181
                 INIT  => '1'
1182
             )
1183
     port map (
1184
               Q     =>  trn_lnk_up_n,
1185
               D     =>  trn_lnk_up_n_int1,
1186
               C     =>  trn_clk,
1187
               CLR   =>  '0',
1188
               PRE   =>  '0'
1189
              );
1190
 
1191
 
1192
   trn_reset_n_i: FDCP
1193
     generic map (
1194
                 INIT  => '1'
1195
              )
1196
     port map (
1197
               Q     =>  trn_reset_n,
1198
               D     =>  trn_reset_n_int1,
1199
               C     =>  trn_clk,
1200
               CLR   =>  '0',
1201
               PRE   =>  '0'
1202
              );
1203
 
1204
 
1205
-- --------------------------------------------------------------
1206
-- --------------------------------------------------------------
1207
 
1208
make4Lanes: if pcieLanes = 4 generate
1209
--S pcieCore : v6_pcie_v1_3
1210
--S pcieCore : v6_pcie_v1_6_x1
1211
--S pcieCore : v6_pcie_v1_6_x8
1212
    pcieCore : v6_pcie_v1_6
1213
    generic map (
1214
                 PL_FAST_TRAIN  => FALSE
1215
             )
1216
    port map (
1217
 
1218
      ---------------------------------------------------------
1219
      -- 1. PCI Express (pci_exp) Interface
1220
      ---------------------------------------------------------
1221
 
1222
      -- Tx
1223
      pci_exp_txp       =>     pci_exp_txp           ,
1224
      pci_exp_txn       =>     pci_exp_txn           ,
1225
 
1226
      -- Rx
1227
      pci_exp_rxp       =>     pci_exp_rxp           ,
1228
      pci_exp_rxn       =>     pci_exp_rxn           ,
1229
 
1230
      ---------------------------------------------------------
1231
      -- 2. Transaction (TRN) Interface
1232
      ---------------------------------------------------------
1233
 
1234
      -- Common
1235
      trn_clk           =>     trn_clk               ,
1236
      trn_reset_n       =>     trn_reset_n_int1      ,
1237
      trn_lnk_up_n      =>     trn_lnk_up_n_int1     ,
1238
 
1239
      -- Tx
1240
      trn_tbuf_av       =>     trn_tbuf_av           ,
1241
      trn_tcfg_req_n    =>     trn_tcfg_req_n        ,
1242
      trn_terr_drop_n   =>     trn_terr_drop_n       ,
1243
      trn_tdst_rdy_n    =>     trn_tdst_rdy_n        ,
1244
      trn_td            =>     trn_td                ,
1245
      trn_trem_n        =>     trn_trem_n(0)         ,
1246
      trn_tsof_n        =>     trn_tsof_n            ,
1247
      trn_teof_n        =>     trn_teof_n            ,
1248
      trn_tsrc_rdy_n    =>     trn_tsrc_rdy_n        ,
1249
      trn_tsrc_dsc_n    =>     trn_tsrc_dsc_n        ,
1250
      trn_terrfwd_n     =>     trn_terrfwd_n         ,
1251
      trn_tcfg_gnt_n    =>     trn_tcfg_gnt_n        ,
1252
      trn_tstr_n        =>     trn_tstr_n            ,
1253
 
1254
      -- Rx
1255
      trn_rd            =>     trn_rd                ,
1256
      trn_rrem_n        =>     trn_rrem_n(0)         ,
1257
      trn_rsof_n        =>     trn_rsof_n            ,
1258
      trn_reof_n        =>     trn_reof_n            ,
1259
      trn_rsrc_rdy_n    =>     trn_rsrc_rdy_n        ,
1260
      trn_rsrc_dsc_n    =>     trn_rsrc_dsc_n        ,
1261
      trn_rerrfwd_n     =>     trn_rerrfwd_n         ,
1262
      trn_rbar_hit_n    =>     trn_rbar_hit_n        ,
1263
      trn_rdst_rdy_n    =>     trn_rdst_rdy_n        ,
1264
      trn_rnp_ok_n      =>     trn_rnp_ok_n          ,
1265
 
1266
      -- Flow Control
1267
      trn_fc_cpld       =>     trn_fc_cpld           ,
1268
      trn_fc_cplh       =>     trn_fc_cplh           ,
1269
      trn_fc_npd        =>     trn_fc_npd            ,
1270
      trn_fc_nph        =>     trn_fc_nph            ,
1271
      trn_fc_pd         =>     trn_fc_pd             ,
1272
      trn_fc_ph         =>     trn_fc_ph             ,
1273
      trn_fc_sel        =>     trn_fc_sel            ,
1274
 
1275
 
1276
      ---------------------------------------------------------
1277
      -- 3. Configuration (CFG) Interface
1278
      ---------------------------------------------------------
1279
 
1280
      cfg_do                   =>     cfg_do                     ,
1281
      cfg_rd_wr_done_n         =>     cfg_rd_wr_done_n           ,
1282
      cfg_di                   =>     cfg_di                     ,
1283
      cfg_byte_en_n            =>     cfg_byte_en_n              ,
1284
      cfg_dwaddr               =>     cfg_dwaddr                 ,
1285
      cfg_wr_en_n              =>     cfg_wr_en_n                ,
1286
      cfg_rd_en_n              =>     cfg_rd_en_n                ,
1287
 
1288
      cfg_err_cor_n            =>     cfg_err_cor_n              ,
1289
      cfg_err_ur_n             =>     cfg_err_ur_n               ,
1290
      cfg_err_ecrc_n           =>     cfg_err_ecrc_n             ,
1291
      cfg_err_cpl_timeout_n    =>     cfg_err_cpl_timeout_n      ,
1292
      cfg_err_cpl_abort_n      =>     cfg_err_cpl_abort_n        ,
1293
      cfg_err_cpl_unexpect_n   =>     cfg_err_cpl_unexpect_n     ,
1294
      cfg_err_posted_n         =>     cfg_err_posted_n           ,
1295
      cfg_err_locked_n         =>     cfg_err_locked_n           ,
1296
      cfg_err_tlp_cpl_header   =>     cfg_err_tlp_cpl_header     ,
1297
      cfg_err_cpl_rdy_n        =>     cfg_err_cpl_rdy_n          ,
1298
      cfg_interrupt_n          =>     cfg_interrupt_n            ,
1299
      cfg_interrupt_rdy_n      =>     cfg_interrupt_rdy_n        ,
1300
      cfg_interrupt_assert_n   =>     cfg_interrupt_assert_n     ,
1301
      cfg_interrupt_di         =>     cfg_interrupt_di           ,
1302
      cfg_interrupt_do         =>     cfg_interrupt_do           ,
1303
      cfg_interrupt_mmenable   =>     cfg_interrupt_mmenable     ,
1304
      cfg_interrupt_msienable  =>     cfg_interrupt_msienable    ,
1305
      cfg_interrupt_msixenable =>     cfg_interrupt_msixenable   ,
1306
      cfg_interrupt_msixfm     =>     cfg_interrupt_msixfm       ,
1307
      cfg_turnoff_ok_n         =>     cfg_turnoff_ok_n           ,
1308
      cfg_to_turnoff_n         =>     cfg_to_turnoff_n           ,
1309
      cfg_trn_pending_n        =>     cfg_trn_pending_n          ,
1310
      cfg_pm_wake_n            =>     cfg_pm_wake_n              ,
1311
      cfg_bus_number           =>     cfg_bus_number             ,
1312
      cfg_device_number        =>     cfg_device_number          ,
1313
      cfg_function_number      =>     cfg_function_number        ,
1314
      cfg_status               =>     cfg_status                 ,
1315
      cfg_command              =>     cfg_command                ,
1316
      cfg_dstatus              =>     cfg_dstatus                ,
1317
      cfg_dcommand             =>     cfg_dcommand               ,
1318
      cfg_lstatus              =>     cfg_lstatus                ,
1319
      cfg_lcommand             =>     cfg_lcommand               ,
1320
      cfg_dcommand2            =>     cfg_dcommand2              ,
1321
      cfg_pcie_link_state_n    =>     cfg_pcie_link_state_n      ,
1322
      cfg_dsn                  =>     cfg_dsn                    ,
1323
 
1324
      ---------------------------------------------------------
1325
      -- 4. Physical Layer Control and Status (PL) Interface
1326
      ---------------------------------------------------------
1327
 
1328
      pl_initial_link_width            =>     pl_initial_link_width           ,
1329
      pl_lane_reversal_mode            =>     pl_lane_reversal_mode           ,
1330
      pl_link_gen2_capable             =>     pl_link_gen2_capable            ,
1331
      pl_link_partner_gen2_supported   =>     pl_link_partner_gen2_supported  ,
1332
      pl_link_upcfg_capable            =>     pl_link_upcfg_capable           ,
1333
      pl_ltssm_state                   =>     pl_ltssm_state                  ,
1334
      pl_received_hot_rst              =>     pl_received_hot_rst             ,
1335
      pl_sel_link_rate                 =>     pl_sel_link_rate                ,
1336
      pl_sel_link_width                =>     pl_sel_link_width               ,
1337
      pl_directed_link_auton           =>     pl_directed_link_auton          ,
1338
      pl_directed_link_change          =>     pl_directed_link_change         ,
1339
      pl_directed_link_speed           =>     pl_directed_link_speed          ,
1340
      pl_directed_link_width           =>     pl_directed_link_width          ,
1341
      pl_upstream_prefer_deemph        =>     pl_upstream_prefer_deemph       ,
1342
 
1343
      ---------------------------------------------------------
1344
      -- 5. System  (SYS) Interface
1345
      ---------------------------------------------------------
1346
 
1347
      sys_clk                          =>     sys_clk_c     ,
1348
      sys_reset_n                      =>     sys_reset_n_c
1349
 
1350
);
1351
 
1352
 end generate;
1353
 
1354
 
1355
-- ---------------------------------------------------------------
1356
-- tlp control module
1357
-- ---------------------------------------------------------------
1358
 
1359
   trn_rrem_n(7 downto 1) <= X"0" & trn_rrem_n(0) & trn_rrem_n(0) & trn_rrem_n(0);
1360
 
1361
   theTlpControl:
1362
   tlpControl
1363
   port map (
1364
 
1365
           mbuf_UserFull               => '0'                 ,
1366
           trn_Blinker                 => trn_Blinker         ,
1367
 
1368
           -- Interrupter triggers
1369
           DAQ_irq                     =>  DAQ_irq            ,  -- IN  std_logic;
1370
           CTL_irq                     =>  CTL_irq            ,  -- IN  std_logic;
1371
           DLM_irq                     =>  DLM_irq            ,  -- IN  std_logic;
1372
 
1373
 
1374
--S     SIMONE: Wanxau UserLogic Signals, not Used
1375
           -- DCB protocol interface
1376
           protocol_link_act           =>  protocol_link_act  ,  -- IN  std_logic_vector(2-1 downto 0);
1377
           protocol_rst                =>  protocol_rst       ,  -- OUT std_logic;
1378
           Link_Buf_Full               =>  daq_rstop          ,  -- IN  std_logic;
1379
           -- Fabric side: CTL Rx
1380
           ctl_rv                      =>  ctl_rv             ,  -- OUT std_logic;
1381
           ctl_rd                      =>  ctl_rd             ,  -- OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
1382
           -- Fabric side: CTL Tx
1383
           ctl_ttake                   =>  ctl_ttake          ,  -- OUT std_logic;
1384
           ctl_tv                      =>  ctl_tv             ,  -- IN  std_logic;
1385
           ctl_td                      =>  ctl_td             ,  -- IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
1386
           ctl_tstop                   =>  ctl_tstop          ,  -- OUT std_logic;
1387
           ctl_reset                   =>  ctl_reset          ,  -- OUT std_logic;
1388
           ctl_status                  =>  ctl_status         ,  -- IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
1389
           -- Fabric side: DLM Rx
1390
           dlm_rv                      =>  dlm_rv             ,  -- OUT std_logic;
1391
           dlm_rd                      =>  dlm_rd             ,  -- OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
1392
           -- Fabric side: DLM Tx
1393
           dlm_tv                      =>  dlm_tv             ,  -- IN  std_logic;
1394
           dlm_td                      =>  dlm_td             ,  -- IN  std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
1395
           tab_we                      =>  tab_we             ,  -- OUT std_logic_vector(2-1 downto 0);
1396
           tab_wa                      =>  tab_wa             ,  -- OUT std_logic_vector(12-1 downto 0);
1397
           tab_wd                      =>  tab_wd             ,  -- OUT std_logic_vector(C_DBUS_WIDTH-1 downto 0);
1398
           DG_is_Running               =>  dg_running         ,  -- IN  std_logic;
1399
           DG_Reset                    =>  dg_rst             ,  -- OUT   STD_LOGIC;
1400
           DG_Mask                     =>  dg_mask            ,  -- OUT   STD_LOGIC
1401
--S     SIMONE: Wanxau UserLogic Signals, not Used
1402
 
1403
 
1404
           -- SIMONE Register: PC-->FPGA
1405
           reg01_tv                     => reg01_tv,
1406
           reg01_td                     => reg01_td,
1407
           reg02_tv                     => reg02_tv,
1408
           reg02_td                     => reg02_td,
1409
           reg03_tv                     => reg03_tv,
1410
           reg03_td                     => reg03_td,
1411
           reg04_tv                     => reg04_tv,
1412
           reg04_td                     => reg04_td,
1413
           reg05_tv                     => reg05_tv,
1414
           reg05_td                     => reg05_td,
1415
           reg06_tv                     => reg06_tv,
1416
           reg06_td                     => reg06_td,
1417
           reg07_tv                     => reg07_tv,
1418
           reg07_td                     => reg07_td,
1419
           reg08_tv                     => reg08_tv,
1420
           reg08_td                     => reg08_td,
1421
           reg09_tv                     => reg09_tv,
1422
           reg09_td                     => reg09_td,
1423
           reg10_tv                     => reg10_tv,
1424
           reg10_td                     => reg10_td,
1425
           reg11_tv                     => reg11_tv,
1426
           reg11_td                     => reg11_td,
1427
           reg12_tv                     => reg12_tv,
1428
           reg12_td                     => reg12_td,
1429
           reg13_tv                     => reg13_tv,
1430
           reg13_td                     => reg13_td,
1431
           reg14_tv                     => reg14_tv,
1432
           reg14_td                     => reg14_td,
1433
 
1434
           -- SIMONE Register: FPGA-->PC
1435
           reg01_rv                     => reg01_rv,
1436
           reg01_rd                     => reg01_rd,
1437
           reg02_rv                     => reg02_rv,
1438
           reg02_rd                     => reg02_rd,
1439
           reg03_rv                     => reg03_rv,
1440
           reg03_rd                     => reg03_rd,
1441
           reg04_rv                     => reg04_rv,
1442
           reg04_rd                     => reg04_rd,
1443
           reg05_rv                     => reg05_rv,
1444
           reg05_rd                     => reg05_rd,
1445
           reg06_rv                     => reg06_rv,
1446
           reg06_rd                     => reg06_rd,
1447
           reg07_rv                     => reg07_rv,
1448
           reg07_rd                     => reg07_rd,
1449
           reg08_rv                     => reg08_rv,
1450
           reg08_rd                     => reg08_rd,
1451
           reg09_rv                     => reg09_rv,
1452
           reg09_rd                     => reg09_rd,
1453
           reg10_rv                     => reg10_rv,
1454
           reg10_rd                     => reg10_rd,
1455
           reg11_rv                     => reg11_rv,
1456
           reg11_rd                     => reg11_rd,
1457
           reg12_rv                     => reg12_rv,
1458
           reg12_rd                     => reg12_rd,
1459
           reg13_rv                     => reg13_rv,
1460
           reg13_rd                     => reg13_rd,
1461
           reg14_rv                     => reg14_rv,
1462
           reg14_rd                     => reg14_rd,
1463
 
1464
                          -- SIMONE debug signals       
1465
                          debug_in_1i                  => debug_in_1i,
1466
                          debug_in_2i                  => debug_in_2i,
1467
                          debug_in_3i                  => debug_in_3i,
1468
                          debug_in_4i                  => debug_in_4i,
1469
 
1470
           -- Event Buffer FIFO interface
1471
           eb_FIFO_we                  => eb_we               , --  OUT std_logic; 
1472
           eb_FIFO_wsof                => eb_wsof             , --  OUT std_logic; 
1473
           eb_FIFO_weof                => eb_weof             , --  OUT std_logic; 
1474
           eb_FIFO_din                 => eb_din(C_DBUS_WIDTH-1 downto 0) , --  OUT std_logic_vector(C_DBUS_WIDTH-1 downto 0);
1475
 
1476
           eb_FIFO_re                  => eb_re               , --  OUT std_logic; 
1477
           eb_FIFO_empty               => eb_empty            , --  IN  std_logic; 
1478
           eb_FIFO_qout                => eb_dout(C_DBUS_WIDTH-1 downto 0) , --  IN  std_logic_vector(C_DBUS_WIDTH-1 downto 0);
1479
           eb_FIFO_data_count          => eb_data_count       , --  IN  std_logic_vector(C_FIFO_DC_WIDTH downto 0);
1480
 
1481
           eb_FIFO_ow                  => eb_FIFO_ow          , --  IN  std_logic;
1482
 
1483
           pio_reading_status          => pio_reading_status  , --  OUT std_logic; 
1484
 
1485
           eb_FIFO_Status              => eb_FIFO_Status      , --  IN  std_logic_vector(C_DBUS_WIDTH-1 downto 0);
1486
           eb_FIFO_Rst                 => eb_rst              , --  OUT std_logic;
1487
                          H2B_FIFO_Status                                       => H2B_FIFO_Status     ,
1488
                          B2H_FIFO_Status                                       => B2H_FIFO_Status     ,
1489
 
1490
           -- Debugging signals
1491
           DMA_us_Done                 => DMA_us_Done         , -- OUT std_logic;
1492
           DMA_us_Busy                 => DMA_us_Busy         , -- OUT std_logic;
1493
           DMA_us_Busy_LED             => LEDs_IO_pin(6)      , -- OUT std_logic;
1494
           DMA_ds_Done                 => DMA_ds_Done         , -- OUT std_logic;
1495
           DMA_ds_Busy                 => DMA_ds_Busy         , -- OUT std_logic;
1496
           DMA_ds_Busy_LED             => LEDs_IO_pin(4)      , -- OUT std_logic;
1497
 
1498
           -------------------
1499
           -- DDR Interface
1500
           DDR_Ready                   => DDR_Ready           , --  IN    std_logic;
1501
 
1502
           DDR_wr_sof                  => DDR_wr_sof          , --  OUT   std_logic;
1503
           DDR_wr_eof                  => DDR_wr_eof          , --  OUT   std_logic;
1504
           DDR_wr_v                    => DDR_wr_v            , --  OUT   std_logic;
1505
           DDR_wr_FA                   => DDR_wr_FA           , --  OUT   std_logic;
1506
           DDR_wr_Shift                => DDR_wr_Shift        , --  OUT   std_logic;
1507
           DDR_wr_Mask                 => DDR_wr_Mask         , --  OUT   std_logic_vector(2-1 downto 0);
1508
           DDR_wr_din                  => DDR_wr_din          , --  OUT   std_logic_vector(C_DBUS_WIDTH-1 downto 0);
1509
           DDR_wr_full                 => DDR_wr_full         , --  IN    std_logic;
1510
 
1511
           DDR_rdc_sof                 => DDR_rdc_sof         , --  OUT   std_logic;
1512
           DDR_rdc_eof                 => DDR_rdc_eof         , --  OUT   std_logic;
1513
           DDR_rdc_v                   => DDR_rdc_v           , --  OUT   std_logic;
1514
           DDR_rdc_FA                  => DDR_rdc_FA          , --  OUT   std_logic;
1515
           DDR_rdc_Shift               => DDR_rdc_Shift       , --  OUT   std_logic;
1516
           DDR_rdc_din                 => DDR_rdc_din         , --  OUT   std_logic_vector(C_DBUS_WIDTH-1 downto 0);
1517
           DDR_rdc_full                => DDR_rdc_full        , --  IN    std_logic;
1518
 
1519
           -- DDR payload FIFO Read Port
1520
           DDR_FIFO_RdEn               => DDR_FIFO_RdEn      ,  -- OUT std_logic; 
1521
           DDR_FIFO_Empty              => DDR_FIFO_Empty     ,  -- IN  std_logic;
1522
           DDR_FIFO_RdQout             => DDR_FIFO_RdQout    ,  -- IN  std_logic_vector(C_DBUS_WIDTH-1 downto 0);
1523
 
1524
           -------------------
1525
           -- Transaction Interface
1526
           trn_lnk_up_n                => trn_lnk_up_n            ,
1527
           trn_rsrc_dsc_n              => trn_rsrc_dsc_n          ,
1528
           trn_rnp_ok_n                => trn_rnp_ok_n            ,
1529
           trn_tsrc_dsc_n              => trn_tsrc_dsc_n          ,
1530
           trn_tdst_dsc_n              => trn_tdst_dsc_n          ,
1531
           trn_tbuf_av                 => trn_tbuf_av             ,
1532
           trn_terrfwd_n               => trn_terrfwd_n           ,
1533
 
1534
           trn_clk                     => trn_clk                 ,
1535
           trn_reset_n                 => trn_reset_n             ,
1536
           trn_rsrc_rdy_n              => trn_rsrc_rdy_n          ,
1537
           trn_tdst_rdy_n              => trn_tdst_rdy_n          ,
1538
           trn_rsof_n                  => trn_rsof_n              ,
1539
           trn_reof_n                  => trn_reof_n              ,
1540
           trn_rerrfwd_n               => trn_rerrfwd_n           ,
1541
           trn_rrem_n                  => trn_rrem_n              ,
1542
           trn_rd                      => trn_rd                  ,
1543
 
1544
           cfg_interrupt_n             => cfg_interrupt_n         ,
1545
           cfg_interrupt_rdy_n         => cfg_interrupt_rdy_n     ,
1546
           cfg_interrupt_mmenable      => cfg_interrupt_mmenable  ,
1547
           cfg_interrupt_msienable     => cfg_interrupt_msienable ,
1548
           cfg_interrupt_di            => cfg_interrupt_di        ,
1549
           cfg_interrupt_do            => cfg_interrupt_do        ,
1550
           cfg_interrupt_assert_n      => cfg_interrupt_assert_n  ,
1551
 
1552
           trn_rbar_hit_n              => trn_rbar_hit_n          ,
1553
           trn_tsrc_rdy_n              => trn_tsrc_rdy_n          ,
1554
           trn_rdst_rdy_n              => trn_rdst_rdy_n          ,
1555
           trn_tsof_n                  => trn_tsof_n              ,
1556
           trn_teof_n                  => trn_teof_n              ,
1557
           trn_trem_n                  => trn_trem_n              ,
1558
           trn_td                      => trn_td                  ,
1559
 
1560
           Format_Shower               => Format_Shower           ,
1561
 
1562
           cfg_dcommand                => cfg_dcommand            ,
1563
           pcie_link_width             => pcie_link_width         ,
1564
           localId                     => localId
1565
           );
1566
 
1567
 
1568
  -- -----------------------------------------------------------------------
1569
  --  DDR SDRAM: control module USER LOGIC (2 BRAM Module: 
1570
  -- -----------------------------------------------------------------------
1571
 
1572
 
1573
   LoopBack_BRAM_Off:  if not USE_LOOPBACK_TEST generate
1574
 
1575
   DDRs_ctrl_module:
1576
   bram_DDRs_Control
1577
   GENERIC MAP (
1578
                C_ASYNFIFO_WIDTH    => 72 ,
1579
                P_SIMULATION        => FALSE
1580
               )
1581
   PORT MAP(
1582
 
1583
      user_wr_weA             =>  user_wr_weA   ,
1584
      user_wr_addrA           =>  user_wr_addrA ,
1585
      user_wr_dinA            =>  user_wr_dinA  ,
1586
      user_rd_addrB           =>  user_rd_addrB ,
1587
      user_rd_doutB           =>  user_rd_doutB ,
1588
      user_rd_clk             =>  clk_200MHz    ,
1589
      user_wr_clk             =>  clk_200MHz    ,
1590
      -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
1591
      DDR_wr_sof               => DDR_wr_sof          , --  IN    std_logic;
1592
      DDR_wr_eof               => DDR_wr_eof          , --  IN    std_logic;
1593
      DDR_wr_v                 => DDR_wr_v            , --  IN    std_logic;
1594
      DDR_wr_FA                => DDR_wr_FA           , --  IN    std_logic;
1595
      DDR_wr_Shift             => DDR_wr_Shift        , --  IN    std_logic;
1596
      DDR_wr_Mask              => DDR_wr_Mask         , --  IN    std_logic_vector(2-1 downto 0);
1597
      DDR_wr_din               => DDR_wr_din          , --  IN    std_logic_vector(C_DBUS_WIDTH-1 downto 0);
1598
      DDR_wr_full              => DDR_wr_full         , --  OUT   std_logic;
1599
 
1600
      DDR_rdc_sof              => DDR_rdc_sof         , --  IN    std_logic;
1601
      DDR_rdc_eof              => DDR_rdc_eof         , --  IN    std_logic;
1602
      DDR_rdc_v                => DDR_rdc_v           , --  IN    std_logic;
1603
      DDR_rdc_FA               => DDR_rdc_FA          , --  IN    std_logic;
1604
      DDR_rdc_Shift            => DDR_rdc_Shift       , --  IN    std_logic;
1605
      DDR_rdc_din              => DDR_rdc_din         , --  IN    std_logic_vector(C_DBUS_WIDTH-1 downto 0);
1606
      DDR_rdc_full             => DDR_rdc_full        , --  OUT   std_logic;
1607
 
1608
      -- DDR payload FIFO Read Port
1609
      DDR_FIFO_RdEn            => DDR_FIFO_RdEn       ,  -- IN    std_logic; 
1610
      DDR_FIFO_Empty           => DDR_FIFO_Empty      ,  -- OUT   std_logic;
1611
      DDR_FIFO_RdQout          => DDR_FIFO_RdQout     ,  -- OUT   std_logic_vector(C_DBUS_WIDTH-1 downto 0);
1612
 
1613
      -- Common interface
1614
      DDR_Ready                => DDR_Ready           , --  OUT   std_logic;
1615
      DDR_Blinker              => DDR_Blinker         , --  OUT   std_logic;
1616
      mem_clk                  => trn_clk             , --  IN
1617
      trn_clk                  => trn_clk             , --  IN    std_logic;
1618
                Sim_Zeichen              => Sim_Zeichen         , --  OUT   std_logic;  
1619
      trn_reset_n              => trn_reset_n           --  IN    std_logic
1620
    );
1621
 
1622
        end generate;
1623
 
1624
 
1625
 
1626
   LoopBack_BRAM_On:  if USE_LOOPBACK_TEST generate
1627
 
1628
 
1629
   DDRs_ctrl_module:
1630
   bram_DDRs_Control_loopback
1631
   GENERIC MAP (
1632
                C_ASYNFIFO_WIDTH    => 72 ,
1633
                P_SIMULATION        => FALSE
1634
               )
1635
   PORT MAP(
1636
 
1637
      -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
1638
      DDR_wr_sof               => DDR_wr_sof          , --  IN    std_logic;
1639
      DDR_wr_eof               => DDR_wr_eof          , --  IN    std_logic;
1640
      DDR_wr_v                 => DDR_wr_v            , --  IN    std_logic;
1641
      DDR_wr_FA                => DDR_wr_FA           , --  IN    std_logic;
1642
      DDR_wr_Shift             => DDR_wr_Shift        , --  IN    std_logic;
1643
      DDR_wr_Mask              => DDR_wr_Mask         , --  IN    std_logic_vector(2-1 downto 0);
1644
      DDR_wr_din               => DDR_wr_din          , --  IN    std_logic_vector(C_DBUS_WIDTH-1 downto 0);
1645
      DDR_wr_full              => DDR_wr_full         , --  OUT   std_logic;
1646
 
1647
      DDR_rdc_sof              => DDR_rdc_sof         , --  IN    std_logic;
1648
      DDR_rdc_eof              => DDR_rdc_eof         , --  IN    std_logic;
1649
      DDR_rdc_v                => DDR_rdc_v           , --  IN    std_logic;
1650
      DDR_rdc_FA               => DDR_rdc_FA          , --  IN    std_logic;
1651
      DDR_rdc_Shift            => DDR_rdc_Shift       , --  IN    std_logic;
1652
      DDR_rdc_din              => DDR_rdc_din         , --  IN    std_logic_vector(C_DBUS_WIDTH-1 downto 0);
1653
      DDR_rdc_full             => DDR_rdc_full        , --  OUT   std_logic;
1654
 
1655
      -- DDR payload FIFO Read Port
1656
      DDR_FIFO_RdEn            => DDR_FIFO_RdEn       ,  -- IN    std_logic; 
1657
      DDR_FIFO_Empty           => DDR_FIFO_Empty      ,  -- OUT   std_logic;
1658
      DDR_FIFO_RdQout          => DDR_FIFO_RdQout     ,  -- OUT   std_logic_vector(C_DBUS_WIDTH-1 downto 0);
1659
 
1660
      -- Common interface
1661
      DDR_Ready                => DDR_Ready           , --  OUT   std_logic;
1662
      DDR_Blinker              => DDR_Blinker         , --  OUT   std_logic;
1663
      mem_clk                  => trn_clk             , --  IN
1664
      trn_clk                  => trn_clk             , --  IN    std_logic;
1665
                Sim_Zeichen              => Sim_Zeichen         , --  OUT   std_logic;  
1666
      trn_reset_n              => trn_reset_n           --  IN    std_logic
1667
    );
1668
 
1669
   end generate;
1670
 
1671
 
1672
 
1673
    LEDs_IO_pin(0)    <= trn_reset_n xor Format_Shower;
1674
    LEDs_IO_pin(1)    <= trn_lnk_up_n  ;
1675
    LEDs_IO_pin(2)    <= Format_Shower ;
1676
    LEDs_IO_pin(3)    <= trn_Blinker   ;
1677
 
1678
 
1679
 
1680
    ------------------------ -----------------------
1681
    -- Event Buffer wrapper (FIFO Module: H2B & B2H)
1682
    ------------------------ -----------------------
1683
 
1684
   LoopBack_FIFO_Off:  if not USE_LOOPBACK_TEST generate
1685
 
1686
    queue_buffer0:
1687
    eb_wrapper
1688
      port map (
1689
 
1690
         H2B_wr_clk                     => trn_clk                              ,
1691
         H2B_wr_en                      => eb_we                                        ,
1692
         H2B_wr_din                     => eb_din                                       ,
1693
         H2B_wr_pfull                   => eb_pfull                             ,
1694
         H2B_wr_full                    => eb_full                              ,
1695
         H2B_wr_data_count    => H2B_wr_data_count(C_EMU_FIFO_DC_WIDTH-1+1 downto 1) ,
1696
 
1697
         H2B_rd_clk           => clk_200MHz                     ,
1698
                        H2B_rd_en            => user_rd_en              ,
1699
         H2B_rd_dout          => user_rd_dout           ,
1700
         H2B_rd_pempty        => user_rd_pempty         ,
1701
         H2B_rd_empty         => user_rd_empty          ,
1702
         H2B_rd_valid         => user_rd_valid          ,
1703
         H2B_rd_data_count    => user_rd_data_count     ,
1704
 
1705
                        B2H_wr_clk           => clk_200MHz                      ,
1706
         B2H_wr_en            => user_wr_en             ,
1707
         B2H_wr_din           => user_wr_din            ,
1708
         B2H_wr_pfull         => user_wr_pfull          ,
1709
         B2H_wr_full          => user_wr_full           ,
1710
         B2H_wr_data_count    => user_wr_data_count     ,
1711
 
1712
 
1713
         B2H_rd_clk             => trn_clk                              ,
1714
         B2H_rd_en              => eb_re                                ,
1715
         B2H_rd_dout            => eb_dout                              ,
1716
         B2H_rd_pempty          => eb_pempty                            ,
1717
         B2H_rd_empty           => eb_empty                             ,
1718
         B2H_rd_valid           => eb_valid                             ,
1719
         B2H_rd_data_count      => B2H_rd_data_count(C_EMU_FIFO_DC_WIDTH-1+1 downto 1) ,
1720
 
1721
         rst                                    => eb_rst
1722
         );
1723
 
1724
 
1725
 
1726
                --- 64 bits to 32 bits transformation ( --> Count * 2)--- 
1727
      B2H_rd_data_count(C_FIFO_DC_WIDTH downto C_EMU_FIFO_DC_WIDTH+1)
1728
                        <= C_ALL_ZEROS(C_FIFO_DC_WIDTH downto C_EMU_FIFO_DC_WIDTH+1);
1729
      B2H_rd_data_count(0) <= '0';
1730
 
1731
      H2B_wr_data_count(C_FIFO_DC_WIDTH downto C_EMU_FIFO_DC_WIDTH+1)
1732
                        <= C_ALL_ZEROS(C_FIFO_DC_WIDTH downto C_EMU_FIFO_DC_WIDTH+1);
1733
      H2B_wr_data_count(0) <= '0';
1734
 
1735
 
1736
                --- Hybrid FIFO Signal used by PCIe interface and Linux Driver
1737
      eb_FIFO_ow      <= eb_we_up and eb_full;
1738
      fifo_reset_done <= not eb_rst;
1739
      eb_din(72-1 downto C_DBUS_WIDTH) <= (OTHERS=>'0');
1740
                eb_data_count   <= B2H_rd_data_count;
1741
 
1742
                --- Hybrid FIFO Status used by PCIe interface and Linux Driver ---
1743
                --- read: status ; write: reset H2B and B2H FIFO
1744
      eb_FIFO_Status(C_DBUS_WIDTH-1 downto C_FIFO_DC_WIDTH+3)
1745
                           <= (OTHERS=>'0');
1746
      eb_FIFO_Status(C_FIFO_DC_WIDTH+2 downto 3)
1747
                           <= B2H_rd_data_count(C_FIFO_DC_WIDTH downto 1);
1748
      eb_FIFO_Status(2)    <= '0';
1749
      eb_FIFO_Status(1)    <= eb_pfull;
1750
      eb_FIFO_Status(0)    <= eb_empty and fifo_reset_done;
1751
 
1752
 
1753
                --- Host2Board FIFO status used by user ---
1754
                --- read: H2B status ; write: nothing 
1755
      H2B_FIFO_Status(C_DBUS_WIDTH-1 downto C_FIFO_DC_WIDTH+3)
1756
                           <= (OTHERS=>'0');
1757
      H2B_FIFO_Status(C_FIFO_DC_WIDTH+2 downto 3)
1758
                           <= H2B_wr_data_count(C_FIFO_DC_WIDTH downto 1);
1759
      H2B_FIFO_Status(2)    <= '0';
1760
      H2B_FIFO_Status(1)    <= eb_pfull;
1761
      H2B_FIFO_Status(0)    <= eb_full and fifo_reset_done;
1762
 
1763
 
1764
                --- Board2Host FIFO status used by user ---
1765
                --- read: B2H status ; write: nothing 
1766
      B2H_FIFO_Status(C_DBUS_WIDTH-1 downto C_FIFO_DC_WIDTH+3)
1767
                           <= (OTHERS=>'0');
1768
      B2H_FIFO_Status(C_FIFO_DC_WIDTH+2 downto 3)
1769
                           <= B2H_rd_data_count(C_FIFO_DC_WIDTH downto 1);
1770
      B2H_FIFO_Status(2)    <= eb_valid;
1771
      B2H_FIFO_Status(1)    <= eb_pempty;
1772
      B2H_FIFO_Status(0)    <= eb_empty and fifo_reset_done;
1773
 
1774
 
1775
   end generate;
1776
 
1777
   LoopBack_FIFO_On:  if USE_LOOPBACK_TEST generate
1778
 
1779
     queue_buffer0:
1780
     eb_wrapper_loopback
1781
      port map (
1782
         wr_clk     => trn_clk   ,  -- eb_wclk   ,
1783
         wr_en      => eb_we  ,
1784
         din        => eb_din ,
1785
         pfull      => eb_pfull  ,
1786
         full       => eb_full   ,
1787
 
1788
         rd_clk     => trn_clk   ,  -- eb_rclk   ,
1789
         rd_en      => eb_re     ,
1790
         dout       => eb_dout   ,
1791
         pempty     => eb_pempty ,
1792
         empty      => eb_empty  ,
1793
 
1794
         data_count => eb_data_count(C_EMU_FIFO_DC_WIDTH-1+1 downto 1) ,
1795
         rst        => eb_rst
1796
         );
1797
 
1798
     eb_data_count(C_FIFO_DC_WIDTH downto C_EMU_FIFO_DC_WIDTH+1)
1799
                      <= C_ALL_ZEROS(C_FIFO_DC_WIDTH downto C_EMU_FIFO_DC_WIDTH+1);
1800
     eb_data_count(0)<= '0';
1801
     fifo_reset_done <= not eb_rst;
1802
     eb_FIFO_ow           <= eb_we_up and eb_full;
1803
     eb_din(72-1 downto C_DBUS_WIDTH)       <= (OTHERS=>'0');
1804
 
1805
     eb_FIFO_Status(C_DBUS_WIDTH-1 downto C_FIFO_DC_WIDTH+3)
1806
                         <= (OTHERS=>'0');
1807
     eb_FIFO_Status(C_FIFO_DC_WIDTH+2 downto 3)
1808
                         <= eb_data_count(C_FIFO_DC_WIDTH downto 1);
1809
     eb_FIFO_Status(2)    <= '0';
1810
     eb_FIFO_Status(1)    <= eb_pfull;
1811
     eb_FIFO_Status(0)    <= eb_empty and fifo_reset_done;
1812
 
1813
 
1814
     H2B_FIFO_Status <= (OTHERS=>'0');
1815
          H2B_FIFO_Status <= (OTHERS=>'0');
1816
 
1817
   end generate;
1818
 
1819
 
1820
end Behavioral;

powered by: WebSVN 2.1.0

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