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_wishbone_m8.vhd] - Blame information for rev 17

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 17 dsmv
-------------------------------------------------------------------------------
2
--
3
-- Title       : pcie_core64_wishbone_m8
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 controller
13
--                                Modification 8 - Wishbone - Virtex 5 PCI Express v1.1 x8
14
--
15
-------------------------------------------------------------------------------
16
-- 
17
-- Version 1.0  20.04.2013
18
--              Created from  pcie_core64_wishbone v1.3
19
-- 
20
-------------------------------------------------------------------------------
21
 
22
library ieee;
23
use ieee.std_logic_1164.all;
24
 
25
package pcie_core64_wishbone_m8_pkg is
26
 
27
component pcie_core64_wishbone_m8 is
28
generic
29
(
30
    Device_ID       : in std_logic_vector( 15 downto 0 ):=x"0000";  -- идентификатор модуля
31
    Revision        : in std_logic_vector( 15 downto 0 ):=x"0000";  -- версия модуля
32
    PLD_VER         : in std_logic_vector( 15 downto 0 ):=x"0000";  -- версия ПЛИС
33
 
34
    is_simulation   : integer:=0         --! 0 - synthesis, 1 - simulation                            
35
);
36
port
37
(
38
    ---- PCI-Express ----
39
    txp             : out std_logic_vector( 7 downto 0 );
40
    txn             : out std_logic_vector( 7 downto 0 );
41
 
42
    rxp             : in  std_logic_vector( 7 downto 0 );
43
    rxn             : in  std_logic_vector( 7 downto 0 );
44
 
45
    mgt250          : in  std_logic;    -- reference clock 250 MHz from PCI_Express
46
 
47
    perst           : in  std_logic;    -- 0 - reset
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
    ---- Wishbone SYS_CON -----
55
    o_wb_clk        :   out std_logic;
56
    o_wb_rst        :   out std_logic;
57
    ---- Wishbone BUS -----
58
    ov_wbm_addr     :   out std_logic_vector(31 downto 0);
59
    ov_wbm_data     :   out std_logic_vector(63 downto 0);
60
    ov_wbm_sel      :   out std_logic_vector( 7 downto 0);
61
    o_wbm_we        :   out std_logic;
62
    o_wbm_cyc       :   out std_logic;
63
    o_wbm_stb       :   out std_logic;
64
    ov_wbm_cti      :   out std_logic_vector( 2 downto 0);  -- Cycle Type Identifier Address Tag
65
    ov_wbm_bte      :   out std_logic_vector( 1 downto 0);  -- Burst Type Extension Address Tag
66
 
67
    iv_wbm_data     :   in  std_logic_vector(63 downto 0);
68
    i_wbm_ack       :   in  std_logic;
69
    i_wbm_err       :   in  std_logic;                      -- error input - abnormal cycle termination
70
    i_wbm_rty       :   in  std_logic;                      -- retry input - interface is not ready
71
 
72
    i_wdm_irq_0     :   in  std_logic;
73
    iv_wbm_irq_dmar :   in  std_logic_vector( 1 downto 0)
74
 
75
);
76
end component pcie_core64_wishbone_m8;
77
 
78
end package pcie_core64_wishbone_m8_pkg;
79
-------------------------------------------------------------------------------
80
library ieee;
81
use ieee.std_logic_1164.all;
82
 
83
use work.core64_type_pkg.all;
84
use work.pcie_core64_m1_pkg.all;
85
use work.core64_pb_wishbone_pkg.all;
86
use work.block_pe_main_pkg.all;
87
 
88
entity pcie_core64_wishbone_m8 is
89
generic
90
(
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 - synthesis, 1 - simulation                                  --! 0 - синтез, 1 - моделирование 
96
);
97
port
98
(
99
    ---- PCI-Express ----
100
    txp             : out std_logic_vector( 7 downto 0 );
101
    txn             : out std_logic_vector( 7 downto 0 );
102
 
103
    rxp             : in  std_logic_vector( 7 downto 0 );
104
    rxn             : in  std_logic_vector( 7 downto 0 );
105
 
106
    mgt250          : in  std_logic;    -- reference clock 250 MHz from PCI_Express
107
 
108
    perst           : in  std_logic;    -- 0 - reset
109
 
110
    px              : out std_logic_vector( 7 downto 0 );   --! контрольные точки 
111
 
112
    pcie_lstatus    : out std_logic_vector( 15 downto 0 );  -- регистр LSTATUS
113
    pcie_link_up    : out std_logic;                        -- 0 - завершена инициализация PCI-Express
114
 
115
    ---- Wishbone SYS_CON -----
116
    o_wb_clk        :   out std_logic;
117
    o_wb_rst        :   out std_logic;
118
    ---- Wishbone BUS -----
119
    ov_wbm_addr     :   out std_logic_vector(31 downto 0);
120
    ov_wbm_data     :   out std_logic_vector(63 downto 0);
121
    ov_wbm_sel      :   out std_logic_vector( 7 downto 0);
122
    o_wbm_we        :   out std_logic;
123
    o_wbm_cyc       :   out std_logic;
124
    o_wbm_stb       :   out std_logic;
125
    ov_wbm_cti      :   out std_logic_vector( 2 downto 0);  -- Cycle Type Identifier Address Tag
126
    ov_wbm_bte      :   out std_logic_vector( 1 downto 0);  -- Burst Type Extension Address Tag
127
 
128
    iv_wbm_data     :   in  std_logic_vector(63 downto 0);
129
    i_wbm_ack       :   in  std_logic;
130
    i_wbm_err       :   in  std_logic;                      -- error input - abnormal cycle termination
131
    i_wbm_rty       :   in  std_logic;                      -- retry input - interface is not ready
132
 
133
    i_wdm_irq_0     :   in  std_logic;
134
    iv_wbm_irq_dmar :   in  std_logic_vector( 1 downto 0)
135
 
136
);
137
end pcie_core64_wishbone_m8;
138
 
139
architecture pcie_core64_wishbone_m8 of pcie_core64_wishbone_m8 is
140
-------------------------------------------------------------------------------
141
--
142
-- BAR0 - блоки управления ----
143
signal  bp_host_data    : std_logic_vector( 31 downto 0 );       --! шина данных - выход 
144
signal  bp_data                 : std_logic_vector( 31 downto 0 );  --! шина данных - вход
145
signal  bp_adr                  : std_logic_vector( 19 downto 0 );       --! адрес регистра внутри блока 
146
signal  bp_we                   : std_logic_vector( 3 downto 0 );        --! 1 - запись в регистры 
147
signal  bp_rd                   : std_logic_vector( 3 downto 0 );   --! 1 - чтение из регистров блока 
148
signal  bp_sel                  : std_logic_vector( 1 downto 0 );        --! номер блока для чтения 
149
signal  bp_reg_we               : std_logic;                    --! 1 - запись в регистр по адресам   0x100000 - 0x1FFFFF 
150
signal  bp_reg_rd               : std_logic;                    --! 1 - чтение из регистра по адресам 0x100000 - 0x1FFFFF 
151
signal  bp_irq                  : std_logic;                                            --! 1 - запрос прерывания 
152
 
153
signal  pb_master               : type_pb_master;               --! запрос 
154
signal  pb_slave                : type_pb_slave;                --! ответ  
155
 
156
signal  pb_reset                : std_logic;
157
signal  brd_mode                : std_logic_vector( 15 downto 0 );
158
 
159
signal  bp0_data                : std_logic_vector( 31 downto 0 );
160
-------------------------------------------------------------------------------
161
--
162
-- Declare Global SYS_CON stuff:
163
signal  clk                     : std_logic;
164
signal  reset                   : std_logic;
165
signal  dcm_rst_out     : std_logic;
166
signal  reset_p                 : std_logic;
167
signal  reset_p_z1              : std_logic;
168
signal  reset_p_z2              : std_logic;
169
-------------------------------------------------------------------------------
170
begin
171
-------------------------------------------------------------------------------
172
--
173
-- Instantiate CORE64_M6 module with PB BUS:
174
--
175
CORE    :   pcie_core64_m1
176
generic map
177
(
178
    is_simulation   => is_simulation    --! 0 - synthesis, 1 - simulation 
179
)
180
port map
181
(
182
    ---- PCI-Express ----
183
    txp             => txp,
184
    txn             => txn,
185
 
186
    rxp             => rxp,
187
    rxn             => rxn,
188
 
189
    mgt250          => mgt250,
190
 
191
    perst           => perst,
192
 
193
    px              => px,
194
 
195
    pcie_lstatus    => pcie_lstatus,
196
    pcie_link_up    => pcie_link_up,
197
 
198
    ---- Локальная шина ----
199
    clk_out         => clk,  -- S6 PCIE x1 module clock output
200
    reset_out       => reset,     -- 
201
    dcm_rstp        => dcm_rst_out,   -- S6 PCIE x1 module INV trn_reset_n_c
202
 
203
    ---- BAR1 (PB bus) ----
204
    aclk            => clk,  -- !!! same clock as clk_out
205
    aclk_lock       => '1',             -- 
206
    pb_master       => pb_master,       --
207
    pb_slave        => pb_slave,        -- 
208
 
209
    ---- BAR0 (to PE_MAIN) - блоки управления ----
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
reset_p <= not reset;
223
reset_p_z1 <= reset_p    after 1 ns when rising_edge( clk );
224
reset_p_z2 <= reset_p_z1 after 1 ns when rising_edge( clk );
225
 
226
-- Deal with CORE BP Input data:
227
bp_data <= bp0_data when bp_sel="00" else (others=>'0');
228
-------------------------------------------------------------------------------
229
--
230
-- Instantiate PE_MAIN module:
231
--
232
PE_MAIN    :   block_pe_main
233
generic map
234
(
235
    Device_ID       => Device_ID,   -- идентификатор модуля
236
    Revision        => Revision,    -- версия модуля
237
    PLD_VER         => PLD_VER,     -- версия ПЛИС
238
    BLOCK_CNT       => x"0008"      -- число блоков управления 
239
)
240
port map
241
(
242
    ---- Global ----
243
    reset_hr1       => reset,     -- 0 - сброс
244
    clk             => clk,  -- Тактовая частота PCIE x1 S6
245
    pb_reset        => pb_reset,        -- 0 - сброс ведомой ПЛИС
246
 
247
    ---- HOST ----
248
    bl_adr          => bp_adr( 4 downto 0 ),    -- адрес
249
    bl_data_in      => bp_host_data,            -- данные
250
    bl_data_out     => bp0_data,                -- данные
251
    bl_data_we      => bp_we(0),                -- 1 - запись данных   
252
 
253
    ---- Управление ----
254
    brd_mode        => brd_mode                 -- регистр BRD_MODE
255
 
256
);
257
-------------------------------------------------------------------------------
258
--
259
-- Instantiate PB BUS <-> WB BUS translator module:
260
--
261
PW_WB   :   core64_pb_wishbone
262
port map
263
(
264
    reset           => reset_p_z2,      --! 1 - сброс
265
    clk             => clk,                     --! тактовая частота локальной шины 
266
 
267
    ---- BAR1 ----
268
    pb_master       => pb_master,       --! запрос 
269
    pb_slave        => pb_slave,        --! ответ  
270
 
271
    ---- Wishbone BUS -----
272
    ov_wbm_addr     => ov_wbm_addr,
273
    ov_wbm_data     => ov_wbm_data,
274
    ov_wbm_sel      => ov_wbm_sel,
275
    o_wbm_we        => o_wbm_we,
276
    o_wbm_cyc       => o_wbm_cyc,
277
    o_wbm_stb       => o_wbm_stb,
278
    ov_wbm_cti      => ov_wbm_cti,      -- Cycle Type Identifier Address Tag
279
    ov_wbm_bte      => ov_wbm_bte,      -- Burst Type Extension Address Tag
280
 
281
    iv_wbm_data     => iv_wbm_data,
282
    i_wbm_ack       => i_wbm_ack,
283
    i_wbm_err       => i_wbm_err,       -- error input - abnormal cycle termination
284
    i_wbm_rty       => i_wbm_rty,       -- retry input - interface is not ready
285
 
286
    i_wdm_irq_0     => i_wdm_irq_0,
287
    iv_wbm_irq_dmar => iv_wbm_irq_dmar
288
);
289
-------------------------------------------------------------------------------
290
--
291
-- Module Output route:
292
--
293
o_wb_clk    <= clk;  -- route from PW_WB wrk clock
294
--                                                
295
pr_o_wb_rst: process( reset_p, clk ) begin
296
        if( reset_p='1' ) then
297
                o_wb_rst <= '1' after 1 ns;
298
        elsif( rising_edge( clk ) ) then
299
                o_wb_rst <= reset_p_z2 after 1 ns;
300
        end if;
301
end process;
302
 
303
 
304
-------------------------------------------------------------------------------
305
end pcie_core64_wishbone_m8;

powered by: WebSVN 2.1.0

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