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

powered by: WebSVN 2.1.0

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