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

powered by: WebSVN 2.1.0

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