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/] [components/] [pcie_core/] [pcie_core64_m5.vhd] - Blame information for rev 47

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dsmv
-------------------------------------------------------------------------------
2
--
3
-- Title       : pcie_core64_m5
4
-- Author      : Dmitry Smekhov
5
-- Company     : Instrumental Systems
6
-- E-mail      : dsmv@insys.ru
7
--
8 46 dsmv
-- Version     : 1.1
9 2 dsmv
--
10
-------------------------------------------------------------------------------
11
--
12
-- Description :  Контроллер шины PCI Express 
13
--                                Модификация 4 - Virtex 6 PCI Express 2.0 x4 
14
--
15
--                                Включает pcie_core64_m4, block_pe_main, core64_pb_transaction
16
--                                Реализует шину LC_BUS 
17
--
18
-------------------------------------------------------------------------------
19
--
20 46 dsmv
--  Version 1.1         17.02.2014
21
--                                      Добавлена поддержка Artix 7 - pcie_core64_m10
22
--
23
-------------------------------------------------------------------------------
24
--
25 2 dsmv
--  Version 1.0         15.08.2011
26
--                                      Создан из pcie_core64_m2 v1.0
27
--
28
-------------------------------------------------------------------------------
29
 
30
 
31
library ieee;
32
use ieee.std_logic_1164.all;
33
 
34
package pcie_core64_m5_pkg is
35
 
36
--! контроллер PCI-Express 
37
component pcie_core64_m5 is
38 46 dsmv
        generic (
39
                CORE_NAME               : in string:="pcie_core64_m4";
40 2 dsmv
                Device_ID               : in std_logic_vector( 15 downto 0 ):=x"0000"; -- идентификатор модуля
41
                Revision                : in std_logic_vector( 15 downto 0 ):=x"0000"; -- версия модуля
42
                PLD_VER                 : in std_logic_vector( 15 downto 0 ):=x"0000"; -- версия ПЛИС
43
 
44
                refclk                  : integer:=100;         --! Значение опорной тактовой частоты [МГц]
45
                is_simulation   : integer:=0     --! 0 - синтез, 1 - моделирование 
46
        );
47
 
48
        port (
49
 
50
                ---- PCI-Express ----
51
                txp                             : out std_logic_vector( 3 downto 0 );
52
                txn                             : out std_logic_vector( 3 downto 0 );
53
 
54
                rxp                             : in  std_logic_vector( 3 downto 0 );
55
                rxn                             : in  std_logic_vector( 3 downto 0 );
56
 
57
                mgt250                  : in  std_logic; -- тактовая частота 250 MHz или 100 MHz от PCI_Express
58
 
59
                perst                   : in  std_logic;        -- 0 - сброс                                               
60
 
61
                px                              : out std_logic_vector( 7 downto 0 );    --! контрольные точки 
62
 
63
                pcie_lstatus    : out std_logic_vector( 15 downto 0 ); -- регистр LSTATUS
64
                pcie_link_up    : out std_logic;        -- 0 - завершена инициализация PCI-Express
65
 
66
 
67
                ---- Локальная шина ----                          
68
                clk250_out              : out std_logic;                --! тактовая частота 250 MHz              
69
                reset_out               : out std_logic;                --! 0 - сброс
70
                dcm_rstp                : out std_logic;                --! 1 - сброс DCM 266 МГц
71
                clk                             : in std_logic;                 --! тактовая частота локальной шины - 266 МГц
72
                clk_lock                : in std_logic;                 --! 1 - захват частоты
73
 
74
                ---- BAR1 ----
75
                lc_adr                  : out std_logic_vector( 31 downto 0 );   --! шина адреса
76
                lc_host_data    : out std_logic_vector( 63 downto 0 );   --! шина данных - выход
77
                lc_data                 : in  std_logic_vector( 63 downto 0 );   --! шина данных - вход
78
                lc_wr                   : out std_logic;        --! 1 - запись
79
                lc_rd                   : out std_logic;        --! 1 - чтение, данные должны быть на шестой такт после rd 
80
                lc_dma_req              : in  std_logic_vector( 1 downto 0 );    --! 1 - запрос DMA
81 47 dsmv
                lc_irq                  : in  std_logic;        --! 1 - запрос прерывания 
82
                lc_rd_cfg               : in std_logic_vector( 3 downto 0 ):="0101"      --! настройка задержки захвата данных по сигналу lc_rd                          
83 2 dsmv
 
84
 
85
 
86
        );
87
end component;
88
 
89
end package;
90
 
91
 
92
 
93
library ieee;
94
use ieee.std_logic_1164.all;
95
 
96
use work.core64_type_pkg.all;
97 47 dsmv
--use work.pcie_core64_m4_pkg.all;
98 2 dsmv
use work.core64_pb_transaction_pkg.all;
99
use work.block_pe_main_pkg.all;
100
 
101
--! контроллер PCI-Express 
102
entity pcie_core64_m5 is
103
        generic (
104 46 dsmv
                CORE_NAME               : in string:="pcie_core64_m4";
105 2 dsmv
                Device_ID               : in std_logic_vector( 15 downto 0 ):=x"0000"; -- идентификатор модуля
106
                Revision                : in std_logic_vector( 15 downto 0 ):=x"0000"; -- версия модуля
107
                PLD_VER                 : in std_logic_vector( 15 downto 0 ):=x"0000"; -- версия ПЛИС
108
 
109
                refclk                  : integer:=100;         --! Значение опорной тактовой частоты [МГц]
110
                is_simulation   : integer:=0     --! 0 - синтез, 1 - моделирование 
111
        );
112
 
113
        port (
114
 
115
                ---- PCI-Express ----
116
                txp                             : out std_logic_vector( 3 downto 0 );
117
                txn                             : out std_logic_vector( 3 downto 0 );
118
 
119
                rxp                             : in  std_logic_vector( 3 downto 0 );
120
                rxn                             : in  std_logic_vector( 3 downto 0 );
121
 
122
                mgt250                  : in  std_logic; -- тактовая частота 250 MHz или 100 MHz от PCI_Express
123
 
124
                perst                   : in  std_logic;        -- 0 - сброс                                               
125
 
126
                px                              : out std_logic_vector( 7 downto 0 );    --! контрольные точки 
127
 
128
                pcie_lstatus    : out std_logic_vector( 15 downto 0 ); -- регистр LSTATUS
129
                pcie_link_up    : out std_logic;        -- 0 - завершена инициализация PCI-Express
130
 
131
 
132
                ---- Локальная шина ----                          
133
                clk250_out              : out std_logic;        --! тактовая частота 250 MHz              
134
                reset_out               : out std_logic;        --! 0 - сброс
135
                dcm_rstp                : out std_logic;                --! 1 - сброс DCM 266 МГц
136
                clk                             : in std_logic;                 --! тактовая частота локальной шины - 266 МГц
137
                clk_lock                : in std_logic;                 --! 1 - захват частота
138
 
139
                ---- BAR1 ----
140
                lc_adr                  : out std_logic_vector( 31 downto 0 );   --! шина адреса
141
                lc_host_data    : out std_logic_vector( 63 downto 0 );   --! шина данных - выход
142
                lc_data                 : in  std_logic_vector( 63 downto 0 );   --! шина данных - вход
143
                lc_wr                   : out std_logic;        --! 1 - запись
144
                lc_rd                   : out std_logic;        --! 1 - чтение, данные должны быть на четвёртый такт после rd
145
                lc_dma_req              : in  std_logic_vector( 1 downto 0 );    --! 1 - запрос DMA
146 47 dsmv
                lc_irq                  : in  std_logic;        --! 1 - запрос прерывания 
147
                lc_rd_cfg               : in std_logic_vector( 3 downto 0 ):="0101"      --! настройка задержки захвата данных по сигналу lc_rd                          
148 2 dsmv
 
149
 
150
 
151
        );
152
end pcie_core64_m5;
153
 
154
 
155
architecture pcie_core64_m5 of pcie_core64_m5 is
156
 
157 47 dsmv
--! контроллер PCI-Express 
158
component pcie_core64_m4 is
159
        generic (
160
                DEVICE_ID                       : in bit_vector := X"5507";     --! значение регистра DeviceID 
161
                refclk                          : in integer:=100;                              --! Значение опорной тактовой частоты [МГц]
162
                is_simulation           : in integer:=0;                         --! 0 - синтез, 1 - моделирование 
163
                interrupt_number        : in std_logic_vector( 1 downto 0 ):="00"        -- номер INTx: 0 - INTA, 1 - INTB, 2 - INTC, 3 - INTD 
164
 
165
        );
166
 
167
        port (
168
 
169
                ---- PCI-Express ----
170
                txp                             : out std_logic_vector( 3 downto 0 );
171
                txn                             : out std_logic_vector( 3 downto 0 );
172
 
173
                rxp                             : in  std_logic_vector( 3 downto 0 );
174
                rxn                             : in  std_logic_vector( 3 downto 0 );
175
 
176
                mgt250                  : in  std_logic; --! тактовая частота 250 MHz или 100 МГц от PCI_Express
177
 
178
                perst                   : in  std_logic;        --! 0 - сброс                                              
179
 
180
                px                              : out std_logic_vector( 7 downto 0 );    --! контрольные точки 
181
 
182
                pcie_lstatus    : out std_logic_vector( 15 downto 0 ); -- регистр LSTATUS
183
                pcie_link_up    : out std_logic;        -- 0 - завершена инициализация PCI-Express
184
 
185
 
186
                ---- Локальная шина ----                          
187
                clk_out                 : out std_logic;        --! тактовая частота 250 MHz              
188
                reset_out               : out std_logic;        --! 0 - сброс
189
                dcm_rstp                : out std_logic;        --! 1 - сброс DCM 266 МГц
190
 
191
                ---- BAR0 - блоки управления ----
192
                bp_host_data    : out std_logic_vector( 31 downto 0 );   --! шина данных - выход 
193
                bp_data                 : in  std_logic_vector( 31 downto 0 );  --! шина данных - вход
194
                bp_adr                  : out std_logic_vector( 19 downto 0 );   --! адрес регистра 
195
                bp_we                   : out std_logic_vector( 3 downto 0 );    --! 1 - запись в регистры 
196
                bp_rd                   : out std_logic_vector( 3 downto 0 );   --! 1 - чтение из регистров блока 
197
                bp_sel                  : out std_logic_vector( 1 downto 0 );    --! номер блока для чтения 
198
                bp_reg_we               : out std_logic;                        --! 1 - запись в регистр по адресам   0x100000 - 0x1FFFFF 
199
                bp_reg_rd               : out std_logic;                        --! 1 - чтение из регистра по адресам 0x100000 - 0x1FFFFF 
200
                bp_irq                  : in  std_logic;                        --! 1 - запрос прерывания 
201
 
202
                ---- BAR1 ----  
203
                aclk                    : in std_logic;                         --! тактовая частота локальной шины - 266 МГц
204
                aclk_lock               : in std_logic;                         --! 1 - захват частоты
205
                pb_master               : out type_pb_master;           --! запрос 
206
                pb_slave                : in  type_pb_slave                     --! ответ  
207
 
208
 
209
 
210
        );
211
end component;
212
 
213 46 dsmv
component pcie_core64_m10 is
214
        generic (
215
                DEVICE_ID                       : in std_logic_vector := x"5507";       --! значение регистра DeviceID 
216
                refclk                          : in integer:=100;                              --! Значение опорной тактовой частоты [МГц]
217
                is_simulation           : in integer:=0;                         --! 0 - синтез, 1 - моделирование 
218
                interrupt_number        : in std_logic_vector( 1 downto 0 ):="00"        -- номер INTx: 0 - INTA, 1 - INTB, 2 - INTC, 3 - INTD 
219
 
220
        );
221
 
222
        port (
223
 
224
                ---- PCI-Express ----
225
                txp                             : out std_logic_vector( 3 downto 0 );
226
                txn                             : out std_logic_vector( 3 downto 0 );
227
 
228
                rxp                             : in  std_logic_vector( 3 downto 0 );
229
                rxn                             : in  std_logic_vector( 3 downto 0 );
230
 
231
                mgt250                  : in  std_logic; --! тактовая частота 250 MHz или 100 МГц от PCI_Express
232
 
233
                perst                   : in  std_logic;        --! 0 - сброс                                              
234
 
235
                px                              : out std_logic_vector( 7 downto 0 );    --! контрольные точки 
236
 
237
                pcie_lstatus    : out std_logic_vector( 15 downto 0 ); -- регистр LSTATUS
238
                pcie_link_up    : out std_logic;        -- 0 - завершена инициализация PCI-Express
239
 
240
 
241
                ---- Локальная шина ----                          
242
                clk_out                 : out std_logic;        --! тактовая частота 250 MHz              
243
                reset_out               : out std_logic;        --! 0 - сброс
244
                dcm_rstp                : out std_logic;        --! 1 - сброс DCM 266 МГц
245
 
246
                ---- BAR0 - блоки управления ----
247
                bp_host_data    : out std_logic_vector( 31 downto 0 );   --! шина данных - выход 
248
                bp_data                 : in  std_logic_vector( 31 downto 0 );  --! шина данных - вход
249
                bp_adr                  : out std_logic_vector( 19 downto 0 );   --! адрес регистра 
250
                bp_we                   : out std_logic_vector( 3 downto 0 );    --! 1 - запись в регистры 
251
                bp_rd                   : out std_logic_vector( 3 downto 0 );   --! 1 - чтение из регистров блока 
252
                bp_sel                  : out std_logic_vector( 1 downto 0 );    --! номер блока для чтения 
253
                bp_reg_we               : out std_logic;                        --! 1 - запись в регистр по адресам   0x100000 - 0x1FFFFF 
254
                bp_reg_rd               : out std_logic;                        --! 1 - чтение из регистра по адресам 0x100000 - 0x1FFFFF 
255
                bp_irq                  : in  std_logic;                        --! 1 - запрос прерывания 
256
 
257
                ---- BAR1 ----  
258
                aclk                    : in std_logic;                         --! тактовая частота локальной шины - 266 МГц
259
                aclk_lock               : in std_logic;                         --! 1 - захват частоты
260
                pb_master               : out type_pb_master;           --! запрос 
261
                pb_slave                : in  type_pb_slave                     --! ответ  
262
 
263
 
264
 
265
        );
266
end component;
267
 
268 2 dsmv
---- BAR0 - блоки управления ----
269
signal  bp_host_data    : std_logic_vector( 31 downto 0 );       --! шина данных - выход 
270
signal  bp_data                 : std_logic_vector( 31 downto 0 );  --! шина данных - вход
271
signal  bp_adr                  : std_logic_vector( 19 downto 0 );       --! адрес регистра внутри блока 
272
signal  bp_we                   : std_logic_vector( 3 downto 0 );        --! 1 - запись в регистры 
273
signal  bp_rd                   : std_logic_vector( 3 downto 0 );   --! 1 - чтение из регистров блока 
274
signal  bp_sel                  : std_logic_vector( 1 downto 0 );        --! номер блока для чтения 
275
signal  bp_reg_we               : std_logic;                    --! 1 - запись в регистр по адресам   0x100000 - 0x1FFFFF 
276
signal  bp_reg_rd               : std_logic;                    --! 1 - чтение из регистра по адресам 0x100000 - 0x1FFFFF 
277
signal  bp_irq                  : std_logic;                                            --! 1 - запрос прерывания 
278
 
279
signal  clk250                  : std_logic;
280
signal  reset                   : std_logic;
281
 
282
signal  pb_master               : type_pb_master;               --! запрос 
283
signal  pb_slave                : type_pb_slave;                --! ответ  
284
 
285
signal  pb_reset                : std_logic;
286
signal  brd_mode                : std_logic_vector( 15 downto 0 );
287
 
288
signal  bp0_data                : std_logic_vector( 31 downto 0 );
289
 
290
begin
291
 
292 46 dsmv
gen_m4: if( CORE_NAME="pcie_core64_m4" ) generate
293 2 dsmv
 
294
core: pcie_core64_m4
295
        generic map(
296
                refclk                  => refclk,                              --! Значение опорной тактовой частоты [МГц]
297
                is_simulation   => is_simulation                --! 0 - синтез, 1 - моделирование 
298
        )
299
        port map(
300
 
301
                ---- PCI-Express ----
302
                txp                               => txp,
303
                txn                               => txn,
304
 
305
                rxp                               => rxp,
306
                rxn                               => rxn,
307
 
308
                mgt250                    => mgt250,
309
 
310
                perst                     => perst,
311
 
312
                px                                => px,
313
 
314
                pcie_lstatus      => pcie_lstatus,
315
                pcie_link_up      => pcie_link_up,
316
 
317
 
318
                ---- Локальная шина ----                          
319
                clk_out                  => clk250,
320
                reset_out                => reset,
321
                dcm_rstp                 => dcm_rstp,
322
 
323
                ---- BAR1 ----
324
                aclk                    => clk,
325
                aclk_lock               => clk_lock,
326
                pb_master               => pb_master,
327
                pb_slave                => pb_slave,
328
 
329
 
330
                ---- BAR0 - блоки управления ----
331
                bp_host_data    => bp_host_data,
332
                bp_data                 => bp_data,
333
                bp_adr                  => bp_adr,
334
                bp_we                   => bp_we,
335
                bp_rd                   => bp_rd,
336
                bp_sel                  => bp_sel,
337
                bp_reg_we               => bp_reg_we,
338
                bp_reg_rd               => bp_reg_rd,
339
                bp_irq                  => bp_irq
340
 
341
 
342 46 dsmv
        );
343
 
344
end generate;
345 2 dsmv
 
346 46 dsmv
 
347
gen_m10: if( CORE_NAME="pcie_core64_m10" ) generate
348
 
349
core: pcie_core64_m10
350
        generic map(
351
                DEVICE_ID                       => Device_ID,                   --! значение регистра DeviceID 
352
                refclk                          => refclk,                              --! Значение опорной тактовой частоты [МГц]
353
                is_simulation           => is_simulation                --! 0 - синтез, 1 - моделирование 
354
        )
355
        port map(
356
 
357
                ---- PCI-Express ----
358
                txp                               => txp,
359
                txn                               => txn,
360
 
361
                rxp                               => rxp,
362
                rxn                               => rxn,
363
 
364
                mgt250                    => mgt250,
365
 
366
                perst                     => perst,
367
 
368
                px                                => px,
369
 
370
                pcie_lstatus      => pcie_lstatus,
371
                pcie_link_up      => pcie_link_up,
372
 
373
 
374
                ---- Локальная шина ----                          
375
                clk_out                  => clk250,
376
                reset_out                => reset,
377
                dcm_rstp                 => dcm_rstp,
378
 
379
                ---- BAR1 ----
380
                aclk                    => clk,
381
                aclk_lock               => clk_lock,
382
                pb_master               => pb_master,
383
                pb_slave                => pb_slave,
384
 
385
 
386
                ---- BAR0 - блоки управления ----
387
                bp_host_data    => bp_host_data,
388
                bp_data                 => bp_data,
389
                bp_adr                  => bp_adr,
390
                bp_we                   => bp_we,
391
                bp_rd                   => bp_rd,
392
                bp_sel                  => bp_sel,
393
                bp_reg_we               => bp_reg_we,
394
                bp_reg_rd               => bp_reg_rd,
395
                bp_irq                  => bp_irq
396
 
397
 
398
        );
399
 
400
end generate;
401
 
402 2 dsmv
reset_out <= reset;
403
clk250_out   <= clk250;
404
 
405
bp_data <= bp0_data when bp_sel="00" else (others=>'0');
406
 
407
tz: core64_pb_transaction
408
        port map(
409
                reset                           => reset,               --! 0 - сброс
410
                clk                                     => clk,                 --! тактовая частота локальной шины - 266 МГц 
411
 
412
                ---- BAR1 ----  
413
                pb_master                       => pb_master,                   --! запрос 
414
                pb_slave                        => pb_slave,                    --! ответ  
415
 
416
                ---- локальная шина -----               
417
                lc_adr                          => lc_adr,
418
                lc_host_data            => lc_host_data,
419
                lc_data                         => lc_data,
420
                lc_wr                           => lc_wr,
421
                lc_rd                           => lc_rd,
422
                lc_dma_req                      => lc_dma_req,
423 47 dsmv
                lc_irq                          => lc_irq,
424
                lc_rd_cfg                       => lc_rd_cfg
425 2 dsmv
        );
426
 
427
 
428
main: block_pe_main
429
        generic map(
430
                Device_ID               => Device_ID,                   -- идентификатор модуля
431
                Revision                => Revision,                    -- версия модуля
432
                PLD_VER                 => PLD_VER,                             -- версия ПЛИС
433
                BLOCK_CNT               => x"0008"                      -- число блоков управления 
434
 
435
        )
436
        port map(
437
 
438
                ---- Global ----
439
                reset_hr1               => reset,               -- 0 - сброс
440
                clk                             => clk250,              -- Тактовая частота DSP
441
                pb_reset                => pb_reset,    -- 0 - сброс ведомой ПЛИС
442
 
443
                ---- HOST ----
444
                bl_adr                  => bp_adr( 4 downto 0 ),         -- адрес
445
                bl_data_in              => bp_host_data,                                -- данные
446
                bl_data_out             => bp0_data,                                    -- данные
447
                bl_data_we              => bp_we(0),                                     -- 1 - запись данных   
448
 
449
                ---- Управление ----
450
                brd_mode                => brd_mode                                             -- регистр BRD_MODE
451
 
452
        );
453
 
454
end pcie_core64_m5;

powered by: WebSVN 2.1.0

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