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 18

Go to most recent revision | 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
signal  s_test_gen_fifo_prog_full   :   std_logic;
145
----------------------------------------------------------------------------------
146
begin
147
----------------------------------------------------------------------------------
148
--
149
-- Instaniate WB_CFG_SLAVE
150
--
151
WB_CFG_SLAVE    :   block_generate_wb_config_slave
152
generic map
153
(
154 18 dsmv
    BLOCK_ID   => x"001B", -- идентификатор модуля
155 2 dsmv
    BLOCK_VER  => x"0100"  -- версия модуля
156
)
157
port map
158
(
159
    --
160
    -- SYS_CON
161
    i_clk => i_clk,
162
    i_rst => i_rst,
163
    --
164
    -- WB CFG SLAVE IF
165
    iv_wbs_cfg_addr     => iv_wbs_cfg_addr,
166
    iv_wbs_cfg_data     => iv_wbs_cfg_data,
167
    iv_wbs_cfg_sel      => iv_wbs_cfg_sel,
168
    i_wbs_cfg_we        => i_wbs_cfg_we,
169
    i_wbs_cfg_cyc       => i_wbs_cfg_cyc,
170
    i_wbs_cfg_stb       => i_wbs_cfg_stb,
171
    iv_wbs_cfg_cti      => iv_wbs_cfg_cti,
172
    iv_wbs_cfg_bte      => iv_wbs_cfg_bte,
173
 
174
    ov_wbs_cfg_data     => ov_wbs_cfg_data,
175
    o_wbs_cfg_ack       => o_wbs_cfg_ack,
176
    o_wbs_cfg_err       => o_wbs_cfg_err,
177
    o_wbs_cfg_rty       => o_wbs_cfg_rty,
178
    --
179
    -- CONTROL Outputs
180
    ov_test_gen_ctrl    => sv_test_gen_ctrl,
181
    ov_test_gen_size    => sv_test_gen_size,
182
    ov_test_gen_cnt1    => sv_test_gen_cnt1,
183
    ov_test_gen_cnt2    => sv_test_gen_cnt2,
184
    --
185
    -- STATUS Input
186
    iv_test_gen_bl_wr   => sv_test_gen_bl_wr
187
);
188
----------------------------------------------------------------------------------
189
--
190
-- Instaniate TEST_GEN 
191
--
192
TEST_GEN    :   cl_test_generate
193
port map
194
(
195
    ---- Global ----
196
    reset       => s_di_fifo_rst,   -- 0 - сброс
197
    clk         => i_clk,           -- тактовая частота
198
 
199
    ---- DIO_IN ----
200
    di_clk      => i_clk,                   -- тактовая частота записи в FIFO
201
    di_data     => sv_di_data,              -- данные
202
    di_data_we  => s_di_data_we,            -- 1 - запись данных
203
    di_flag_paf => s_di_flag_paf,           -- 1 - есть место для записи
204
    di_fifo_rst => s_di_fifo_rst,           -- 0 - сброс FIFO
205
    di_start    => s_di_start,              -- 1 - разрешение работы (MODE0[5])
206
 
207
    ---- Управление ----
208
    test_gen_ctrl   => sv_test_gen_ctrl,    -- Регистр управления
209
    test_gen_size   => sv_test_gen_size,    -- размер в блоках по 512x64 (4096 байт)
210
    test_gen_bl_wr  => sv_test_gen_bl_wr,   -- Число записанных блоков [31:0]
211
    test_gen_cnt1   => sv_test_gen_cnt1,    -- Счётчик разрешения работы
212
    test_gen_cnt2   => sv_test_gen_cnt2     -- Счётчик запрещения работы
213
);
214
----------------------------------------------------------------------------------
215
--
216
-- Instaniate TEST_GEN_FIFO
217
--  ==> Volume==(512+512)x64bit
218
--
219
TEST_GEN_FIFO   :   ctrl_fifo1024x64_st_v1
220
PORT MAP
221
(
222
    --
223
    -- SYS_CON
224
    clk => i_clk,
225
    rst => i_rst,
226
    --
227
    -- DATA_IN 
228
    din     => sv_di_data,
229
    wr_en   => s_di_data_we,
230
    --
231
    -- DATA_OUT
232
    dout    => sv_test_gen_fifo_data,
233
    rd_en   => s_test_gen_fifo_rd,
234
    --
235
    -- FLAGs
236
    full        => s_test_gen_fifo_full,
237
    empty       => s_test_gen_fifo_empty,
238
    prog_full   => s_test_gen_fifo_prog_full    -- Level==512
239
);
240
----------------------------------------------------------------------------------
241
--
242
-- Instaniate WB_BURST_SLAVE (provide Output-Only Functionality)
243
--
244
WB_BURST_SLAVE  :   block_generate_wb_burst_slave
245
port map
246
(
247
    --
248
    -- SYS_CON
249
    i_clk => i_clk,
250
    i_rst => i_rst,
251
    --
252
    -- WB BURST SLAVE IF (READ-ONLY IF)
253
    iv_wbs_burst_addr   => iv_wbs_burst_addr,
254
    iv_wbs_burst_sel    => iv_wbs_burst_sel,
255
    i_wbs_burst_we      => i_wbs_burst_we,
256
    i_wbs_burst_cyc     => i_wbs_burst_cyc,
257
    i_wbs_burst_stb     => i_wbs_burst_stb,
258
    iv_wbs_burst_cti    => iv_wbs_burst_cti,
259
    iv_wbs_burst_bte    => iv_wbs_burst_bte,
260
 
261
    ov_wbs_burst_data   => ov_wbs_burst_data,
262
    o_wbs_burst_ack     => o_wbs_burst_ack,
263
    o_wbs_burst_err     => o_wbs_burst_err,
264
    o_wbs_burst_rty     => o_wbs_burst_rty,
265
    --
266
    -- TEST_GEN_FIFO IF 
267
    iv_test_gen_fifo_data       => sv_test_gen_fifo_data,
268
    o_test_gen_fifo_rd          => s_test_gen_fifo_rd,
269
    i_test_gen_fifo_full        => s_test_gen_fifo_full,
270
    i_test_gen_fifo_empty       => s_test_gen_fifo_empty,
271
    i_test_gen_fifo_prog_full   => s_test_gen_fifo_prog_full
272
 
273
);
274
----------------------------------------------------------------------------------
275
--
276
-- MODULE INNER wires routing:
277
--
278
-- define TEST_GEN.di_flag_paf like TEST_GEN_FIFO.prog_full 
279
s_di_flag_paf   <= not s_test_gen_fifo_prog_full;
280
-- define TEST_GEN.di_start like TEST_GEN.sv_test_gen_ctrl[1] ( 1-> RSVD ) 
281
s_di_start      <= sv_test_gen_ctrl(5);
282
-- define TEST_GEN.di_fifo_rst - it is RST_n signal 
283
s_di_fifo_rst   <= not i_rst;
284
 
285
----------------------------------------------------------------------------------
286
--
287
-- MODULE OUTPUTs routing:
288
--
289
-- DMAR WB IRQ deal
290
o_wbs_irq_dmar  <= s_test_gen_fifo_prog_full;   -- (DS: 512 слов заполнили - взевели dmar)
291
-- WB IRQ deal
292
o_wbs_irq_0     <= '0';                         -- No EVENTs for now
293
----------------------------------------------------------------------------------
294
end rtl;
295
 

powered by: WebSVN 2.1.0

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