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/] [pcie_sg_dma/] [Virtex6/] [ML605/] [rx_MWr_Channel.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
-- Design Name: 
6
-- Module Name:    rx_MWr_Transact - Behavioral 
7
-- Project Name: 
8
-- Target Devices: 
9
-- Tool versions: 
10
-- Description: 
11
--
12
-- Dependencies: 
13
--
14
-- Revision 1.10 - x4 timing constraints met.   02.02.2007
15
--
16
-- Revision 1.04 - Timing improved.     17.01.2007
17
--
18
-- Revision 1.02 - FIFO added.    20.12.2006
19
--
20
-- Revision 1.00 - first release. 14.12.2006
21
-- 
22
-- Additional Comments: 
23
--
24
----------------------------------------------------------------------------------
25
 
26
library IEEE;
27
use IEEE.STD_LOGIC_1164.ALL;
28
use IEEE.STD_LOGIC_ARITH.ALL;
29
use IEEE.STD_LOGIC_UNSIGNED.ALL;
30
 
31
library work;
32
use work.abb64Package.all;
33
 
34
-- Uncomment the following library declaration if instantiating
35
-- any Xilinx primitives in this code.
36
--library UNISIM;
37
--use UNISIM.VComponents.all;
38
 
39
entity rx_MWr_Transact is
40
    port (
41
      -- Transaction receive interface
42
      trn_rsof_n         : IN  std_logic;
43
      trn_reof_n         : IN  std_logic;
44
      trn_rd             : IN  std_logic_vector(C_DBUS_WIDTH-1 downto 0);
45
      trn_rrem_n         : IN  std_logic_vector(C_DBUS_WIDTH/8-1 downto 0);
46
      trn_rerrfwd_n      : IN  std_logic;
47
      trn_rsrc_rdy_n     : IN  std_logic;
48
      trn_rdst_rdy_n     : IN  std_logic;  -- !!
49
      trn_rsrc_dsc_n     : IN std_logic;
50
      trn_rbar_hit_n     : IN  std_logic_vector(C_BAR_NUMBER-1 downto 0);
51
--      trn_rfc_ph_av      : IN  std_logic_vector(7 downto 0);
52
--      trn_rfc_pd_av      : IN  std_logic_vector(11 downto 0);
53
--      trn_rfc_nph_av     : IN  std_logic_vector(7 downto 0);
54
--      trn_rfc_npd_av     : IN  std_logic_vector(11 downto 0);
55
--      trn_rfc_cplh_av    : IN  std_logic_vector(7 downto 0);
56
--      trn_rfc_cpld_av    : IN  std_logic_vector(11 downto 0);
57
 
58
      -- from pre-process module
59
      IOWr_Type          : IN  std_logic;
60
      MWr_Type           : IN  std_logic_vector(1 downto 0);
61
      Tlp_straddles_4KB  : IN  std_logic;
62
--      Last_DW_of_TLP     : IN  std_logic;
63
      Tlp_has_4KB        : IN  std_logic;
64
 
65
 
66
      -- Event Buffer write port
67
      eb_FIFO_we         : OUT std_logic;
68
      eb_FIFO_wsof       : OUT std_logic;
69
      eb_FIFO_weof       : OUT std_logic;
70
      eb_FIFO_din        : OUT std_logic_vector(C_DBUS_WIDTH-1 downto 0);
71
 
72
      -- Registers Write Port
73
      Regs_WrEn          : OUT std_logic;
74
      Regs_WrMask        : OUT std_logic_vector(2-1 downto 0);
75
      Regs_WrAddr        : OUT std_logic_vector(C_EP_AWIDTH-1 downto 0);
76
      Regs_WrDin         : OUT std_logic_vector(C_DBUS_WIDTH-1 downto 0);
77
 
78
      -- DDR write port
79
      DDR_wr_sof         : OUT std_logic;
80
      DDR_wr_eof         : OUT std_logic;
81
      DDR_wr_v           : OUT std_logic;
82
      DDR_wr_FA          : OUT std_logic;
83
      DDR_wr_Shift       : OUT std_logic;
84
      DDR_wr_Mask        : OUT std_logic_vector(2-1 downto 0);
85
      DDR_wr_din         : OUT std_logic_vector(C_DBUS_WIDTH-1 downto 0);
86
      DDR_wr_full        : IN  std_logic;
87
 
88
      -- Data generator table write
89
      tab_we             : OUT std_logic_vector(2-1 downto 0);
90
      tab_wa             : OUT std_logic_vector(12-1 downto 0);
91
      tab_wd             : OUT std_logic_vector(C_DBUS_WIDTH-1 downto 0);
92
 
93
      -- Common ports
94
      trn_clk            : IN  std_logic;
95
      trn_reset_n        : IN  std_logic;
96
      trn_lnk_up_n       : IN  std_logic
97
    );
98
 
99
end entity rx_MWr_Transact;
100
 
101
 
102
 
103
architecture Behavioral of rx_MWr_Transact is
104
 
105
 
106
  type RxMWrTrnStates is       ( ST_MWr_RESET
107
                               , ST_MWr_IDLE
108
--                               , ST_MWr3_HEAD1
109
--                               , ST_MWr4_HEAD1
110
                               , ST_MWr3_HEAD2
111
                               , ST_MWr4_HEAD2
112
--                               , ST_MWr4_HEAD3
113
--                               , ST_MWr_Last_HEAD
114
                               , ST_MWr4_1ST_DATA
115
                               , ST_MWr_1ST_DATA
116
                               , ST_MWr_1ST_DATA_THROTTLE
117
                               , ST_MWr_DATA
118
                               , ST_MWr_DATA_THROTTLE
119
                               , ST_MWr_LAST_DATA
120
                               );
121
 
122
  -- State variables
123
  signal RxMWrTrn_NextState    : RxMWrTrnStates;
124
  signal RxMWrTrn_State        : RxMWrTrnStates;
125
 
126
  -- trn_rx stubs
127
  signal  trn_rd_i             : std_logic_vector (C_DBUS_WIDTH-1 downto 0);
128
  signal  trn_rd_r1            : std_logic_vector (C_DBUS_WIDTH-1 downto 0);
129
 
130
  signal  trn_rrem_n_i         : std_logic_vector(C_DBUS_WIDTH/8-1 downto 0);
131
  signal  trn_rrem_n_r1        : std_logic_vector(C_DBUS_WIDTH/8-1 downto 0);
132
 
133
  signal  trn_rbar_hit_n_i     : std_logic_vector (C_BAR_NUMBER-1 downto 0);
134
  signal  trn_rbar_hit_n_r1    : std_logic_vector (C_BAR_NUMBER-1 downto 0);
135
 
136
  signal  trn_rsrc_rdy_n_i     : std_logic;
137
  signal  trn_rerrfwd_n_i      : std_logic;
138
  signal  trn_rsof_n_i         : std_logic;
139
  signal  trn_reof_n_i         : std_logic;
140
  signal  trn_rsrc_rdy_n_r1    : std_logic;
141
  signal  trn_reof_n_r1        : std_logic;
142
 
143
 
144
  -- packet RAM and packet FIFOs selection signals
145
  signal  FIFO_Space_Sel       : std_logic;
146
  signal  DDR_Space_Sel        : std_logic;
147
  signal  REGS_Space_Sel       : std_logic;
148
 
149
  -- DDR write port
150
  signal  DDR_wr_sof_i         : std_logic;
151
  signal  DDR_wr_eof_i         : std_logic;
152
  signal  DDR_wr_v_i           : std_logic;
153
  signal  DDR_wr_FA_i          : std_logic;
154
  signal  DDR_wr_Shift_i       : std_logic;
155
  signal  DDR_wr_Mask_i        : std_logic_vector(2-1 downto 0);
156
  signal  ddr_wr_1st_mask_hi   : std_logic;
157
  signal  DDR_wr_din_i         : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
158
  signal  DDR_wr_full_i        : std_logic;
159
 
160
  -- Data generator sequence table write
161
  signal  dg_table_Sel         : std_logic;
162
  signal  tab_wa_odd           : std_logic;
163
  signal  tab_we_i             : std_logic_vector(2-1 downto 0);
164
  signal  tab_wa_i             : std_logic_vector(12-1 downto 0);
165
  signal  tab_wd_i             : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
166
 
167
  -- Event Buffer write port
168
  signal  eb_FIFO_we_i         : std_logic;
169
  signal  eb_FIFO_wsof_i       : std_logic;
170
  signal  eb_FIFO_weof_i       : std_logic;
171
  signal  eb_FIFO_din_i        : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
172
 
173
  -- 
174
  signal  Regs_WrEn_i          : std_logic;
175
  signal  Regs_WrMask_i        : std_logic_vector(2-1 downto 0);
176
  signal  Regs_WrAddr_i        : std_logic_vector(C_EP_AWIDTH-1 downto 0);
177
  signal  Regs_WrDin_i         : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
178
 
179
  signal  trn_rdst_rdy_n_i     : std_logic;
180
  signal  trn_rsrc_dsc_n_i     : std_logic;
181
 
182
  signal  trn_rx_throttle      : std_logic;
183
  signal  trn_rx_throttle_r1   : std_logic;
184
 
185
  -- 1st DW BE = "0000" means the TLP is of zero-length.
186
  signal  MWr_Has_4DW_Header   : std_logic;
187
  signal  Tlp_is_Zero_Length   : std_logic;
188
  signal  MWr_Leng_in_Bytes    : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
189
 
190
 
191
 
192
begin
193
 
194
   -- Event Buffer write
195
   eb_FIFO_we        <= eb_FIFO_we_i   ;
196
   eb_FIFO_wsof      <= eb_FIFO_wsof_i ;
197
   eb_FIFO_weof      <= eb_FIFO_weof_i ;
198
   eb_FIFO_din       <= eb_FIFO_din_i  ;
199
 
200
   -- DDR
201
   DDR_wr_sof        <= DDR_wr_sof_i   ;
202
   DDR_wr_eof        <= DDR_wr_eof_i   ;
203
   DDR_wr_v          <= DDR_wr_v_i     ;
204
   DDR_wr_FA         <= DDR_wr_FA_i    ;
205
   DDR_wr_Shift      <= DDR_wr_Shift_i ;
206
   DDR_wr_Mask       <= DDR_wr_Mask_i  ;
207
   DDR_wr_din        <= DDR_wr_din_i   ;
208
   DDR_wr_full_i     <= DDR_wr_full    ;
209
 
210
   -- Data generator table
211
   tab_we            <= tab_we_i ;
212
   tab_wa            <= tab_wa_i ;
213
   tab_wd            <= tab_wd_i ;
214
 
215
   -- Registers writing
216
   Regs_WrEn         <= Regs_WrEn_i;
217
   Regs_WrMask       <= Regs_WrMask_i;
218
   Regs_WrAddr       <= Regs_WrAddr_i;
219
   Regs_WrDin        <= Regs_WrDin_i;    -- Mem_WrData;
220
 
221
 
222
 
223
   -- TLP info stubs
224
   trn_rd_i          <= trn_rd;
225
   trn_rsof_n_i      <= trn_rsof_n;
226
   trn_reof_n_i      <= trn_reof_n;
227
   trn_rrem_n_i      <= trn_rrem_n;
228
 
229
 
230
   -- Output to the core as handshaking
231
   trn_rerrfwd_n_i   <= trn_rerrfwd_n;
232
   trn_rbar_hit_n_i  <= trn_rbar_hit_n;
233
   trn_rsrc_dsc_n_i  <= trn_rsrc_dsc_n;
234
 
235
   -- Output to the core as handshaking
236
   trn_rsrc_rdy_n_i  <= trn_rsrc_rdy_n;
237
   trn_rdst_rdy_n_i  <= trn_rdst_rdy_n;
238
 
239
 
240
   -- ( trn_rsrc_rdy_n seems never deasserted during packet)
241
   trn_rx_throttle   <= trn_rsrc_rdy_n_i or trn_rdst_rdy_n_i;
242
 
243
 
244
-- -----------------------------------------------------
245
--   Delays: trn_rd_i, trn_rbar_hit_n_i, trn_reof_n_i
246
-- -----------------------------------------------------
247
   Sync_Delays_trn_rd_rbar_reof:
248
   process ( trn_clk )
249
   begin
250
      if trn_clk'event and trn_clk = '1' then
251
         trn_rsrc_rdy_n_r1  <= trn_rsrc_rdy_n_i;
252
         trn_reof_n_r1      <= trn_reof_n_i;
253
         trn_rd_r1          <= trn_rd_i;
254
         trn_rrem_n_r1      <= trn_rrem_n_i;
255
         trn_rbar_hit_n_r1  <= trn_rbar_hit_n_i;
256
         trn_rx_throttle_r1 <= trn_rx_throttle;
257
      end if;
258
   end process;
259
 
260
 
261
-- -----------------------------------------------------------------------
262
-- States synchronous
263
-- 
264
   Syn_RxTrn_States:
265
   process ( trn_clk, trn_reset_n)
266
   begin
267
      if trn_reset_n = '0' then
268
         RxMWrTrn_State   <= ST_MWr_RESET;
269
      elsif trn_clk'event and trn_clk = '1' then
270
         RxMWrTrn_State   <= RxMWrTrn_NextState;
271
      end if;
272
   end process;
273
 
274
 
275
-- Next States
276
   Comb_RxTrn_NextStates:
277
   process (
278
             RxMWrTrn_State
279
           , MWr_Type
280
--           , IOWr_Type
281
           , Tlp_straddles_4KB
282
           , trn_rx_throttle
283
           , trn_reof_n_i
284
--           , Last_DW_of_TLP
285
           )
286
   begin
287
     case RxMWrTrn_State  is
288
 
289
        when ST_MWr_RESET =>
290
              RxMWrTrn_NextState <= ST_MWr_IDLE;
291
 
292
        when ST_MWr_IDLE =>
293
          if trn_rx_throttle='0' then
294
           case MWr_Type is
295
             when C_TLP_TYPE_IS_MWR_H3 =>
296
               RxMWrTrn_NextState <= ST_MWr3_HEAD2;
297
             when C_TLP_TYPE_IS_MWR_H4 =>
298
               RxMWrTrn_NextState <= ST_MWr4_HEAD2;
299
             when OTHERS =>
300
--               if IOWr_Type='1' then   -- Temp taking IOWr as MWr3
301
--                 RxMWrTrn_NextState <= ST_MWr3_HEAD1;
302
--               else
303
                 RxMWrTrn_NextState <= ST_MWr_IDLE;
304
--               end if;
305
           end case;  -- MWr_Type
306
          else
307
            RxMWrTrn_NextState <= ST_MWr_IDLE;
308
          end if;
309
 
310
 
311
--        when ST_MWr3_HEAD1 =>
312
--           if trn_rx_throttle = '1' then
313
--              RxMWrTrn_NextState <= ST_MWr3_HEAD1;
314
--           else
315
--              RxMWrTrn_NextState <= ST_MWr3_HEAD2;
316
--           end if;
317
 
318
--        when ST_MWr4_HEAD1 =>
319
--           if trn_rx_throttle = '1' then
320
--              RxMWrTrn_NextState <= ST_MWr4_HEAD1;
321
--           else
322
--              RxMWrTrn_NextState <= ST_MWr4_HEAD2;
323
--           end if;
324
 
325
 
326
        when ST_MWr3_HEAD2 =>
327
           if trn_rx_throttle = '1' then
328
              RxMWrTrn_NextState <= ST_MWr3_HEAD2;
329
           elsif trn_reof_n_i = '0' then
330
              RxMWrTrn_NextState <= ST_MWr_IDLE;      -- ST_MWr_LAST_DATA;
331
           else
332
              RxMWrTrn_NextState <= ST_MWr_1ST_DATA;  -- ST_MWr_Last_HEAD;
333
           end if;
334
 
335
        when ST_MWr4_HEAD2 =>
336
           if trn_rx_throttle = '1' then
337
              RxMWrTrn_NextState <= ST_MWr4_HEAD2;
338
           else
339
              RxMWrTrn_NextState <= ST_MWr4_1ST_DATA;  -- ST_MWr4_HEAD3;
340
           end if;
341
 
342
--        when ST_MWr4_HEAD3 =>
343
--           if trn_rx_throttle = '1' then
344
--              RxMWrTrn_NextState <= ST_MWr4_HEAD3;
345
--           else
346
--              RxMWrTrn_NextState <= ST_MWr_Last_HEAD;
347
--           end if;
348
 
349
 
350
--        when ST_MWr_Last_HEAD =>
351
--           if trn_rx_throttle = '1' then
352
--              RxMWrTrn_NextState <= ST_MWr_Last_HEAD;
353
--           elsif Tlp_straddles_4KB = '1' then      -- !!
354
--              RxMWrTrn_NextState <= ST_MWr_IDLE;
355
----           elsif Last_DW_of_TLP='1' then
356
----              RxMWrTrn_NextState <= ST_MWr_LAST_DATA;
357
--           elsif trn_reof_n_i = '0' then
358
--              RxMWrTrn_NextState <= ST_MWr_LAST_DATA;
359
--           else
360
--              RxMWrTrn_NextState <= ST_MWr_1ST_DATA;
361
--           end if;
362
 
363
 
364
        when ST_MWr_1ST_DATA =>
365
           if trn_rx_throttle = '1' then
366
              RxMWrTrn_NextState <= ST_MWr_1ST_DATA_THROTTLE;
367
           elsif trn_reof_n_i = '0' then
368
              RxMWrTrn_NextState <= ST_MWr_IDLE;  -- ST_MWr_LAST_DATA;
369
           else
370
              RxMWrTrn_NextState <= ST_MWr_DATA;
371
           end if;
372
 
373
        when ST_MWr4_1ST_DATA =>
374
           if trn_rx_throttle = '1' then
375
              RxMWrTrn_NextState <= ST_MWr_1ST_DATA_THROTTLE;
376
           elsif trn_reof_n_i = '0' then
377
              RxMWrTrn_NextState <= ST_MWr_IDLE;  -- ST_MWr_LAST_DATA;
378
           else
379
              RxMWrTrn_NextState <= ST_MWr_DATA;
380
           end if;
381
 
382
        when ST_MWr_1ST_DATA_THROTTLE =>
383
           if trn_rx_throttle = '1' then
384
              RxMWrTrn_NextState <= ST_MWr_1ST_DATA_THROTTLE;
385
           elsif trn_reof_n_i = '0' then
386
              RxMWrTrn_NextState <= ST_MWr_IDLE;  -- ST_MWr_LAST_DATA;
387
           else
388
              RxMWrTrn_NextState <= ST_MWr_DATA;
389
           end if;
390
 
391
 
392
        when ST_MWr_DATA =>
393
           if trn_rx_throttle = '1' then
394
              RxMWrTrn_NextState <= ST_MWr_DATA_THROTTLE;
395
           elsif trn_reof_n_i = '0' then
396
              RxMWrTrn_NextState <= ST_MWr_LAST_DATA;
397
           else
398
              RxMWrTrn_NextState <= ST_MWr_DATA;
399
           end if;
400
 
401
 
402
        when ST_MWr_DATA_THROTTLE =>
403
           if trn_rx_throttle = '1' then
404
              RxMWrTrn_NextState <= ST_MWr_DATA_THROTTLE;
405
           elsif trn_reof_n_i = '0' then
406
              RxMWrTrn_NextState <= ST_MWr_LAST_DATA;
407
           else
408
              RxMWrTrn_NextState <= ST_MWr_DATA;
409
           end if;
410
 
411
 
412
        when ST_MWr_LAST_DATA =>              -- Same as ST_MWr_IDLE, to support 
413
                                              --  back-to-back transactions
414
           case MWr_Type is
415
             when C_TLP_TYPE_IS_MWR_H3 =>
416
               RxMWrTrn_NextState <= ST_MWr3_HEAD2;
417
             when C_TLP_TYPE_IS_MWR_H4 =>
418
               RxMWrTrn_NextState <= ST_MWr4_HEAD2;
419
             when OTHERS =>
420
--               if IOWr_Type='1' then
421
--                 RxMWrTrn_NextState <= ST_MWr3_HEAD1;
422
--               else
423
                 RxMWrTrn_NextState <= ST_MWr_IDLE;
424
--               end if;
425
           end case;  -- MWr_Type
426
 
427
 
428
        when OTHERS =>
429
           RxMWrTrn_NextState <= ST_MWr_RESET;
430
 
431
     end case;
432
 
433
   end process;
434
 
435
 
436
 
437
-- ----------------------------------------------
438
-- registers Write Enable
439
-- 
440
   RxFSM_Output_Regs_Write_En:
441
   process ( trn_clk, trn_reset_n)
442
   begin
443
      if trn_reset_n = '0' then
444
         Regs_WrEn_i    <= '0';
445
         Regs_WrMask_i  <= (OTHERS=>'0');
446
         Regs_WrAddr_i  <= (OTHERS=>'1');
447
         Regs_WrDin_i   <= (OTHERS=>'0');
448
 
449
      elsif trn_clk'event and trn_clk = '1' then
450
 
451
         case RxMWrTrn_State is
452
 
453
            when ST_MWr3_HEAD2 =>
454
               if    REGS_Space_Sel='1' then
455
                  Regs_WrEn_i    <= not trn_rx_throttle;
456
                  Regs_WrMask_i  <= "01";
457
                  Regs_WrAddr_i  <= trn_rd_i(C_EP_AWIDTH-1+32 downto 2+32) & "00";
458
                  Regs_WrDin_i   <= Endian_Invert_32(trn_rd_i(31 downto 0)) & X"00000000";
459
--                  Regs_WrDin_i   <= Endian_Invert_64((trn_rd_r1(31 downto 0)&trn_rd_r1(63 downto 32)));
460
               else
461
                  Regs_WrEn_i    <= '0';
462
                  Regs_WrMask_i  <= (OTHERS=>'0');
463
                  Regs_WrAddr_i  <= (OTHERS=>'1');
464
                  Regs_WrDin_i   <= (OTHERS=>'0');
465
               end if;
466
 
467
            when ST_MWr4_HEAD2 =>
468
               if    REGS_Space_Sel='1' then
469
                  Regs_WrEn_i    <= '0';
470
                  Regs_WrMask_i  <= (OTHERS=>'0');
471
                  Regs_WrAddr_i  <= trn_rd_i(C_EP_AWIDTH-1 downto 2) &"00";
472
                  Regs_WrDin_i   <= Endian_Invert_64(trn_rd_i);
473
               else
474
                  Regs_WrEn_i    <= '0';
475
                  Regs_WrMask_i  <= (OTHERS=>'0');
476
                  Regs_WrAddr_i  <= (OTHERS=>'1');
477
                  Regs_WrDin_i   <= (OTHERS=>'0');
478
               end if;
479
 
480
            when ST_MWr_1ST_DATA =>
481
               if    REGS_Space_Sel='1' then
482
                  Regs_WrEn_i    <= not trn_rx_throttle;
483
                  Regs_WrDin_i   <= Endian_Invert_64 (trn_rd_i);
484
                  if trn_reof_n_i='0' then
485
                    Regs_WrMask_i  <= '0' & (trn_rrem_n_i(3) or trn_rrem_n_i(0));
486
                  else
487
                    Regs_WrMask_i  <= (OTHERS=>'0');
488
                  end if;
489
                  if MWr_Has_4DW_Header='1' then
490
                    Regs_WrAddr_i  <= Regs_WrAddr_i;
491
                  else
492
                    Regs_WrAddr_i  <= Regs_WrAddr_i + CONV_STD_LOGIC_VECTOR(4, C_EP_AWIDTH);
493
                  end if;
494
               else
495
                  Regs_WrEn_i    <= '0';
496
                  Regs_WrMask_i  <= (OTHERS=>'0');
497
                  Regs_WrAddr_i  <= (OTHERS=>'1');
498
                  Regs_WrDin_i   <= (OTHERS=>'0');
499
               end if;
500
 
501
            when ST_MWr4_1ST_DATA =>
502
               if    REGS_Space_Sel='1' then
503
                  Regs_WrEn_i    <= not trn_rx_throttle;
504
                  Regs_WrDin_i   <= Endian_Invert_64 (trn_rd_i);
505
                  if trn_reof_n_i='0' then
506
                    Regs_WrMask_i  <= '0' & (trn_rrem_n_i(3) or trn_rrem_n_i(0));
507
                  else
508
                    Regs_WrMask_i  <= (OTHERS=>'0');
509
                  end if;
510
--                  if MWr_Has_4DW_Header='1' then
511
                    Regs_WrAddr_i  <= Regs_WrAddr_i;
512
--                  else
513
--                    Regs_WrAddr_i  <= Regs_WrAddr_i + CONV_STD_LOGIC_VECTOR(4, C_EP_AWIDTH);
514
--                  end if;
515
               else
516
                  Regs_WrEn_i    <= '0';
517
                  Regs_WrMask_i  <= (OTHERS=>'0');
518
                  Regs_WrAddr_i  <= (OTHERS=>'1');
519
                  Regs_WrDin_i   <= (OTHERS=>'0');
520
               end if;
521
 
522
            when ST_MWr_1ST_DATA_THROTTLE =>
523
               if    REGS_Space_Sel='1' then
524
                  Regs_WrEn_i    <= not trn_rx_throttle;
525
                  Regs_WrDin_i   <= Endian_Invert_64 (trn_rd_i);
526
                  if trn_reof_n_i='0' then
527
                    Regs_WrMask_i  <= '0' & (trn_rrem_n_i(3) or trn_rrem_n_i(0));
528
                  else
529
                    Regs_WrMask_i  <= (OTHERS=>'0');
530
                  end if;
531
--                  if MWr_Has_4DW_Header='1' then
532
                    Regs_WrAddr_i  <= Regs_WrAddr_i;
533
--                  else
534
--                    Regs_WrAddr_i  <= Regs_WrAddr_i + CONV_STD_LOGIC_VECTOR(4, C_EP_AWIDTH);
535
--                  end if;
536
               else
537
                  Regs_WrEn_i    <= '0';
538
                  Regs_WrMask_i  <= (OTHERS=>'0');
539
                  Regs_WrAddr_i  <= (OTHERS=>'1');
540
                  Regs_WrDin_i   <= (OTHERS=>'0');
541
               end if;
542
 
543
            when ST_MWr_DATA =>
544
               if    REGS_Space_Sel='1' then
545
                  Regs_WrEn_i    <= not trn_rx_throttle;  -- '1';
546
                  if trn_reof_n_i='0' then
547
                    Regs_WrMask_i  <= '0' & (trn_rrem_n_i(3) or trn_rrem_n_i(0));
548
                  else
549
                    Regs_WrMask_i  <= (OTHERS=>'0');
550
                  end if;
551
                  Regs_WrAddr_i  <= Regs_WrAddr_i + CONV_STD_LOGIC_VECTOR(8, C_EP_AWIDTH);
552
                  Regs_WrDin_i   <= Endian_Invert_64 (trn_rd_i);
553
               else
554
                  Regs_WrEn_i    <= '0';
555
                  Regs_WrMask_i  <= (OTHERS=>'0');
556
                  Regs_WrAddr_i  <= (OTHERS=>'1');
557
                  Regs_WrDin_i   <= (OTHERS=>'0');
558
               end if;
559
 
560
 
561
            when ST_MWr_DATA_THROTTLE =>
562
               if    REGS_Space_Sel='1' then
563
                  Regs_WrEn_i    <= not trn_rx_throttle;  -- '1';
564
                  if trn_reof_n_i='0' then
565
                    Regs_WrMask_i  <= '0' & (trn_rrem_n_i(3) or trn_rrem_n_i(0));
566
                  else
567
                    Regs_WrMask_i  <= (OTHERS=>'0');
568
                  end if;
569
                  Regs_WrAddr_i  <= Regs_WrAddr_i;  -- + CONV_STD_LOGIC_VECTOR(8, C_EP_AWIDTH);
570
                  Regs_WrDin_i   <= Endian_Invert_64 (trn_rd_i);
571
               else
572
                  Regs_WrEn_i    <= '0';
573
                  Regs_WrMask_i  <= (OTHERS=>'0');
574
                  Regs_WrAddr_i  <= (OTHERS=>'1');
575
                  Regs_WrDin_i   <= (OTHERS=>'0');
576
               end if;
577
 
578
 
579
            when OTHERS =>
580
               Regs_WrEn_i    <= '0';
581
               Regs_WrMask_i  <= (OTHERS=>'0');
582
               Regs_WrAddr_i  <= (OTHERS=>'1');
583
               Regs_WrDin_i   <= (OTHERS=>'0');
584
 
585
         end case;
586
 
587
      end if;
588
 
589
   end process;
590
 
591
 
592
 
593
-- -----------------------------------------------------------------------
594
-- Capture: REGS_Space_Sel
595
-- 
596
   Syn_Capture_REGS_Space_Sel:
597
   process ( trn_clk, trn_reset_n)
598
   begin
599
      if trn_reset_n = '0' then
600
         REGS_Space_Sel       <= '0';
601
      elsif trn_clk'event and trn_clk = '1' then
602
         if trn_rsof_n_i='0' then
603
            REGS_Space_Sel       <= (trn_rd_i(3) or trn_rd_i(2) or trn_rd_i(1) or trn_rd_i(0))
604
                                 and not trn_rbar_hit_n_i(CINT_REGS_SPACE_BAR);
605
         else
606
            REGS_Space_Sel       <= REGS_Space_Sel;
607
         end if;
608
      end if;
609
   end process;
610
 
611
 
612
-- -----------------------------------------------------------------------
613
-- Capture: MWr_Has_4DW_Header
614
--        : Tlp_is_Zero_Length
615
-- 
616
   Syn_Capture_MWr_Has_4DW_Header:
617
   process ( trn_clk, trn_reset_n)
618
   begin
619
      if trn_reset_n = '0' then
620
         MWr_Has_4DW_Header   <= '0';
621
         Tlp_is_Zero_Length   <= '0';
622
      elsif trn_clk'event and trn_clk = '1' then
623
         if trn_rsof_n_i='0' then
624
            MWr_Has_4DW_Header   <= trn_rd_i(C_TLP_FMT_BIT_BOT);
625
            Tlp_is_Zero_Length   <= not (trn_rd_i(3) or trn_rd_i(2) or trn_rd_i(1) or trn_rd_i(0));
626
         else
627
            MWr_Has_4DW_Header   <= MWr_Has_4DW_Header;
628
            Tlp_is_Zero_Length   <= Tlp_is_Zero_Length;
629
         end if;
630
      end if;
631
   end process;
632
 
633
-- -----------------------------------------------------------------------
634
-- Capture: MWr_Leng_in_Bytes
635
-- 
636
   Syn_Capture_MWr_Length_in_Bytes:
637
   process ( trn_clk, trn_reset_n)
638
   begin
639
      if trn_reset_n = '0' then
640
         MWr_Leng_in_Bytes   <= (OTHERS=>'0');
641
      elsif trn_clk'event and trn_clk = '1' then
642
         if trn_rsof_n_i='0' then
643
            -- Assume no 4KB length for MWr
644
            MWr_Leng_in_Bytes(C_TLP_FLD_WIDTH_OF_LENG+2 downto 2)
645
                                <= Tlp_has_4KB & trn_rd_i(C_TLP_LENG_BIT_TOP downto C_TLP_LENG_BIT_BOT);
646
         else
647
            MWr_Leng_in_Bytes   <= MWr_Leng_in_Bytes;
648
         end if;
649
      end if;
650
   end process;
651
 
652
 
653
-- ----------------------------------------------
654
--  Synchronous outputs:  DDR Space Select     --
655
-- ----------------------------------------------
656
   RxFSM_Output_DDR_Space_Selected:
657
   process ( trn_clk, trn_reset_n)
658
   begin
659
      if trn_reset_n = '0' then
660
         DDR_Space_Sel  <= '0';
661
         DDR_wr_sof_i   <= '0';
662
         DDR_wr_eof_i   <= '0';
663
         DDR_wr_v_i     <= '0';
664
         DDR_wr_FA_i    <= '0';
665
         DDR_wr_Shift_i <= '0';
666
         DDR_wr_Mask_i  <= (OTHERS=>'0');
667
         DDR_wr_din_i   <= (OTHERS=>'0');
668
         ddr_wr_1st_mask_hi <= '0';
669
 
670
      elsif trn_clk'event and trn_clk = '1' then
671
 
672
         case RxMWrTrn_State is
673
 
674
           when ST_MWr3_HEAD2 =>
675
             if trn_rbar_hit_n_r1(CINT_DDR_SPACE_BAR)='0'
676
                and Tlp_is_Zero_Length='0'
677
               then
678
                 DDR_Space_Sel  <= not trn_rd_i(32+19) and not trn_rd_i(32+18);   -- '1';
679
                 DDR_wr_sof_i   <= not trn_rd_i(32+19) and not trn_rd_i(32+18);   -- '1';
680
                 DDR_wr_eof_i   <= '0';
681
                 DDR_wr_v_i     <= not trn_rsrc_rdy_n_i and not trn_rd_i(32+19) and not trn_rd_i(32+18);
682
                 DDR_wr_FA_i    <= '0';
683
                 DDR_wr_Shift_i <= not trn_rd_i(2+32);
684
                 DDR_wr_Mask_i  <= (OTHERS=>'0');
685
                 ddr_wr_1st_mask_hi <= '1';
686
                 DDR_wr_din_i   <= MWr_Leng_in_Bytes(31 downto 0) & trn_rd_i(64-1 downto 32);
687
               else
688
                 DDR_Space_Sel  <= '0';
689
                 DDR_wr_sof_i   <= '0';
690
                 DDR_wr_eof_i   <= '0';
691
                 DDR_wr_v_i     <= '0';
692
                 DDR_wr_FA_i    <= '0';
693
                 DDR_wr_Shift_i <= '0';
694
                 DDR_wr_Mask_i  <= (OTHERS=>'0');
695
                 ddr_wr_1st_mask_hi <= '0';
696
                 DDR_wr_din_i   <= MWr_Leng_in_Bytes(31 downto 0) & trn_rd_i(64-1 downto 32);
697
               end if;
698
 
699
           when ST_MWr4_HEAD2 =>
700
             if trn_rbar_hit_n_r1(CINT_DDR_SPACE_BAR)='0'
701
                and Tlp_is_Zero_Length='0'
702
               then
703
                 DDR_Space_Sel  <= not trn_rd_i(19) and not trn_rd_i(18);   -- '1';
704
                 DDR_wr_sof_i   <= not trn_rd_i(19) and not trn_rd_i(18);   -- '1';
705
                 DDR_wr_eof_i   <= '0';
706
                 DDR_wr_v_i     <= not trn_rsrc_rdy_n_i and not trn_rd_i(19) and not trn_rd_i(18);
707
                 DDR_wr_FA_i    <= '0';
708
                 DDR_wr_Shift_i <= trn_rd_i(2);
709
                 DDR_wr_Mask_i  <= (OTHERS=>'0');
710
                 ddr_wr_1st_mask_hi <= '0';
711
                 DDR_wr_din_i   <= MWr_Leng_in_Bytes(31 downto 0) & trn_rd_i(32-1 downto 0);
712
               else
713
                 DDR_Space_Sel  <= '0';
714
                 DDR_wr_sof_i   <= '0';
715
                 DDR_wr_eof_i   <= '0';
716
                 DDR_wr_v_i     <= '0';
717
                 DDR_wr_FA_i    <= '0';
718
                 DDR_wr_Shift_i <= '0';
719
                 DDR_wr_Mask_i  <= (OTHERS=>'0');
720
                 ddr_wr_1st_mask_hi <= '0';
721
                 DDR_wr_din_i   <= MWr_Leng_in_Bytes(31 downto 0) & trn_rd_i(32-1 downto 0);
722
               end if;
723
 
724
           when ST_MWr4_1ST_DATA =>
725
               DDR_Space_Sel  <= DDR_Space_Sel;
726
               DDR_wr_sof_i   <= '0';
727
               DDR_wr_eof_i   <= '0';
728
               DDR_wr_v_i     <= '0';
729
               DDR_wr_FA_i    <= '0';
730
               DDR_wr_Shift_i <= '0';
731
               DDR_wr_Mask_i  <= (OTHERS=>'0');
732
               ddr_wr_1st_mask_hi <= '0';
733
               DDR_wr_din_i   <= (OTHERS=>'0');
734
 
735
 
736
            when OTHERS =>
737
               if trn_reof_n_r1='0' then
738
                  DDR_Space_Sel    <= '0';
739
               else
740
                  DDR_Space_Sel    <= DDR_Space_Sel;
741
               end if;
742
 
743
               if DDR_Space_Sel='1' then
744
                  DDR_wr_sof_i   <= '0';
745
                  DDR_wr_eof_i   <= not trn_reof_n_r1;
746
                  DDR_wr_v_i     <= not trn_rx_throttle_r1;  -- not trn_rsrc_rdy_n_r1;
747
                  DDR_wr_FA_i    <= '0';
748
                  DDR_wr_Shift_i <= '0';
749
                  DDR_wr_Mask_i  <= ddr_wr_1st_mask_hi & (trn_rrem_n_r1(3) or trn_rrem_n_r1(0));
750
                  DDR_wr_din_i   <= Endian_Invert_64 (trn_rd_r1);
751
               else
752
                  DDR_wr_sof_i   <= '0';
753
                  DDR_wr_eof_i   <= '0';
754
                  DDR_wr_v_i     <= '0';
755
                  DDR_wr_FA_i    <= '0';
756
                  DDR_wr_Shift_i <= '0';
757
                  DDR_wr_Mask_i  <= (OTHERS=>'0');
758
                  DDR_wr_din_i   <= Endian_Invert_64 (trn_rd_r1);
759
               end if;
760
               if DDR_wr_v_i='1' then
761
                  ddr_wr_1st_mask_hi <= '0';
762
               else
763
                  ddr_wr_1st_mask_hi <= ddr_wr_1st_mask_hi;
764
               end if;
765
 
766
         end case;
767
 
768
      end if;
769
 
770
   end process;
771
 
772
 
773
-- ----------------------------------------------
774
--  Synchronous outputs:  DGen Table write     --
775
-- ----------------------------------------------
776
   RxFSM_Output_DGen_Table_write:
777
   process ( trn_clk, trn_reset_n)
778
   begin
779
      if trn_reset_n = '0' then
780
         --  Assume every PIO MWr contains only 1 DW(32 bits) payload
781
         dg_table_Sel   <= '0';
782
         tab_we_i       <= (OTHERS=>'0');
783
         tab_wa_i       <= (OTHERS=>'0');
784
         tab_wd_i       <= (OTHERS=>'0');
785
         tab_wa_odd     <= '0';
786
 
787
      elsif trn_clk'event and trn_clk = '1' then
788
 
789
         case RxMWrTrn_State is
790
 
791
           when ST_MWr3_HEAD2 =>
792
             if trn_rbar_hit_n_r1(CINT_DDR_SPACE_BAR)='0'
793
                and Tlp_is_Zero_Length='0'
794
               then
795
                 dg_table_Sel   <= trn_rd_i(19) and trn_rd_i(18) and not trn_rd_i(17) and not trn_rd_i(16);  -- any expression
796
                 tab_we_i       <= (trn_rd_i(32+19) and trn_rd_i(32+18) and not trn_rd_i(32+17) and not trn_rd_i(32+16) and not trn_rd_i(34))
797
                                 & (trn_rd_i(32+19) and trn_rd_i(32+18) and not trn_rd_i(32+17) and not trn_rd_i(32+16) and trn_rd_i(34));
798
                 tab_wa_i       <= trn_rd_i(32+3+11 downto 32+3);
799
                 tab_wa_odd     <= trn_rd_i(32+2);
800
                 tab_wd_i       <= Endian_Invert_64 ( (trn_rd_i(32-1 downto 0) & trn_rd_i(32-1 downto 0)) );
801
               else
802
                 dg_table_Sel   <= '0';
803
                 tab_we_i       <= (OTHERS=>'0');
804
                 tab_wa_i       <= trn_rd_i(32+3+11 downto 32+3);
805
                 tab_wa_odd     <= trn_rd_i(32+2);
806
                 tab_wd_i       <= Endian_Invert_64 ( (trn_rd_i(32-1 downto 0) & trn_rd_i(32-1 downto 0)));
807
               end if;
808
 
809
           when ST_MWr4_HEAD2 =>
810
             if trn_rbar_hit_n_r1(CINT_DDR_SPACE_BAR)='0'
811
                and Tlp_is_Zero_Length='0'
812
               then
813
                 dg_table_Sel   <= trn_rd_i(19) and trn_rd_i(18) and not trn_rd_i(17) and not trn_rd_i(16);
814
                 tab_we_i       <= (OTHERS=>'0');
815
                 tab_wa_i       <= trn_rd_i(3+11 downto 3);
816
                 tab_wa_odd     <= trn_rd_i(2);
817
                 tab_wd_i       <= Endian_Invert_64 ( (trn_rd_i(64-1 downto 32) & trn_rd_i(64-1 downto 32)));
818
               else
819
                 dg_table_Sel   <= '0';
820
                 tab_we_i       <= (OTHERS=>'0');
821
                 tab_wa_i       <= trn_rd_i(3+11 downto 3);
822
                 tab_wa_odd     <= trn_rd_i(2);
823
                 tab_wd_i       <= Endian_Invert_64 ((trn_rd_i(64-1 downto 32) & trn_rd_i(64-1 downto 32)));
824
               end if;
825
 
826
 
827
           when ST_MWr4_1ST_DATA =>
828
               dg_table_Sel   <= dg_table_Sel;
829
               tab_we_i       <= (dg_table_Sel and not trn_rx_throttle and not tab_wa_odd)
830
                               & (dg_table_Sel and not trn_rx_throttle and tab_wa_odd);
831
               tab_wa_i       <= tab_wa_i;
832
               tab_wa_odd     <= tab_wa_odd;
833
               tab_wd_i       <= Endian_Invert_64 ((trn_rd_i(64-1 downto 32) & trn_rd_i(64-1 downto 32)));
834
 
835
 
836
           when ST_MWr_1ST_DATA_THROTTLE =>
837
               dg_table_Sel   <= dg_table_Sel;
838
               tab_we_i       <= (dg_table_Sel and not trn_rx_throttle and not tab_wa_odd)
839
                               & (dg_table_Sel and not trn_rx_throttle and tab_wa_odd);
840
               tab_wa_i       <= tab_wa_i;
841
               tab_wa_odd     <= tab_wa_odd;
842
               tab_wd_i       <= Endian_Invert_64 ((trn_rd_i(64-1 downto 32) & trn_rd_i(64-1 downto 32)));
843
 
844
 
845
            when OTHERS =>
846
               dg_table_Sel   <= '0';
847
               tab_we_i       <= (OTHERS=>'0');
848
               tab_wa_i       <= tab_wa_i;
849
               tab_wa_odd     <= tab_wa_odd;
850
               tab_wd_i       <= Endian_Invert_64 ((trn_rd_i(64-1 downto 32) & trn_rd_i(64-1 downto 32)));
851
 
852
         end case;
853
 
854
      end if;
855
 
856
   end process;
857
 
858
 
859
 
860
-- ----------------------------------------------
861
--  Synchronous outputs:  EB FIFO Select       --
862
-- ----------------------------------------------
863
   RxFSM_Output_FIFO_Space_Selected:
864
   process ( trn_clk, trn_reset_n)
865
   begin
866
      if trn_reset_n = '0' then
867
         FIFO_Space_Sel  <= '0';
868
         eb_FIFO_we_i    <= '0';
869
         eb_FIFO_wsof_i  <= '0';
870
         eb_FIFO_weof_i  <= '0';
871
         eb_FIFO_din_i   <= (OTHERS=>'0');
872
 
873
      elsif trn_clk'event and trn_clk = '1' then
874
 
875
         case RxMWrTrn_State is
876
 
877
           when ST_MWr3_HEAD2 =>
878
             if trn_rbar_hit_n_r1(CINT_FIFO_SPACE_BAR)='0'
879
                and Tlp_is_Zero_Length='0'
880
               then
881
                 FIFO_Space_Sel <= '1';
882
                 eb_FIFO_we_i   <= not trn_reof_n_i;           -- '1';
883
                 eb_FIFO_wsof_i <= not trn_reof_n_i;           -- '1';
884
                 eb_FIFO_weof_i <= not trn_reof_n_i;           -- '1';
885
                 eb_FIFO_din_i  <= Endian_Invert_64 ((trn_rd_i(32-1 downto 0) & trn_rd_i(32-1 downto 0)));
886
               else
887
                 FIFO_Space_Sel <= '0';
888
                 eb_FIFO_we_i   <= '0';
889
                 eb_FIFO_wsof_i <= '0';
890
                 eb_FIFO_weof_i <= '0';
891
                 eb_FIFO_din_i  <= Endian_Invert_64 ((trn_rd_i(32-1 downto 0) & trn_rd_i(32-1 downto 0)));
892
               end if;
893
 
894
           when ST_MWr_1ST_DATA =>
895
               FIFO_Space_Sel <= FIFO_Space_Sel;
896
               eb_FIFO_we_i   <= FIFO_Space_Sel and not trn_reof_n_i;           -- '1';
897
               eb_FIFO_wsof_i <= FIFO_Space_Sel and not trn_reof_n_i;           -- '1';
898
               eb_FIFO_weof_i <= FIFO_Space_Sel and not trn_reof_n_i;           -- '1';
899
               eb_FIFO_din_i  <= Endian_Invert_64 (( trn_rd_r1(32-1 downto 0) & trn_rd_i(64-1 downto 32) ));
900
 
901
 
902
           when ST_MWr4_HEAD2 =>
903
             if trn_rbar_hit_n_r1(CINT_FIFO_SPACE_BAR)='0'
904
                and Tlp_is_Zero_Length='0'
905
               then
906
                 FIFO_Space_Sel <= '1';
907
                 eb_FIFO_we_i   <= '0';
908
                 eb_FIFO_wsof_i <= '0';
909
                 eb_FIFO_weof_i <= '0';
910
                 eb_FIFO_din_i  <= (OTHERS=>'0');
911
               else
912
                 FIFO_Space_Sel <= '0';
913
                 eb_FIFO_we_i   <= '0';
914
                 eb_FIFO_wsof_i <= '0';
915
                 eb_FIFO_weof_i <= '0';
916
                 eb_FIFO_din_i  <= (OTHERS=>'0');
917
               end if;
918
 
919
           when ST_MWr4_1ST_DATA =>
920
               FIFO_Space_Sel <= FIFO_Space_Sel;
921
               eb_FIFO_we_i   <= FIFO_Space_Sel and not trn_reof_n_i;    -- trn_rx_throttle;
922
               eb_FIFO_wsof_i <= FIFO_Space_Sel and not trn_reof_n_i;    -- trn_rx_throttle;
923
               eb_FIFO_weof_i <= FIFO_Space_Sel and not trn_reof_n_i;    -- trn_rx_throttle;
924
                 if trn_rrem_n_i(3)='1' or trn_rrem_n_i(0)='1' then
925
                   eb_FIFO_din_i  <= Endian_Invert_64 ((trn_rd_i(64-1 downto 32) & trn_rd_i(64-1 downto 32)));
926
                 else
927
                   eb_FIFO_din_i  <= Endian_Invert_64 (trn_rd_i);
928
                 end if;
929
 
930
           when ST_MWr_1ST_DATA_THROTTLE =>
931
               if MWr_Has_4DW_Header='1' then
932
                 FIFO_Space_Sel <= FIFO_Space_Sel;
933
                 eb_FIFO_we_i   <= FIFO_Space_Sel and not trn_reof_n_i;  -- trn_rx_throttle;
934
                 eb_FIFO_wsof_i <= FIFO_Space_Sel and not trn_reof_n_i;  -- trn_rx_throttle;
935
                 eb_FIFO_weof_i <= FIFO_Space_Sel and not trn_reof_n_i;  -- trn_rx_throttle;
936
                 if trn_rrem_n_i(3)='1' or trn_rrem_n_i(0)='1' then
937
                   eb_FIFO_din_i  <= Endian_Invert_64 ((trn_rd_i(64-1 downto 32) & trn_rd_i(64-1 downto 32)));
938
                 else
939
                   eb_FIFO_din_i  <= Endian_Invert_64 (trn_rd_i);
940
                 end if;
941
               else
942
                 FIFO_Space_Sel <= FIFO_Space_Sel;
943
                 eb_FIFO_we_i   <= FIFO_Space_Sel and not trn_reof_n_i;           -- '1';
944
                 eb_FIFO_wsof_i <= FIFO_Space_Sel and not trn_reof_n_i;           -- '1';
945
                 eb_FIFO_weof_i <= FIFO_Space_Sel and not trn_reof_n_i;           -- '1';
946
                 eb_FIFO_din_i  <= Endian_Invert_64 (( trn_rd_r1(32-1 downto 0) & trn_rd_i(64-1 downto 32) ));
947
               end if;
948
 
949
            when OTHERS =>
950
               FIFO_Space_Sel <= '0';
951
               eb_FIFO_we_i   <= '0';
952
               eb_FIFO_wsof_i <= '0';
953
               eb_FIFO_weof_i <= '0';
954
               eb_FIFO_din_i  <= (OTHERS=>'0');
955
 
956
         end case;
957
 
958
      end if;
959
 
960
   end process;
961
 
962
 
963
end architecture Behavioral;

powered by: WebSVN 2.1.0

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