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 46

Go to most recent revision | 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
                lc_irq                  : in  std_logic         --! 1 - запрос прерывания 
82
 
83
 
84
 
85
        );
86
end component;
87
 
88
end package;
89
 
90
 
91
 
92
library ieee;
93
use ieee.std_logic_1164.all;
94
 
95
use work.core64_type_pkg.all;
96
use work.pcie_core64_m4_pkg.all;
97
use work.core64_pb_transaction_pkg.all;
98
use work.block_pe_main_pkg.all;
99
 
100
--! контроллер PCI-Express 
101
entity pcie_core64_m5 is
102
        generic (
103 46 dsmv
                CORE_NAME               : in string:="pcie_core64_m4";
104 2 dsmv
                Device_ID               : in std_logic_vector( 15 downto 0 ):=x"0000"; -- идентификатор модуля
105
                Revision                : in std_logic_vector( 15 downto 0 ):=x"0000"; -- версия модуля
106
                PLD_VER                 : in std_logic_vector( 15 downto 0 ):=x"0000"; -- версия ПЛИС
107
 
108
                refclk                  : integer:=100;         --! Значение опорной тактовой частоты [МГц]
109
                is_simulation   : integer:=0     --! 0 - синтез, 1 - моделирование 
110
        );
111
 
112
        port (
113
 
114
                ---- PCI-Express ----
115
                txp                             : out std_logic_vector( 3 downto 0 );
116
                txn                             : out std_logic_vector( 3 downto 0 );
117
 
118
                rxp                             : in  std_logic_vector( 3 downto 0 );
119
                rxn                             : in  std_logic_vector( 3 downto 0 );
120
 
121
                mgt250                  : in  std_logic; -- тактовая частота 250 MHz или 100 MHz от PCI_Express
122
 
123
                perst                   : in  std_logic;        -- 0 - сброс                                               
124
 
125
                px                              : out std_logic_vector( 7 downto 0 );    --! контрольные точки 
126
 
127
                pcie_lstatus    : out std_logic_vector( 15 downto 0 ); -- регистр LSTATUS
128
                pcie_link_up    : out std_logic;        -- 0 - завершена инициализация PCI-Express
129
 
130
 
131
                ---- Локальная шина ----                          
132
                clk250_out              : out std_logic;        --! тактовая частота 250 MHz              
133
                reset_out               : out std_logic;        --! 0 - сброс
134
                dcm_rstp                : out std_logic;                --! 1 - сброс DCM 266 МГц
135
                clk                             : in std_logic;                 --! тактовая частота локальной шины - 266 МГц
136
                clk_lock                : in std_logic;                 --! 1 - захват частота
137
 
138
                ---- BAR1 ----
139
                lc_adr                  : out std_logic_vector( 31 downto 0 );   --! шина адреса
140
                lc_host_data    : out std_logic_vector( 63 downto 0 );   --! шина данных - выход
141
                lc_data                 : in  std_logic_vector( 63 downto 0 );   --! шина данных - вход
142
                lc_wr                   : out std_logic;        --! 1 - запись
143
                lc_rd                   : out std_logic;        --! 1 - чтение, данные должны быть на четвёртый такт после rd
144
                lc_dma_req              : in  std_logic_vector( 1 downto 0 );    --! 1 - запрос DMA
145
                lc_irq                  : in  std_logic         --! 1 - запрос прерывания 
146
 
147
 
148
 
149
        );
150
end pcie_core64_m5;
151
 
152
 
153
architecture pcie_core64_m5 of pcie_core64_m5 is
154
 
155 46 dsmv
component pcie_core64_m10 is
156
        generic (
157
                DEVICE_ID                       : in std_logic_vector := x"5507";       --! значение регистра DeviceID 
158
                refclk                          : in integer:=100;                              --! Значение опорной тактовой частоты [МГц]
159
                is_simulation           : in integer:=0;                         --! 0 - синтез, 1 - моделирование 
160
                interrupt_number        : in std_logic_vector( 1 downto 0 ):="00"        -- номер INTx: 0 - INTA, 1 - INTB, 2 - INTC, 3 - INTD 
161
 
162
        );
163
 
164
        port (
165
 
166
                ---- PCI-Express ----
167
                txp                             : out std_logic_vector( 3 downto 0 );
168
                txn                             : out std_logic_vector( 3 downto 0 );
169
 
170
                rxp                             : in  std_logic_vector( 3 downto 0 );
171
                rxn                             : in  std_logic_vector( 3 downto 0 );
172
 
173
                mgt250                  : in  std_logic; --! тактовая частота 250 MHz или 100 МГц от PCI_Express
174
 
175
                perst                   : in  std_logic;        --! 0 - сброс                                              
176
 
177
                px                              : out std_logic_vector( 7 downto 0 );    --! контрольные точки 
178
 
179
                pcie_lstatus    : out std_logic_vector( 15 downto 0 ); -- регистр LSTATUS
180
                pcie_link_up    : out std_logic;        -- 0 - завершена инициализация PCI-Express
181
 
182
 
183
                ---- Локальная шина ----                          
184
                clk_out                 : out std_logic;        --! тактовая частота 250 MHz              
185
                reset_out               : out std_logic;        --! 0 - сброс
186
                dcm_rstp                : out std_logic;        --! 1 - сброс DCM 266 МГц
187
 
188
                ---- BAR0 - блоки управления ----
189
                bp_host_data    : out std_logic_vector( 31 downto 0 );   --! шина данных - выход 
190
                bp_data                 : in  std_logic_vector( 31 downto 0 );  --! шина данных - вход
191
                bp_adr                  : out std_logic_vector( 19 downto 0 );   --! адрес регистра 
192
                bp_we                   : out std_logic_vector( 3 downto 0 );    --! 1 - запись в регистры 
193
                bp_rd                   : out std_logic_vector( 3 downto 0 );   --! 1 - чтение из регистров блока 
194
                bp_sel                  : out std_logic_vector( 1 downto 0 );    --! номер блока для чтения 
195
                bp_reg_we               : out std_logic;                        --! 1 - запись в регистр по адресам   0x100000 - 0x1FFFFF 
196
                bp_reg_rd               : out std_logic;                        --! 1 - чтение из регистра по адресам 0x100000 - 0x1FFFFF 
197
                bp_irq                  : in  std_logic;                        --! 1 - запрос прерывания 
198
 
199
                ---- BAR1 ----  
200
                aclk                    : in std_logic;                         --! тактовая частота локальной шины - 266 МГц
201
                aclk_lock               : in std_logic;                         --! 1 - захват частоты
202
                pb_master               : out type_pb_master;           --! запрос 
203
                pb_slave                : in  type_pb_slave                     --! ответ  
204
 
205
 
206
 
207
        );
208
end component;
209
 
210 2 dsmv
---- BAR0 - блоки управления ----
211
signal  bp_host_data    : std_logic_vector( 31 downto 0 );       --! шина данных - выход 
212
signal  bp_data                 : std_logic_vector( 31 downto 0 );  --! шина данных - вход
213
signal  bp_adr                  : std_logic_vector( 19 downto 0 );       --! адрес регистра внутри блока 
214
signal  bp_we                   : std_logic_vector( 3 downto 0 );        --! 1 - запись в регистры 
215
signal  bp_rd                   : std_logic_vector( 3 downto 0 );   --! 1 - чтение из регистров блока 
216
signal  bp_sel                  : std_logic_vector( 1 downto 0 );        --! номер блока для чтения 
217
signal  bp_reg_we               : std_logic;                    --! 1 - запись в регистр по адресам   0x100000 - 0x1FFFFF 
218
signal  bp_reg_rd               : std_logic;                    --! 1 - чтение из регистра по адресам 0x100000 - 0x1FFFFF 
219
signal  bp_irq                  : std_logic;                                            --! 1 - запрос прерывания 
220
 
221
signal  clk250                  : std_logic;
222
signal  reset                   : std_logic;
223
 
224
signal  pb_master               : type_pb_master;               --! запрос 
225
signal  pb_slave                : type_pb_slave;                --! ответ  
226
 
227
signal  pb_reset                : std_logic;
228
signal  brd_mode                : std_logic_vector( 15 downto 0 );
229
 
230
signal  bp0_data                : std_logic_vector( 31 downto 0 );
231
 
232
begin
233
 
234 46 dsmv
gen_m4: if( CORE_NAME="pcie_core64_m4" ) generate
235 2 dsmv
 
236
core: pcie_core64_m4
237
        generic map(
238
                refclk                  => refclk,                              --! Значение опорной тактовой частоты [МГц]
239
                is_simulation   => is_simulation                --! 0 - синтез, 1 - моделирование 
240
        )
241
        port map(
242
 
243
                ---- PCI-Express ----
244
                txp                               => txp,
245
                txn                               => txn,
246
 
247
                rxp                               => rxp,
248
                rxn                               => rxn,
249
 
250
                mgt250                    => mgt250,
251
 
252
                perst                     => perst,
253
 
254
                px                                => px,
255
 
256
                pcie_lstatus      => pcie_lstatus,
257
                pcie_link_up      => pcie_link_up,
258
 
259
 
260
                ---- Локальная шина ----                          
261
                clk_out                  => clk250,
262
                reset_out                => reset,
263
                dcm_rstp                 => dcm_rstp,
264
 
265
                ---- BAR1 ----
266
                aclk                    => clk,
267
                aclk_lock               => clk_lock,
268
                pb_master               => pb_master,
269
                pb_slave                => pb_slave,
270
 
271
 
272
                ---- BAR0 - блоки управления ----
273
                bp_host_data    => bp_host_data,
274
                bp_data                 => bp_data,
275
                bp_adr                  => bp_adr,
276
                bp_we                   => bp_we,
277
                bp_rd                   => bp_rd,
278
                bp_sel                  => bp_sel,
279
                bp_reg_we               => bp_reg_we,
280
                bp_reg_rd               => bp_reg_rd,
281
                bp_irq                  => bp_irq
282
 
283
 
284 46 dsmv
        );
285
 
286
end generate;
287 2 dsmv
 
288 46 dsmv
 
289
gen_m10: if( CORE_NAME="pcie_core64_m10" ) generate
290
 
291
core: pcie_core64_m10
292
        generic map(
293
                DEVICE_ID                       => Device_ID,                   --! значение регистра DeviceID 
294
                refclk                          => refclk,                              --! Значение опорной тактовой частоты [МГц]
295
                is_simulation           => is_simulation                --! 0 - синтез, 1 - моделирование 
296
        )
297
        port map(
298
 
299
                ---- PCI-Express ----
300
                txp                               => txp,
301
                txn                               => txn,
302
 
303
                rxp                               => rxp,
304
                rxn                               => rxn,
305
 
306
                mgt250                    => mgt250,
307
 
308
                perst                     => perst,
309
 
310
                px                                => px,
311
 
312
                pcie_lstatus      => pcie_lstatus,
313
                pcie_link_up      => pcie_link_up,
314
 
315
 
316
                ---- Локальная шина ----                          
317
                clk_out                  => clk250,
318
                reset_out                => reset,
319
                dcm_rstp                 => dcm_rstp,
320
 
321
                ---- BAR1 ----
322
                aclk                    => clk,
323
                aclk_lock               => clk_lock,
324
                pb_master               => pb_master,
325
                pb_slave                => pb_slave,
326
 
327
 
328
                ---- BAR0 - блоки управления ----
329
                bp_host_data    => bp_host_data,
330
                bp_data                 => bp_data,
331
                bp_adr                  => bp_adr,
332
                bp_we                   => bp_we,
333
                bp_rd                   => bp_rd,
334
                bp_sel                  => bp_sel,
335
                bp_reg_we               => bp_reg_we,
336
                bp_reg_rd               => bp_reg_rd,
337
                bp_irq                  => bp_irq
338
 
339
 
340
        );
341
 
342
end generate;
343
 
344 2 dsmv
reset_out <= reset;
345
clk250_out   <= clk250;
346
 
347
bp_data <= bp0_data when bp_sel="00" else (others=>'0');
348
 
349
tz: core64_pb_transaction
350
        port map(
351
                reset                           => reset,               --! 0 - сброс
352
                clk                                     => clk,                 --! тактовая частота локальной шины - 266 МГц 
353
 
354
                ---- BAR1 ----  
355
                pb_master                       => pb_master,                   --! запрос 
356
                pb_slave                        => pb_slave,                    --! ответ  
357
 
358
                ---- локальная шина -----               
359
                lc_adr                          => lc_adr,
360
                lc_host_data            => lc_host_data,
361
                lc_data                         => lc_data,
362
                lc_wr                           => lc_wr,
363
                lc_rd                           => lc_rd,
364
                lc_dma_req                      => lc_dma_req,
365
                lc_irq                          => lc_irq
366
        );
367
 
368
 
369
main: block_pe_main
370
        generic map(
371
                Device_ID               => Device_ID,                   -- идентификатор модуля
372
                Revision                => Revision,                    -- версия модуля
373
                PLD_VER                 => PLD_VER,                             -- версия ПЛИС
374
                BLOCK_CNT               => x"0008"                      -- число блоков управления 
375
 
376
        )
377
        port map(
378
 
379
                ---- Global ----
380
                reset_hr1               => reset,               -- 0 - сброс
381
                clk                             => clk250,              -- Тактовая частота DSP
382
                pb_reset                => pb_reset,    -- 0 - сброс ведомой ПЛИС
383
 
384
                ---- HOST ----
385
                bl_adr                  => bp_adr( 4 downto 0 ),         -- адрес
386
                bl_data_in              => bp_host_data,                                -- данные
387
                bl_data_out             => bp0_data,                                    -- данные
388
                bl_data_we              => bp_we(0),                                     -- 1 - запись данных   
389
 
390
                ---- Управление ----
391
                brd_mode                => brd_mode                                             -- регистр BRD_MODE
392
 
393
        );
394
 
395
end pcie_core64_m5;

powered by: WebSVN 2.1.0

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