OpenCores
URL https://opencores.org/ocsvn/pcie_ds_dma/pcie_ds_dma/trunk

Subversion Repositories pcie_ds_dma

[/] [pcie_ds_dma/] [trunk/] [core/] [wishbone/] [block_test_generate/] [block_test_generate_wb.vhd] - Blame information for rev 29

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dsmv
----------------------------------------------------------------------------------
2
-- Company:         ;)
3
-- Engineer:        Kuzmi4
4
-- 
5
-- Create Date:     17:40:25 05/21/2010 
6
-- Design Name:     
7
-- Module Name:     block_test_generate_wb - rtl 
8
-- Project Name:    DS_DMA
9
-- Target Devices:  (XC6LX45T - FIFO)
10
-- Tool versions:   Xilinx
11
-- Description:     
12
--                  
13
--                  Top-level module for TEST_GEN_WB functionality
14
--                  (NB!!! --> module contain syb-modules with restrictions)
15
--
16
-- Revision: 
17
-- Revision 0.01 - File Created 
18
-- Revision 0.02 - update BLOCK_ID/BLOCK_VER logic - now it's inner ID of component
19
--
20
----------------------------------------------------------------------------------
21
library IEEE;
22
use IEEE.STD_LOGIC_1164.ALL;
23
 
24
package block_test_generate_wb_pkg is
25
 
26
component block_test_generate_wb is
27
port
28
(
29
    --
30
    -- SYS_CON
31
    i_clk : in  STD_LOGIC;
32
    i_rst : in  STD_LOGIC;
33
    --
34
    -- WB CFG SLAVE IF
35
    iv_wbs_cfg_addr     :   in  std_logic_vector(  7 downto 0 );
36
    iv_wbs_cfg_data     :   in  std_logic_vector( 63 downto 0 );
37
    iv_wbs_cfg_sel      :   in  std_logic_vector(  7 downto 0 );
38
    i_wbs_cfg_we        :   in  std_logic;
39
    i_wbs_cfg_cyc       :   in  std_logic;
40
    i_wbs_cfg_stb       :   in  std_logic;
41
    iv_wbs_cfg_cti      :   in  std_logic_vector(  2 downto 0 );
42
    iv_wbs_cfg_bte      :   in  std_logic_vector(  1 downto 0 );
43
 
44
    ov_wbs_cfg_data     :   out std_logic_vector( 63 downto 0 );
45
    o_wbs_cfg_ack       :   out std_logic;
46
    o_wbs_cfg_err       :   out std_logic;
47
    o_wbs_cfg_rty       :   out std_logic;
48
    --
49
    -- WB BURST SLAVE IF (READ-ONLY IF)
50
    iv_wbs_burst_addr   :   in  std_logic_vector( 11 downto 0 );
51
    iv_wbs_burst_sel    :   in  std_logic_vector(  7 downto 0 );
52
    i_wbs_burst_we      :   in  std_logic;
53
    i_wbs_burst_cyc     :   in  std_logic;
54
    i_wbs_burst_stb     :   in  std_logic;
55
    iv_wbs_burst_cti    :   in  std_logic_vector(  2 downto 0 );
56
    iv_wbs_burst_bte    :   in  std_logic_vector(  1 downto 0 );
57
 
58
    ov_wbs_burst_data   :   out std_logic_vector( 63 downto 0 );
59
    o_wbs_burst_ack     :   out std_logic;
60
    o_wbs_burst_err     :   out std_logic;
61
    o_wbs_burst_rty     :   out std_logic;
62
    --
63
    -- WB IRQ lines
64
    o_wbs_irq_0         :   out std_logic;
65
    o_wbs_irq_dmar      :   out std_logic
66
);
67
end component block_test_generate_wb;
68
 
69
end package block_test_generate_wb_pkg;
70
----------------------------------------------------------------------------------
71
library IEEE;
72
use IEEE.STD_LOGIC_1164.ALL;
73
 
74
library work;
75
use work.cl_test_generate_pkg.all;
76
use work.block_generate_wb_config_slave_pkg.all;
77
use work.block_generate_wb_pkg.all;
78
 
79
entity block_test_generate_wb is
80
port
81
(
82
    --
83
    -- SYS_CON
84
    i_clk : in  STD_LOGIC;
85
    i_rst : in  STD_LOGIC;
86
    --
87
    -- WB CFG SLAVE IF
88
    iv_wbs_cfg_addr     :   in  std_logic_vector(  7 downto 0 );
89
    iv_wbs_cfg_data     :   in  std_logic_vector( 63 downto 0 );
90
    iv_wbs_cfg_sel      :   in  std_logic_vector(  7 downto 0 );
91
    i_wbs_cfg_we        :   in  std_logic;
92
    i_wbs_cfg_cyc       :   in  std_logic;
93
    i_wbs_cfg_stb       :   in  std_logic;
94
    iv_wbs_cfg_cti      :   in  std_logic_vector(  2 downto 0 );
95
    iv_wbs_cfg_bte      :   in  std_logic_vector(  1 downto 0 );
96
 
97
    ov_wbs_cfg_data     :   out std_logic_vector( 63 downto 0 );
98
    o_wbs_cfg_ack       :   out std_logic;
99
    o_wbs_cfg_err       :   out std_logic;
100
    o_wbs_cfg_rty       :   out std_logic;
101
    --
102
    -- WB BURST SLAVE IF (READ-ONLY IF)
103
    iv_wbs_burst_addr   :   in  std_logic_vector( 11 downto 0 );
104
    iv_wbs_burst_sel    :   in  std_logic_vector(  7 downto 0 );
105
    i_wbs_burst_we      :   in  std_logic;
106
    i_wbs_burst_cyc     :   in  std_logic;
107
    i_wbs_burst_stb     :   in  std_logic;
108
    iv_wbs_burst_cti    :   in  std_logic_vector(  2 downto 0 );
109
    iv_wbs_burst_bte    :   in  std_logic_vector(  1 downto 0 );
110
 
111
    ov_wbs_burst_data   :   out std_logic_vector( 63 downto 0 );
112
    o_wbs_burst_ack     :   out std_logic;
113
    o_wbs_burst_err     :   out std_logic;
114
    o_wbs_burst_rty     :   out std_logic;
115
    --
116
    -- WB IRQ lines
117
    o_wbs_irq_0         :   out std_logic;
118
    o_wbs_irq_dmar      :   out std_logic
119
);
120
end block_test_generate_wb;
121
 
122
architecture rtl of block_test_generate_wb is
123
----------------------------------------------------------------------------------
124
--
125
-- Define TEST_GEN CTRL/STS stuff:
126
signal  sv_test_gen_ctrl    :   std_logic_vector(15 downto 0);
127
signal  sv_test_gen_size    :   std_logic_vector(15 downto 0);
128
signal  sv_test_gen_cnt1    :   std_logic_vector(15 downto 0);
129
signal  sv_test_gen_cnt2    :   std_logic_vector(15 downto 0);
130
signal  sv_test_gen_bl_wr   :   std_logic_vector(31 downto 0);
131
--
132
-- Define TEST_GEN DATA_OUT IF stuff:
133
signal  sv_di_data          :   std_logic_vector(63 downto 0);
134
signal  s_di_data_we        :   std_logic;
135
signal  s_di_flag_paf       :   std_logic;
136
signal  s_di_fifo_rst       :   std_logic;
137
signal  s_di_start          :   std_logic;
138
--
139
-- Define WB_BURST_SLAVE/TEST_GEN_FIFO communication stuff:
140
signal  sv_test_gen_fifo_data       :   std_logic_vector(63 downto 0);
141
signal  s_test_gen_fifo_rd          :   std_logic;
142
signal  s_test_gen_fifo_full        :   std_logic;
143
signal  s_test_gen_fifo_empty       :   std_logic;
144 29 dsmv
signal  s_test_gen_fifo_prog_full   :   std_logic;
145
signal  iv_test_gen_status                      :   std_logic_vector( 31 downto 0 );
146
signal  rstp                                            :   std_logic;
147
signal  dmar                                            :   std_logic;
148 2 dsmv
----------------------------------------------------------------------------------
149
begin
150
----------------------------------------------------------------------------------
151
--
152
-- Instaniate WB_CFG_SLAVE
153
--
154
WB_CFG_SLAVE    :   block_generate_wb_config_slave
155
generic map
156
(
157 18 dsmv
    BLOCK_ID   => x"001B", -- идентификатор модуля
158 2 dsmv
    BLOCK_VER  => x"0100"  -- версия модуля
159
)
160
port map
161
(
162
    --
163
    -- SYS_CON
164
    i_clk => i_clk,
165
    i_rst => i_rst,
166
    --
167
    -- WB CFG SLAVE IF
168
    iv_wbs_cfg_addr     => iv_wbs_cfg_addr,
169
    iv_wbs_cfg_data     => iv_wbs_cfg_data,
170
    iv_wbs_cfg_sel      => iv_wbs_cfg_sel,
171
    i_wbs_cfg_we        => i_wbs_cfg_we,
172
    i_wbs_cfg_cyc       => i_wbs_cfg_cyc,
173
    i_wbs_cfg_stb       => i_wbs_cfg_stb,
174
    iv_wbs_cfg_cti      => iv_wbs_cfg_cti,
175
    iv_wbs_cfg_bte      => iv_wbs_cfg_bte,
176
 
177
    ov_wbs_cfg_data     => ov_wbs_cfg_data,
178
    o_wbs_cfg_ack       => o_wbs_cfg_ack,
179
    o_wbs_cfg_err       => o_wbs_cfg_err,
180
    o_wbs_cfg_rty       => o_wbs_cfg_rty,
181
    --
182
    -- CONTROL Outputs
183
    ov_test_gen_ctrl    => sv_test_gen_ctrl,
184
    ov_test_gen_size    => sv_test_gen_size,
185
    ov_test_gen_cnt1    => sv_test_gen_cnt1,
186
    ov_test_gen_cnt2    => sv_test_gen_cnt2,
187
    --
188 29 dsmv
    -- STATUS Input                                               
189
        iv_test_gen_status  => iv_test_gen_status,
190 2 dsmv
    iv_test_gen_bl_wr   => sv_test_gen_bl_wr
191
);
192
----------------------------------------------------------------------------------
193
--
194
-- Instaniate TEST_GEN 
195
--
196
TEST_GEN    :   cl_test_generate
197
port map
198
(
199
    ---- Global ----
200
    reset       => s_di_fifo_rst,   -- 0 - сброс
201
    clk         => i_clk,           -- тактовая частота
202
 
203
    ---- DIO_IN ----
204
    di_clk      => i_clk,                   -- тактовая частота записи в FIFO
205
    di_data     => sv_di_data,              -- данные
206
    di_data_we  => s_di_data_we,            -- 1 - запись данных
207
    di_flag_paf => s_di_flag_paf,           -- 1 - есть место для записи
208
    di_fifo_rst => s_di_fifo_rst,           -- 0 - сброс FIFO
209
    di_start    => s_di_start,              -- 1 - разрешение работы (MODE0[5])
210
 
211
    ---- Управление ----
212
    test_gen_ctrl   => sv_test_gen_ctrl,    -- Регистр управления
213
    test_gen_size   => sv_test_gen_size,    -- размер в блоках по 512x64 (4096 байт)
214
    test_gen_bl_wr  => sv_test_gen_bl_wr,   -- Число записанных блоков [31:0]
215
    test_gen_cnt1   => sv_test_gen_cnt1,    -- Счётчик разрешения работы
216
    test_gen_cnt2   => sv_test_gen_cnt2     -- Счётчик запрещения работы
217
);
218
----------------------------------------------------------------------------------
219
--
220
-- Instaniate TEST_GEN_FIFO
221
--  ==> Volume==(512+512)x64bit
222
--
223
TEST_GEN_FIFO   :   ctrl_fifo1024x64_st_v1
224
PORT MAP
225
(
226
    --
227
    -- SYS_CON
228
    clk => i_clk,
229 29 dsmv
    rst => rstp,
230 2 dsmv
    --
231
    -- DATA_IN 
232
    din     => sv_di_data,
233
    wr_en   => s_di_data_we,
234
    --
235
    -- DATA_OUT
236
    dout    => sv_test_gen_fifo_data,
237
    rd_en   => s_test_gen_fifo_rd,
238
    --
239
    -- FLAGs
240
    full        => s_test_gen_fifo_full,
241
    empty       => s_test_gen_fifo_empty,
242
    prog_full   => s_test_gen_fifo_prog_full    -- Level==512
243
);
244
----------------------------------------------------------------------------------
245
--
246
-- Instaniate WB_BURST_SLAVE (provide Output-Only Functionality)
247
--
248
WB_BURST_SLAVE  :   block_generate_wb_burst_slave
249
port map
250
(
251
    --
252
    -- SYS_CON
253
    i_clk => i_clk,
254
    i_rst => i_rst,
255
    --
256
    -- WB BURST SLAVE IF (READ-ONLY IF)
257
    iv_wbs_burst_addr   => iv_wbs_burst_addr,
258
    iv_wbs_burst_sel    => iv_wbs_burst_sel,
259
    i_wbs_burst_we      => i_wbs_burst_we,
260
    i_wbs_burst_cyc     => i_wbs_burst_cyc,
261
    i_wbs_burst_stb     => i_wbs_burst_stb,
262
    iv_wbs_burst_cti    => iv_wbs_burst_cti,
263
    iv_wbs_burst_bte    => iv_wbs_burst_bte,
264
 
265
    ov_wbs_burst_data   => ov_wbs_burst_data,
266
    o_wbs_burst_ack     => o_wbs_burst_ack,
267
    o_wbs_burst_err     => o_wbs_burst_err,
268
    o_wbs_burst_rty     => o_wbs_burst_rty,
269
    --
270
    -- TEST_GEN_FIFO IF 
271
    iv_test_gen_fifo_data       => sv_test_gen_fifo_data,
272
    o_test_gen_fifo_rd          => s_test_gen_fifo_rd,
273
    i_test_gen_fifo_full        => s_test_gen_fifo_full,
274
    i_test_gen_fifo_empty       => s_test_gen_fifo_empty,
275
    i_test_gen_fifo_prog_full   => s_test_gen_fifo_prog_full
276
 
277
);
278
----------------------------------------------------------------------------------
279
--
280
-- MODULE INNER wires routing:
281
--
282
-- define TEST_GEN.di_flag_paf like TEST_GEN_FIFO.prog_full 
283
s_di_flag_paf   <= not s_test_gen_fifo_prog_full;
284
-- define TEST_GEN.di_start like TEST_GEN.sv_test_gen_ctrl[1] ( 1-> RSVD ) 
285
s_di_start      <= sv_test_gen_ctrl(5);
286
-- define TEST_GEN.di_fifo_rst - it is RST_n signal 
287 29 dsmv
s_di_fifo_rst   <= not rstp;
288 2 dsmv
 
289 29 dsmv
rstp <= i_rst or sv_test_gen_ctrl(0) after 1 ns when rising_edge( i_clk );
290
 
291
iv_test_gen_status(0) <= '1';
292
iv_test_gen_status(1) <= '0';
293
iv_test_gen_status(2) <= s_test_gen_fifo_empty;
294
iv_test_gen_status(3) <= s_test_gen_fifo_prog_full;
295
iv_test_gen_status(4) <= s_test_gen_fifo_full;
296
iv_test_gen_status(5) <= '0';
297
iv_test_gen_status(6) <= '0';
298
iv_test_gen_status(7) <= '0';
299
iv_test_gen_status(8) <= sv_test_gen_ctrl(5);
300
iv_test_gen_status(9) <= dmar;
301
iv_test_gen_status(10) <= rstp;
302
iv_test_gen_status(11) <= '0';
303
iv_test_gen_status(12) <= '0';
304
iv_test_gen_status(13) <= '0';
305
iv_test_gen_status(14) <= '0';
306
iv_test_gen_status(15) <= '0';
307
 
308
iv_test_gen_status( 31 downto 16 ) <= (others=>'0');
309
 
310
 
311
 
312 2 dsmv
----------------------------------------------------------------------------------
313
--
314
-- MODULE OUTPUTs routing:
315
--
316 29 dsmv
-- DMAR WB IRQ deal                                
317
dmar <= s_test_gen_fifo_prog_full or sv_test_gen_ctrl(14);   -- (DS: 512 слов заполнили - взевели dmar)
318
o_wbs_irq_dmar  <= dmar;
319 2 dsmv
-- WB IRQ deal
320
o_wbs_irq_0     <= '0';                         -- No EVENTs for now
321
----------------------------------------------------------------------------------
322
end rtl;
323
 

powered by: WebSVN 2.1.0

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