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

powered by: WebSVN 2.1.0

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