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 2

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
-- Version     : 1.0
9
--
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
--  Version 1.0         15.08.2011
21
--                                      Создан из pcie_core64_m2 v1.0
22
--
23
-------------------------------------------------------------------------------
24
 
25
 
26
library ieee;
27
use ieee.std_logic_1164.all;
28
 
29
package pcie_core64_m5_pkg is
30
 
31
--! контроллер PCI-Express 
32
component pcie_core64_m5 is
33
        generic (
34
                Device_ID               : in std_logic_vector( 15 downto 0 ):=x"0000"; -- идентификатор модуля
35
                Revision                : in std_logic_vector( 15 downto 0 ):=x"0000"; -- версия модуля
36
                PLD_VER                 : in std_logic_vector( 15 downto 0 ):=x"0000"; -- версия ПЛИС
37
 
38
                refclk                  : integer:=100;         --! Значение опорной тактовой частоты [МГц]
39
                is_simulation   : integer:=0     --! 0 - синтез, 1 - моделирование 
40
        );
41
 
42
        port (
43
 
44
                ---- PCI-Express ----
45
                txp                             : out std_logic_vector( 3 downto 0 );
46
                txn                             : out std_logic_vector( 3 downto 0 );
47
 
48
                rxp                             : in  std_logic_vector( 3 downto 0 );
49
                rxn                             : in  std_logic_vector( 3 downto 0 );
50
 
51
                mgt250                  : in  std_logic; -- тактовая частота 250 MHz или 100 MHz от PCI_Express
52
 
53
                perst                   : in  std_logic;        -- 0 - сброс                                               
54
 
55
                px                              : out std_logic_vector( 7 downto 0 );    --! контрольные точки 
56
 
57
                pcie_lstatus    : out std_logic_vector( 15 downto 0 ); -- регистр LSTATUS
58
                pcie_link_up    : out std_logic;        -- 0 - завершена инициализация PCI-Express
59
 
60
 
61
                ---- Локальная шина ----                          
62
                clk250_out              : out std_logic;                --! тактовая частота 250 MHz              
63
                reset_out               : out std_logic;                --! 0 - сброс
64
                dcm_rstp                : out std_logic;                --! 1 - сброс DCM 266 МГц
65
                clk                             : in std_logic;                 --! тактовая частота локальной шины - 266 МГц
66
                clk_lock                : in std_logic;                 --! 1 - захват частоты
67
 
68
                ---- BAR1 ----
69
                lc_adr                  : out std_logic_vector( 31 downto 0 );   --! шина адреса
70
                lc_host_data    : out std_logic_vector( 63 downto 0 );   --! шина данных - выход
71
                lc_data                 : in  std_logic_vector( 63 downto 0 );   --! шина данных - вход
72
                lc_wr                   : out std_logic;        --! 1 - запись
73
                lc_rd                   : out std_logic;        --! 1 - чтение, данные должны быть на шестой такт после rd 
74
                lc_dma_req              : in  std_logic_vector( 1 downto 0 );    --! 1 - запрос DMA
75
                lc_irq                  : in  std_logic         --! 1 - запрос прерывания 
76
 
77
 
78
 
79
        );
80
end component;
81
 
82
end package;
83
 
84
 
85
 
86
library ieee;
87
use ieee.std_logic_1164.all;
88
 
89
use work.core64_type_pkg.all;
90
use work.pcie_core64_m4_pkg.all;
91
use work.core64_pb_transaction_pkg.all;
92
use work.block_pe_main_pkg.all;
93
 
94
--! контроллер PCI-Express 
95
entity pcie_core64_m5 is
96
        generic (
97
                Device_ID               : in std_logic_vector( 15 downto 0 ):=x"0000"; -- идентификатор модуля
98
                Revision                : in std_logic_vector( 15 downto 0 ):=x"0000"; -- версия модуля
99
                PLD_VER                 : in std_logic_vector( 15 downto 0 ):=x"0000"; -- версия ПЛИС
100
 
101
                refclk                  : integer:=100;         --! Значение опорной тактовой частоты [МГц]
102
                is_simulation   : integer:=0     --! 0 - синтез, 1 - моделирование 
103
        );
104
 
105
        port (
106
 
107
                ---- PCI-Express ----
108
                txp                             : out std_logic_vector( 3 downto 0 );
109
                txn                             : out std_logic_vector( 3 downto 0 );
110
 
111
                rxp                             : in  std_logic_vector( 3 downto 0 );
112
                rxn                             : in  std_logic_vector( 3 downto 0 );
113
 
114
                mgt250                  : in  std_logic; -- тактовая частота 250 MHz или 100 MHz от PCI_Express
115
 
116
                perst                   : in  std_logic;        -- 0 - сброс                                               
117
 
118
                px                              : out std_logic_vector( 7 downto 0 );    --! контрольные точки 
119
 
120
                pcie_lstatus    : out std_logic_vector( 15 downto 0 ); -- регистр LSTATUS
121
                pcie_link_up    : out std_logic;        -- 0 - завершена инициализация PCI-Express
122
 
123
 
124
                ---- Локальная шина ----                          
125
                clk250_out              : out std_logic;        --! тактовая частота 250 MHz              
126
                reset_out               : out std_logic;        --! 0 - сброс
127
                dcm_rstp                : out std_logic;                --! 1 - сброс DCM 266 МГц
128
                clk                             : in std_logic;                 --! тактовая частота локальной шины - 266 МГц
129
                clk_lock                : in std_logic;                 --! 1 - захват частота
130
 
131
                ---- BAR1 ----
132
                lc_adr                  : out std_logic_vector( 31 downto 0 );   --! шина адреса
133
                lc_host_data    : out std_logic_vector( 63 downto 0 );   --! шина данных - выход
134
                lc_data                 : in  std_logic_vector( 63 downto 0 );   --! шина данных - вход
135
                lc_wr                   : out std_logic;        --! 1 - запись
136
                lc_rd                   : out std_logic;        --! 1 - чтение, данные должны быть на четвёртый такт после rd
137
                lc_dma_req              : in  std_logic_vector( 1 downto 0 );    --! 1 - запрос DMA
138
                lc_irq                  : in  std_logic         --! 1 - запрос прерывания 
139
 
140
 
141
 
142
        );
143
end pcie_core64_m5;
144
 
145
 
146
architecture pcie_core64_m5 of pcie_core64_m5 is
147
 
148
---- BAR0 - блоки управления ----
149
signal  bp_host_data    : std_logic_vector( 31 downto 0 );       --! шина данных - выход 
150
signal  bp_data                 : std_logic_vector( 31 downto 0 );  --! шина данных - вход
151
signal  bp_adr                  : std_logic_vector( 19 downto 0 );       --! адрес регистра внутри блока 
152
signal  bp_we                   : std_logic_vector( 3 downto 0 );        --! 1 - запись в регистры 
153
signal  bp_rd                   : std_logic_vector( 3 downto 0 );   --! 1 - чтение из регистров блока 
154
signal  bp_sel                  : std_logic_vector( 1 downto 0 );        --! номер блока для чтения 
155
signal  bp_reg_we               : std_logic;                    --! 1 - запись в регистр по адресам   0x100000 - 0x1FFFFF 
156
signal  bp_reg_rd               : std_logic;                    --! 1 - чтение из регистра по адресам 0x100000 - 0x1FFFFF 
157
signal  bp_irq                  : std_logic;                                            --! 1 - запрос прерывания 
158
 
159
signal  clk250                  : std_logic;
160
signal  reset                   : std_logic;
161
 
162
signal  pb_master               : type_pb_master;               --! запрос 
163
signal  pb_slave                : type_pb_slave;                --! ответ  
164
 
165
signal  pb_reset                : std_logic;
166
signal  brd_mode                : std_logic_vector( 15 downto 0 );
167
 
168
signal  bp0_data                : std_logic_vector( 31 downto 0 );
169
 
170
begin
171
 
172
 
173
core: pcie_core64_m4
174
        generic map(
175
                refclk                  => refclk,                              --! Значение опорной тактовой частоты [МГц]
176
                is_simulation   => is_simulation                --! 0 - синтез, 1 - моделирование 
177
        )
178
        port map(
179
 
180
                ---- PCI-Express ----
181
                txp                               => txp,
182
                txn                               => txn,
183
 
184
                rxp                               => rxp,
185
                rxn                               => rxn,
186
 
187
                mgt250                    => mgt250,
188
 
189
                perst                     => perst,
190
 
191
                px                                => px,
192
 
193
                pcie_lstatus      => pcie_lstatus,
194
                pcie_link_up      => pcie_link_up,
195
 
196
 
197
                ---- Локальная шина ----                          
198
                clk_out                  => clk250,
199
                reset_out                => reset,
200
                dcm_rstp                 => dcm_rstp,
201
 
202
                ---- BAR1 ----
203
                aclk                    => clk,
204
                aclk_lock               => clk_lock,
205
                pb_master               => pb_master,
206
                pb_slave                => pb_slave,
207
 
208
 
209
                ---- BAR0 - блоки управления ----
210
                bp_host_data    => bp_host_data,
211
                bp_data                 => bp_data,
212
                bp_adr                  => bp_adr,
213
                bp_we                   => bp_we,
214
                bp_rd                   => bp_rd,
215
                bp_sel                  => bp_sel,
216
                bp_reg_we               => bp_reg_we,
217
                bp_reg_rd               => bp_reg_rd,
218
                bp_irq                  => bp_irq
219
 
220
 
221
        );
222
 
223
reset_out <= reset;
224
clk250_out   <= clk250;
225
 
226
bp_data <= bp0_data when bp_sel="00" else (others=>'0');
227
 
228
tz: core64_pb_transaction
229
        port map(
230
                reset                           => reset,               --! 0 - сброс
231
                clk                                     => clk,                 --! тактовая частота локальной шины - 266 МГц 
232
 
233
                ---- BAR1 ----  
234
                pb_master                       => pb_master,                   --! запрос 
235
                pb_slave                        => pb_slave,                    --! ответ  
236
 
237
                ---- локальная шина -----               
238
                lc_adr                          => lc_adr,
239
                lc_host_data            => lc_host_data,
240
                lc_data                         => lc_data,
241
                lc_wr                           => lc_wr,
242
                lc_rd                           => lc_rd,
243
                lc_dma_req                      => lc_dma_req,
244
                lc_irq                          => lc_irq
245
        );
246
 
247
 
248
main: block_pe_main
249
        generic map(
250
                Device_ID               => Device_ID,                   -- идентификатор модуля
251
                Revision                => Revision,                    -- версия модуля
252
                PLD_VER                 => PLD_VER,                             -- версия ПЛИС
253
                BLOCK_CNT               => x"0008"                      -- число блоков управления 
254
 
255
        )
256
        port map(
257
 
258
                ---- Global ----
259
                reset_hr1               => reset,               -- 0 - сброс
260
                clk                             => clk250,              -- Тактовая частота DSP
261
                pb_reset                => pb_reset,    -- 0 - сброс ведомой ПЛИС
262
 
263
                ---- HOST ----
264
                bl_adr                  => bp_adr( 4 downto 0 ),         -- адрес
265
                bl_data_in              => bp_host_data,                                -- данные
266
                bl_data_out             => bp0_data,                                    -- данные
267
                bl_data_we              => bp_we(0),                                     -- 1 - запись данных   
268
 
269
                ---- Управление ----
270
                brd_mode                => brd_mode                                             -- регистр BRD_MODE
271
 
272
        );
273
 
274
end pcie_core64_m5;

powered by: WebSVN 2.1.0

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