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

Subversion Repositories pcie_ds_dma

[/] [pcie_ds_dma/] [trunk/] [core/] [ds_dma64/] [pcie_src/] [pcie_core64_m1/] [top/] [pcie_core64_m1.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dsmv
-------------------------------------------------------------------------------
2
--
3
-- Title       : pcie_core64_m1
4
-- Author      : Dmitry Smekhov
5
-- Company     : Instrumental Systems 
6
-- E-mail      : dsmv@insys.ru
7
--
8
-- Version     : 1.0
9
--
10
-------------------------------------------------------------------------------
11
--
12
-- Description :  Контроллер шины PCI Express 
13
--
14
-------------------------------------------------------------------------------
15
 
16
 
17
 
18
library ieee;
19
use ieee.std_logic_1164.all;
20
 
21
use work.core64_type_pkg.all;
22
 
23
package pcie_core64_m1_pkg is
24
 
25
--! контроллер PCI-Express 
26
component pcie_core64_m1 is
27
        generic (
28
                is_simulation   : integer:=0     --! 0 - синтез, 1 - моделирование 
29
        );
30
 
31
        port (
32
 
33
                ---- PCI-Express ----
34
                txp                             : out std_logic_vector( 7 downto 0 );
35
                txn                             : out std_logic_vector( 7 downto 0 );
36
 
37
                rxp                             : in  std_logic_vector( 7 downto 0 );
38
                rxn                             : in  std_logic_vector( 7 downto 0 );
39
 
40
                mgt250                  : in  std_logic; -- тактовая частота 250 MHz от PCI_Express
41
 
42
                perst                   : in  std_logic;        -- 0 - сброс                                               
43
 
44
                px                              : out std_logic_vector( 7 downto 0 );    --! контрольные точки 
45
 
46
                pcie_lstatus    : out std_logic_vector( 15 downto 0 ); -- регистр LSTATUS
47
                pcie_link_up    : out std_logic;        -- 0 - завершена инициализация PCI-Express
48
 
49
 
50
                ---- Локальная шина ----                          
51
                clk_out                 : out std_logic;        --! тактовая частота 250 MHz              
52
                reset_out               : out std_logic;        --! 0 - сброс
53
                dcm_rstp                : out std_logic;        --! 1 - сброс DCM 266 МГц
54
 
55
                ---- BAR0 - блоки управления ----
56
                bp_host_data    : out std_logic_vector( 31 downto 0 );   --! шина данных - выход 
57
                bp_data                 : in  std_logic_vector( 31 downto 0 );  --! шина данных - вход
58
                bp_adr                  : out std_logic_vector( 19 downto 0 );   --! адрес регистра 
59
                bp_we                   : out std_logic_vector( 3 downto 0 );    --! 1 - запись в регистры 
60
                bp_rd                   : out std_logic_vector( 3 downto 0 );   --! 1 - чтение из регистров блока 
61
                bp_sel                  : out std_logic_vector( 1 downto 0 );    --! номер блока для чтения 
62
                bp_reg_we               : out std_logic;                        --! 1 - запись в регистр по адресам   0x100000 - 0x1FFFFF 
63
                bp_reg_rd               : out std_logic;                        --! 1 - чтение из регистра по адресам 0x100000 - 0x1FFFFF 
64
                bp_irq                  : in  std_logic;                        --! 1 - запрос прерывания 
65
 
66
                ---- BAR1 ----  
67
                aclk                    : in std_logic;                         --! тактовая частота локальной шины - 266 МГц
68
                aclk_lock               : in std_logic;                         --! 1 - захват частоты
69
                pb_master               : out type_pb_master;           --! запрос 
70
                pb_slave                : in  type_pb_slave                     --! ответ  
71
 
72
 
73
 
74
        );
75
end component;
76
 
77
end package;
78
 
79
 
80
 
81
library ieee;
82
use ieee.std_logic_1164.all;
83
 
84
use work.core64_type_pkg.all;
85
use work.core64_rx_engine_pkg.all;
86
use work.core64_tx_engine_pkg.all;
87
use work.core64_reg_access_pkg.all;
88
use work.core64_pb_disp_pkg.all;
89
use work.block_pe_fifo_ext_pkg.all;
90
use work.core64_interrupt_pkg.all;
91
 
92
--! контроллер PCI-Express 
93
entity pcie_core64_m1 is
94
        generic (
95
                is_simulation   : integer:=0     --! 0 - синтез, 1 - моделирование 
96
        );
97
 
98
        port (
99
 
100
                ---- PCI-Express ----
101
                txp                             : out std_logic_vector( 7 downto 0 );
102
                txn                             : out std_logic_vector( 7 downto 0 );
103
 
104
                rxp                             : in  std_logic_vector( 7 downto 0 );
105
                rxn                             : in  std_logic_vector( 7 downto 0 );
106
 
107
                mgt250                  : in  std_logic; -- тактовая частота 250 MHz от PCI_Express
108
 
109
                perst                   : in  std_logic;        -- 0 - сброс                                               
110
 
111
                px                              : out std_logic_vector( 7 downto 0 );    --! контрольные точки 
112
 
113
                pcie_lstatus    : out std_logic_vector( 15 downto 0 ); -- регистр LSTATUS
114
                pcie_link_up    : out std_logic;        -- 0 - завершена инициализация PCI-Express
115
 
116
 
117
                ---- Локальная шина ----                          
118
                clk_out                 : out std_logic;        --! тактовая частота 250 MHz              
119
                reset_out               : out std_logic;        --! 0 - сброс
120
                dcm_rstp                : out std_logic;        --! 1 - сброс DCM 266 МГц
121
 
122
                ---- BAR0 - блоки управления ----
123
                bp_host_data    : out std_logic_vector( 31 downto 0 );   --! шина данных - выход 
124
                bp_data                 : in  std_logic_vector( 31 downto 0 );  --! шина данных - вход
125
                bp_adr                  : out std_logic_vector( 19 downto 0 );   --! адрес регистра 
126
                bp_we                   : out std_logic_vector( 3 downto 0 );    --! 1 - запись в регистры 
127
                bp_rd                   : out std_logic_vector( 3 downto 0 );   --! 1 - чтение из регистров блока 
128
                bp_sel                  : out std_logic_vector( 1 downto 0 );    --! номер блока для чтения 
129
                bp_reg_we               : out std_logic;                        --! 1 - запись в регистр по адресам   0x100000 - 0x1FFFFF 
130
                bp_reg_rd               : out std_logic;                        --! 1 - чтение из регистра по адресам 0x100000 - 0x1FFFFF 
131
                bp_irq                  : in  std_logic;                        --! 1 - запрос прерывания 
132
 
133
                ---- BAR1 ----  
134
                aclk                    : in std_logic;                         --! тактовая частота локальной шины - 266 МГц
135
                aclk_lock               : in std_logic;                         --! 1 - захват частоты
136
                pb_master               : out type_pb_master;           --! запрос 
137
                pb_slave                : in  type_pb_slave                     --! ответ  
138
 
139
 
140
        );
141
end pcie_core64_m1;
142
 
143
 
144
architecture pcie_core64_m1 of pcie_core64_m1 is
145
 
146
 
147
component ctrl_pcie_x8
148
  port (
149
    pci_exp_rxn : in std_logic_vector((8 - 1) downto 0);
150
    pci_exp_rxp : in std_logic_vector((8 - 1) downto 0);
151
    pci_exp_txn : out std_logic_vector((8 - 1) downto 0);
152
    pci_exp_txp : out std_logic_vector((8 - 1) downto 0);
153
 
154
    sys_clk : in STD_LOGIC;
155
    sys_reset_n : in STD_LOGIC;
156
 
157
  refclkout         : out std_logic;
158
 
159
 
160
    trn_clk : out STD_LOGIC;
161
    trn_reset_n : out STD_LOGIC;
162
    trn_lnk_up_n : out STD_LOGIC;
163
 
164
    trn_td : in STD_LOGIC_VECTOR((64 - 1) downto 0);
165
    trn_trem_n: in STD_LOGIC_VECTOR (7 downto 0);
166
    trn_tsof_n : in STD_LOGIC;
167
    trn_teof_n : in STD_LOGIC;
168
    trn_tsrc_dsc_n : in STD_LOGIC;
169
    trn_tsrc_rdy_n : in STD_LOGIC;
170
    trn_tdst_dsc_n : out STD_LOGIC;
171
    trn_tdst_rdy_n : out STD_LOGIC;
172
    trn_terrfwd_n : in STD_LOGIC ;
173
    trn_tbuf_av : out STD_LOGIC_VECTOR (( 4 -1 ) downto 0 );
174
 
175
    trn_rd : out STD_LOGIC_VECTOR((64 - 1) downto 0);
176
    trn_rrem_n: out STD_LOGIC_VECTOR (7 downto 0);
177
    trn_rsof_n : out STD_LOGIC;
178
    trn_reof_n : out STD_LOGIC;
179
    trn_rsrc_dsc_n : out STD_LOGIC;
180
    trn_rsrc_rdy_n : out STD_LOGIC;
181
    trn_rbar_hit_n : out STD_LOGIC_VECTOR ( 6 downto 0 );
182
    trn_rdst_rdy_n : in STD_LOGIC;
183
    trn_rerrfwd_n : out STD_LOGIC;
184
    trn_rnp_ok_n : in STD_LOGIC;
185
    trn_rfc_npd_av : out STD_LOGIC_VECTOR ( 11 downto 0 );
186
    trn_rfc_nph_av : out STD_LOGIC_VECTOR ( 7 downto 0 );
187
    trn_rfc_pd_av : out STD_LOGIC_VECTOR ( 11 downto 0 );
188
    trn_rfc_ph_av : out STD_LOGIC_VECTOR ( 7 downto 0 );
189
    trn_rcpl_streaming_n      : in STD_LOGIC;
190
 
191
    cfg_do : out STD_LOGIC_VECTOR ( 31 downto 0 );
192
    cfg_rd_wr_done_n : out STD_LOGIC;
193
    cfg_di : in STD_LOGIC_VECTOR ( 31 downto 0 );
194
    cfg_byte_en_n : in STD_LOGIC_VECTOR ( 3 downto 0 );
195
    cfg_dwaddr : in STD_LOGIC_VECTOR ( 9 downto 0 );
196
    cfg_wr_en_n : in STD_LOGIC;
197
    cfg_rd_en_n : in STD_LOGIC;
198
 
199
    cfg_err_cor_n : in STD_LOGIC;
200
    cfg_err_cpl_abort_n : in STD_LOGIC;
201
    cfg_err_cpl_timeout_n : in STD_LOGIC;
202
    cfg_err_cpl_unexpect_n : in STD_LOGIC;
203
    cfg_err_ecrc_n : in STD_LOGIC;
204
    cfg_err_posted_n : in STD_LOGIC;
205
    cfg_err_tlp_cpl_header : in STD_LOGIC_VECTOR ( 47 downto 0 );
206
    cfg_err_ur_n : in STD_LOGIC;
207
    cfg_err_cpl_rdy_n : out STD_LOGIC;
208
    cfg_err_locked_n : in STD_LOGIC;
209
    cfg_interrupt_n : in STD_LOGIC;
210
    cfg_interrupt_rdy_n : out STD_LOGIC;
211
    cfg_pm_wake_n : in STD_LOGIC;
212
    cfg_pcie_link_state_n : out STD_LOGIC_VECTOR ( 2 downto 0 );
213
    cfg_to_turnoff_n : out STD_LOGIC;
214
    cfg_interrupt_assert_n : in  STD_LOGIC;
215
    cfg_interrupt_di : in  STD_LOGIC_VECTOR(7 downto 0);
216
    cfg_interrupt_do : out STD_LOGIC_VECTOR(7 downto 0);
217
    cfg_interrupt_mmenable : out STD_LOGIC_VECTOR(2 downto 0);
218
    cfg_interrupt_msienable: out STD_LOGIC;
219
 
220
    cfg_trn_pending_n : in STD_LOGIC;
221
    cfg_bus_number : out STD_LOGIC_VECTOR ( 7 downto 0 );
222
    cfg_device_number : out STD_LOGIC_VECTOR ( 4 downto 0 );
223
    cfg_function_number : out STD_LOGIC_VECTOR ( 2 downto 0 );
224
    cfg_status : out STD_LOGIC_VECTOR ( 15 downto 0 );
225
    cfg_command : out STD_LOGIC_VECTOR ( 15 downto 0 );
226
    cfg_dstatus : out STD_LOGIC_VECTOR ( 15 downto 0 );
227
    cfg_dcommand : out STD_LOGIC_VECTOR ( 15 downto 0 );
228
    cfg_lstatus : out STD_LOGIC_VECTOR ( 15 downto 0 );
229
    cfg_lcommand : out STD_LOGIC_VECTOR ( 15 downto 0 );
230
    cfg_dsn: in STD_LOGIC_VECTOR (63 downto 0 );
231
 
232
    fast_train_simulation_only : in STD_LOGIC
233
 
234
  );
235
 
236
end component;
237
 
238
 
239
--signal     sys_clk_c : std_logic;
240
 
241
--signal     sys_reset_n_c : std_logic;
242
signal     trn_clk_c : std_logic;
243
signal     trn_reset_n_c : std_logic;
244
signal     trn_lnk_up_n_c : std_logic;
245
signal     cfg_trn_pending_n_c : std_logic;
246
signal     trn_tsof_n_c : std_logic;
247
signal     trn_teof_n_c : std_logic;
248
signal     trn_tsrc_rdy_n_c : std_logic;
249
signal     trn_tdst_rdy_n_c : std_logic;
250
signal     trn_tsrc_dsc_n_c : std_logic;
251
signal     trn_terrfwd_n_c : std_logic;
252
signal     trn_tdst_dsc_n_c : std_logic;
253
signal     trn_td_c : std_logic_vector((64 - 1) downto 0);
254
signal     trn_trem_n_c : std_logic_vector(7 downto 0);
255
signal     trn_tbuf_av_c : std_logic_vector(( 4 -1 )  downto 0);
256
signal     trn_rsof_n_c : std_logic;
257
signal     trn_reof_n_c : std_logic;
258
signal     trn_rsrc_rdy_n_c : std_logic;
259
signal     trn_rsrc_dsc_n_c : std_logic;
260
signal     trn_rdst_rdy_n_c : std_logic;
261
signal     trn_rerrfwd_n_c : std_logic;
262
signal     trn_rnp_ok_n_c : std_logic;
263
 
264
signal     trn_rd_c : std_logic_vector((64 - 1) downto 0);
265
signal     trn_rrem_n_c : std_logic_vector(7 downto 0);
266
signal     trn_rbar_hit_n_c : std_logic_vector(6 downto 0);
267
signal     trn_rfc_nph_av_c : std_logic_vector(7 downto 0);
268
signal     trn_rfc_npd_av_c : std_logic_vector(11 downto 0);
269
signal     trn_rfc_ph_av_c : std_logic_vector(7 downto 0);
270
signal     trn_rfc_pd_av_c : std_logic_vector(11 downto 0);
271
signal     trn_rcpl_streaming_n_c      : std_logic;
272
 
273
signal     cfg_do_c : std_logic_vector(31 downto 0);
274
signal     cfg_di_c : std_logic_vector(31 downto 0);
275
signal     cfg_dwaddr_c : std_logic_vector(9 downto 0) ;
276
signal     cfg_byte_en_n_c : std_logic_vector(3 downto 0);
277
signal     cfg_err_tlp_cpl_header_c : std_logic_vector(47 downto 0);
278
signal     cfg_wr_en_n_c : std_logic;
279
signal     cfg_rd_en_n_c : std_logic;
280
signal     cfg_rd_wr_done_n_c : std_logic;
281
signal     cfg_err_cor_n_c : std_logic;
282
signal     cfg_err_ur_n_c : std_logic;
283
signal     cfg_err_ecrc_n_c : std_logic;
284
signal     cfg_err_cpl_timeout_n_c : std_logic;
285
signal     cfg_err_cpl_abort_n_c : std_logic;
286
signal     cfg_err_cpl_unexpect_n_c : std_logic;
287
signal     cfg_err_posted_n_c : std_logic;
288
 
289
signal     cfg_err_cpl_rdy_n_c : std_logic;
290
signal     cfg_interrupt_n_c : std_logic;
291
signal     cfg_interrupt_rdy_n_c : std_logic;
292
 
293
signal     cfg_interrupt_assert_n_c : std_logic;
294
signal     cfg_interrupt_di_c : std_logic_vector(7 downto 0);
295
signal     cfg_interrupt_do_c : std_logic_vector(7 downto 0);
296
signal     cfg_interrupt_mmenable_c : std_logic_vector(2 downto 0);
297
signal     cfg_interrupt_msienable_c: std_logic;
298
 
299
signal     cfg_turnoff_ok_n_c : std_logic;
300
signal     cfg_to_turnoff_n_c : std_logic;
301
signal     cfg_pm_wake_n_c : std_logic;
302
signal     cfg_pcie_link_state_n_c : std_logic_vector(2 downto 0);
303
signal     cfg_bus_number_c : std_logic_vector(7 downto 0);
304
signal     cfg_device_number_c : std_logic_vector(4 downto 0);
305
signal     cfg_function_number_c : std_logic_vector(2 downto 0);
306
signal     cfg_status_c : std_logic_vector(15 downto 0);
307
signal     cfg_command_c : std_logic_vector(15 downto 0);
308
signal     cfg_dstatus_c : std_logic_vector(15 downto 0);
309
signal     cfg_dcommand_c : std_logic_vector(15 downto 0);
310
signal     cfg_lstatus_c : std_logic_vector(15 downto 0);
311
signal     cfg_lcommand_c : std_logic_vector(15 downto 0);
312
--signal     unsigned_fast_simulation: unsigned(0 downto 0);
313
signal     vector_fast_simulation: std_logic_vector(0 downto 0):=(0=>'1');
314
 
315
signal  refclkout                               : std_logic;
316
 
317
 
318
signal clk                                      : std_logic;
319
signal rstp                                     : std_logic;
320
signal trn_rx                           : type_trn_rx;                  --! приём пакета
321
signal trn_rx_back                      : type_trn_rx_back;             --! готовность к приёму пакета
322
 
323
signal reg_access                       : type_reg_access;              --! запрос на доступ к регистрам 
324
 
325
signal rx_tx_engine                     : type_rx_tx_engine;    --! обмен RX->TX 
326
signal tx_rx_engine                     : type_tx_rx_engine;    --! обмен TX->RX 
327
 
328
signal rx_ext_fifo                      : type_rx_ext_fifo;             --! обмен RX->EXT_FIFO 
329
signal tx_ext_fifo                      : type_tx_ext_fifo;
330
signal  tx_ext_fifo_back        : type_tx_ext_fifo_back;
331
signal  reg_access_back         : type_reg_access_back;
332
signal  completer_id            : std_logic_vector( 15 downto 0 );
333
 
334
signal  trn_tx                          : type_trn_tx;
335
signal  trn_tx_back                     : type_trn_tx_back;
336
 
337
signal  reg_disp                        : type_reg_disp;
338
signal  reg_disp_back           : type_reg_disp_back;
339
 
340
signal  reg_ext_fifo            : type_reg_ext_fifo;
341
signal  reg_ext_fifo_back       : type_reg_ext_fifo_back;
342
 
343
signal  ext_fifo_disp           : type_ext_fifo_disp;           --! запрос на доступ от узла EXT_FIFO 
344
signal  ext_fifo_disp_back      : type_ext_fifo_disp_back;      --! ответ на запрос
345
 
346
signal  pb_rstp                         : std_logic;
347
 
348
signal  irq                                     : std_logic;
349
 
350
attribute buffer_type   : string;
351
attribute clock_buffer  : string;
352
--attribute clock_buffer of signal_name: signal is "{bufgdll|ibufg|bufgp|ibuf|none}";   
353
attribute buffer_type  of clk_out: signal is "none";
354
attribute buffer_type  of clk: signal is "none";
355
 
356
attribute clock_buffer of clk_out       : signal is "none";
357
attribute clock_buffer of clk           : signal is "none";
358
 
359
begin
360
 
361
gen_sim: if( is_simulation/=0 ) generate
362
        vector_fast_simulation <= (others=>'1');
363
end generate;
364
 
365
gen_syn: if( is_simulation=0 ) generate
366
        vector_fast_simulation <= (others=>'0');
367
end generate;
368
 
369
 
370
clk_out <= clk;
371
reset_out <= not pb_rstp after 1 ns when rising_edge( clk );
372
 
373
 ep : ctrl_pcie_x8 port map  (
374
 
375
--
376
-- PCI Express Fabric Interface
377
--
378
 
379
  pci_exp_txp => txp,             -- O (7/3/0:0)
380
  pci_exp_txn => txn,             -- O (7/3/0:0)
381
  pci_exp_rxp => rxp,             -- O (7/3/0:0)
382
  pci_exp_rxn => rxn,             -- O (7/3/0:0)
383
 
384
 
385
--
386
-- System ( SYS ) Interface
387
--
388
  sys_clk => mgt250,                     -- I
389
 
390
  sys_reset_n => perst,                  -- I
391
 
392
  refclkout => refclkout,                -- O
393
 
394
--
395
-- Transaction ( TRN ) Interface
396
--
397
 
398
  trn_clk => clk                ,                 -- O
399
  trn_reset_n => trn_reset_n_c,           -- O
400
  trn_lnk_up_n => trn_lnk_up_n_c,         -- O
401
 
402
-- Tx Local-Link
403
 
404
  trn_td => trn_tx.trn_td,                     -- I (63/31:0)
405
  trn_trem_n => trn_tx.trn_trem_n,
406
  trn_tsof_n => trn_tx.trn_tsof_n,             -- I
407
  trn_teof_n => trn_tx.trn_teof_n,             -- I
408
  trn_tsrc_rdy_n => trn_tx.trn_tsrc_rdy_n,     -- I
409
  trn_tsrc_dsc_n => trn_tx.trn_tsrc_dsc_n,     -- I
410
  trn_terrfwd_n => trn_tx.trn_terrfwd_n,       -- I
411
 
412
  trn_tbuf_av => trn_tx_back.trn_tbuf_av( 3 downto 0 ),           -- O (4/3:0)
413
  trn_tdst_rdy_n => trn_tx_back.trn_tdst_rdy_n,     -- O
414
  trn_tdst_dsc_n => trn_tx_back.trn_tdst_dsc_n,     -- O
415
 
416
-- Rx Local-Link
417
 
418
  trn_rd => trn_rx.trn_rd,                     -- O (63/31:0)
419
  trn_rrem_n => trn_rx.trn_rrem_n,
420
  trn_rsof_n => trn_rx.trn_rsof_n,             -- O
421
  trn_reof_n => trn_rx.trn_reof_n,             -- O
422
  trn_rsrc_rdy_n => trn_rx.trn_rsrc_rdy_n,     -- O
423
  trn_rsrc_dsc_n => trn_rx.trn_rsrc_dsc_n,     -- O
424
  trn_rdst_rdy_n => trn_rx_back.trn_rdst_rdy_n,     -- I
425
  trn_rerrfwd_n => trn_rx.trn_rerrfwd_n,       -- O
426
  trn_rnp_ok_n => trn_rx_back.trn_rnp_ok_n,         -- I
427
  trn_rbar_hit_n => trn_rx.trn_rbar_hit_n,     -- O (6:0)
428
  trn_rfc_nph_av => trn_rx.trn_rfc_nph_av,     -- O (11:0)
429
  trn_rfc_npd_av => trn_rx.trn_rfc_npd_av,     -- O (7:0)
430
  trn_rfc_ph_av => trn_rx.trn_rfc_ph_av,       -- O (11:0)
431
  trn_rfc_pd_av => trn_rx.trn_rfc_pd_av,       -- O (7:0)
432
  trn_rcpl_streaming_n => trn_rx_back.trn_rcpl_streaming_n,
433
 
434
--
435
-- Host ( CFG ) Interface
436
--
437
 
438
  cfg_do => cfg_do_c,                                    -- O (31:0)
439
  cfg_rd_wr_done_n => cfg_rd_wr_done_n_c,                -- O
440
  cfg_di => cfg_di_c,                                    -- I (31:0)
441
  cfg_byte_en_n => cfg_byte_en_n_c,                      -- I (3:0)
442
  cfg_dwaddr => cfg_dwaddr_c,                            -- I (9:0)
443
  cfg_wr_en_n => cfg_wr_en_n_c,                          -- I
444
  cfg_rd_en_n => cfg_rd_en_n_c,                          -- I
445
  cfg_err_cor_n => cfg_err_cor_n_c,                      -- I
446
  cfg_err_ur_n => cfg_err_ur_n_c,                        -- I
447
  cfg_err_ecrc_n => cfg_err_ecrc_n_c,                    -- I
448
  cfg_err_cpl_timeout_n => cfg_err_cpl_timeout_n_c,      -- I
449
  cfg_err_cpl_abort_n => cfg_err_cpl_abort_n_c,          -- I
450
  cfg_err_cpl_unexpect_n => cfg_err_cpl_unexpect_n_c,    -- I
451
  cfg_err_posted_n => cfg_err_posted_n_c,                -- I
452
  cfg_err_cpl_rdy_n => cfg_err_cpl_rdy_n_c,              -- O
453
  cfg_err_locked_n => '1',                -- I
454
  cfg_err_tlp_cpl_header => cfg_err_tlp_cpl_header_c,    -- I (47:0)
455
  cfg_interrupt_n => cfg_interrupt_n_c,                  -- I
456
  cfg_interrupt_rdy_n => cfg_interrupt_rdy_n_c,          -- O
457
 
458
  cfg_interrupt_assert_n => cfg_interrupt_assert_n_c,    -- I
459
  cfg_interrupt_di       => cfg_interrupt_di_c,          -- I [7:0]
460
  cfg_interrupt_do       => cfg_interrupt_do_c,          -- O [7:0]
461
  cfg_interrupt_mmenable => cfg_interrupt_mmenable_c,    -- O [2:0]
462
  cfg_interrupt_msienable=> cfg_interrupt_msienable_c,   -- O
463
  cfg_to_turnoff_n => cfg_to_turnoff_n_c,                -- O
464
  cfg_pm_wake_n => cfg_pm_wake_n_c,                      -- I
465
  cfg_pcie_link_state_n => cfg_pcie_link_state_n_c,      -- O (2:0)
466
  cfg_trn_pending_n => cfg_trn_pending_n_c,              -- I
467
  cfg_bus_number => cfg_bus_number_c,                    -- O (7:0)
468
  cfg_device_number => cfg_device_number_c,              -- O (4:0)
469
  cfg_function_number => cfg_function_number_c,          -- O (2:0)
470
  cfg_status => cfg_status_c,                            -- O (15:0)
471
  cfg_command => cfg_command_c,                          -- O (15:0)
472
  cfg_dstatus => cfg_dstatus_c,                          -- O (15:0)
473
  cfg_dcommand => trn_tx_back.cfg_dcommand,              -- O (15:0)
474
  cfg_lstatus => cfg_lstatus_c,                          -- O (15:0)
475
  cfg_lcommand => cfg_lcommand_c,                        -- O (15:0)
476
  cfg_dsn => (others => '0'),
477
 
478
 fast_train_simulation_only => vector_fast_simulation(0)
479
 
480
);
481
 
482
pcie_link_up <= trn_lnk_up_n_c;
483
pcie_lstatus <= cfg_lstatus_c;
484
 
485
rstp <=  not trn_reset_n_c  after 1 ns when rising_edge( clk );
486
dcm_rstp <= not trn_reset_n_c;
487
 
488
pb_rstp <= rstp or ( not aclk_lock ) after 1 ns when rising_edge( clk );
489
 
490
  trn_rnp_ok_n_c              <= '0';
491
  trn_rcpl_streaming_n_c      <= '1';
492
  trn_terrfwd_n_c             <= '1';
493
 
494
  cfg_err_cor_n_c             <= '1';
495
  cfg_err_ur_n_c              <= '1';
496
  cfg_err_ecrc_n_c            <= '1';
497
  cfg_err_cpl_timeout_n_c     <= '1';
498
  cfg_err_cpl_abort_n_c       <= '1';
499
  cfg_err_cpl_unexpect_n_c    <= '1';
500
  cfg_err_posted_n_c          <= '0';
501
 
502
  cfg_interrupt_di_c <= X"00";
503
 
504
  cfg_pm_wake_n_c             <= '1';
505
  cfg_trn_pending_n_c         <= '1';
506
  cfg_dwaddr_c                <= (others => '0');
507
  cfg_err_tlp_cpl_header_c    <= (others => '0');
508
  cfg_di_c                    <= (others => '0');
509
  cfg_byte_en_n_c             <= X"F"; -- 4-bit bus
510
  cfg_wr_en_n_c               <= '1';
511
  cfg_rd_en_n_c               <= '1';
512
--  cfg_completer_id_c          <= (cfg_bus_number &
513
--                                cfg_device_number &
514
--                                cfg_function_number);
515
--  cfg_bus_mstr_enable_c       <= cfg_command(2);
516
 
517
 
518
 
519
rx: core64_rx_engine
520
        port map(
521
 
522
                --- General ---
523
                rstp                    => rstp,                        --! 1 - сброс 
524
                clk                             => clk,                         --! тактовая частота ядра - 250 MHz 
525
 
526
                trn_rx                  => trn_rx,                      --! приём пакета
527
                trn_rx_back             => trn_rx_back,         --! готовность к приёму пакета
528
 
529
                reg_access              => reg_access,          --! запрос на доступ к регистрам 
530
 
531
                rx_tx_engine    => rx_tx_engine,        --! обмен RX->TX 
532
                tx_rx_engine    => tx_rx_engine,        --! обмен TX->RX 
533
 
534
                rx_ext_fifo             => rx_ext_fifo          --! обмен RX->EXT_FIFO 
535
 
536
 
537
 
538
        );
539
 
540
 
541
tx: core64_tx_engine
542
        port map(
543
 
544
                --- General ---
545
                rstp                    => rstp,                        --! 1 - сброс 
546
                clk                             => clk,                         --! тактовая частота ядра - 250 MHz 
547
 
548
                trn_tx                  => trn_tx,                      --! передача пакета
549
                trn_tx_back             => trn_tx_back,         --! готовность к передаче пакета
550
 
551
                completer_id    => completer_id,        --! идентификатор устройства 
552
 
553
                reg_access_back => reg_access_back,     --! запрос на доступ к регистрам 
554
 
555
                rx_tx_engine    => rx_tx_engine,        --! обмен RX->TX 
556
                tx_rx_engine    => tx_rx_engine,        --! обмен TX->RX 
557
 
558
                tx_ext_fifo             => tx_ext_fifo,         --! обмен TX->EXT_FIFO 
559
                tx_ext_fifo_back=> tx_ext_fifo_back --! обмен TX->EXT_FIFO 
560
 
561
        );
562
 
563
  completer_id     <= (cfg_bus_number_c &
564
                       cfg_device_number_c &
565
                       cfg_function_number_c );
566
 
567
 
568
 reg: core64_reg_access
569
        port map(
570
                --- General ---
571
                rstp                            => rstp,        --! 1 - сброс 
572
                clk                                     => clk,         --! тактовая частота ядра - 250 MHz 
573
 
574
                --- RX_ENGINE ---- 
575
                reg_access                      => reg_access,  --! запрос на доступ к регистрам 
576
 
577
                --- TX_ENGINE ----
578
                reg_access_back         => reg_access_back,     --! ответ на запрос 
579
 
580
                ---- PB_DISP ----
581
                reg_disp                        => reg_disp,            --! запрос на доступ к регистрам из BAR1 
582
                reg_disp_back           => reg_disp_back,       --! ответ на запрос 
583
 
584
                ---- BLOCK EXT_FIFO ----
585
                reg_ext_fifo            => reg_ext_fifo,                --! запрос на доступ к блокам управления EXT_FIFO 
586
                reg_ext_fifo_back       => reg_ext_fifo_back,   --! ответ на запрос 
587
 
588
                ---- BAR0 - блоки управления ----
589
                bp_host_data            => bp_host_data,        --! шина данных - выход 
590
                bp_data                         => bp_data,                     --! шина данных - вход
591
                bp_adr                          => bp_adr,                      --! адрес регистра 
592
                bp_we                           => bp_we,                       --! 1 - запись в регистры 
593
                bp_rd                           => bp_rd,                       --! 1 - чтение из регистров блока 
594
                bp_sel                          => bp_sel,                      --! номер блока для чтения 
595
                bp_reg_we                       => bp_reg_we,           --! 1 - запись в регистр по адресам   0x100000 - 0x1FFFFF 
596
                bp_reg_rd                       => bp_reg_rd,           --! 1 - чтение из регистра по адресам 0x100000 - 0x1FFFFF 
597
                bp_irq                          => bp_irq                       --! 1 - запрос прерывания 
598
        );
599
 
600
 
601
 disp: core64_pb_disp
602
        port map(
603
                --- General ---
604
                rstp                            => pb_rstp,             --! 1 - сброс 
605
                clk                                     => clk,                 --! тактовая частота ядра - 250 MHz 
606
 
607
                ---- PB_DISP ----
608
                reg_disp                        => reg_disp,            --! запрос на доступ к регистрам из BAR1 
609
                reg_disp_back           => reg_disp_back,       --! ответ на запрос 
610
 
611
                ---- EXT_FIFO ----
612
                ext_fifo_disp           => ext_fifo_disp,               --! запрос на доступ от узла EXT_FIFO 
613
                ext_fifo_disp_back      => ext_fifo_disp_back,  --! ответ на запрос
614
 
615
                ---- BAR1 ----  
616
                aclk                            => aclk,                                --! тактовая частота локальной шины - 266 МГц
617
                pb_master                       => pb_master,                   --! запрос 
618
                pb_slave                        => pb_slave                             --! ответ  
619
 
620
        );
621
 
622
 
623
 
624
fifo: block_pe_fifo_ext
625
        port map(
626
 
627
                ---- Global ----         
628
                rstp                             => pb_rstp,
629
                clk                                      => clk,
630
                aclk                             => aclk,
631
 
632
                ---- TX_ENGINE ----      
633
                tx_ext_fifo                      => tx_ext_fifo,
634
                tx_ext_fifo_back         => tx_ext_fifo_back,
635
 
636
                ---- RX_ENGINE ----      
637
                rx_ext_fifo                      => rx_ext_fifo,
638
 
639
                ---- REG ----            
640
                reg_ext_fifo             => reg_ext_fifo,
641
                reg_ext_fifo_back        => reg_ext_fifo_back,
642
 
643
                ---- DISP  ----          
644
                ext_fifo_disp            => ext_fifo_disp,
645
                ext_fifo_disp_back       => ext_fifo_disp_back,
646
 
647
                irq                                      => irq,                                -- 1 - запрос прерывания
648
 
649
                test                            => px
650
        );
651
 
652
 
653
 
654
 
655
 int: core64_interrupt
656
        port map(
657
 
658
                rstp                                    => pb_rstp,                                     -- 1 - сброс
659
                clk                                             => clk,                                         -- Тактовая частота ядра 250 МГц
660
 
661
                irq                                             => irq,                                         -- 1 - запрос прерывания
662
 
663
                cfg_command10                   => cfg_command_c(10),           -- 1 - прерывания запрещены 
664
                cfg_interrupt                   => cfg_interrupt_n_c,           -- 0 - изменение состояния прерывания
665
                cfg_interrupt_assert    => cfg_interrupt_assert_n_c,-- 0 - формирование прерывания, 1 - сниятие прерывания 
666
                cfg_interrupt_rdy               => cfg_interrupt_rdy_n_c        -- 0 - подтверждение изменения прерывания 
667
 
668
        );
669
 
670
--      cfg_interrupt_n_c <= '1';
671
--      cfg_interrupt_assert_n_c <= '1';
672
 
673
end pcie_core64_m1;

powered by: WebSVN 2.1.0

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