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

Subversion Repositories xgate

[/] [xgate/] [trunk/] [rtl/] [verilog/] [xgate_top.v] - Blame information for rev 96

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 rehayes
////////////////////////////////////////////////////////////////////////////////
2
//
3
//  XGATE Coprocessor - XGATE Top Level Module
4
//
5
//  Author: Robert Hayes
6
//          rehayes@opencores.org
7
//
8
//  Downloaded from: http://www.opencores.org/projects/xgate.....
9
//
10
////////////////////////////////////////////////////////////////////////////////
11
// Copyright (c) 2009, Robert Hayes
12
//
13
// This source file is free software: you can redistribute it and/or modify
14
// it under the terms of the GNU Lesser General Public License as published
15
// by the Free Software Foundation, either version 3 of the License, or
16
// (at your option) any later version.
17
//
18
// Supplemental terms.
19
//     * Redistributions of source code must retain the above copyright
20
//       notice, this list of conditions and the following disclaimer.
21
//     * Neither the name of the <organization> nor the
22
//       names of its contributors may be used to endorse or promote products
23
//       derived from this software without specific prior written permission.
24
//
25
// THIS SOFTWARE IS PROVIDED BY Robert Hayes ''AS IS'' AND ANY
26
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
27
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
28
// DISCLAIMED. IN NO EVENT SHALL Robert Hayes BE LIABLE FOR ANY
29
// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
30
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
32
// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
34
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35
//
36
// You should have received a copy of the GNU General Public License
37
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
38
////////////////////////////////////////////////////////////////////////////////
39
// 45678901234567890123456789012345678901234567890123456789012345678901234567890
40
 
41
module xgate_top #(parameter ARST_LVL = 1'b0,      // asynchronous reset level
42 89 rehayes
                   parameter DWIDTH   = 16,        // define the wishbone bus data size
43
                   parameter SINGLE_CYCLE = 1'b0,  //
44
                   parameter MAX_CHANNEL  = 127,   // Max XGATE Interrupt Channel Number
45
                   parameter WB_RD_DEFAULT = 0)    // WISHBONE Read Bus default state
46 2 rehayes
  (
47 5 rehayes
  // Wishbone Slave Signals
48
  output    [DWIDTH-1:0] wbs_dat_o,     // databus output
49
  output                 wbs_ack_o,     // bus cycle acknowledge output
50 53 rehayes
  output                 wbs_err_o,     // bus error, lost module select durning wait state
51 5 rehayes
  input                  wbs_clk_i,     // master clock input
52
  input                  wbs_rst_i,     // synchronous active high reset
53
  input                  arst_i,        // asynchronous reset
54 67 rehayes
  input            [6:1] wbs_adr_i,     // lower address bits
55 5 rehayes
  input     [DWIDTH-1:0] wbs_dat_i,     // databus input
56
  input                  wbs_we_i,      // write enable input
57
  input                  wbs_stb_i,     // stobe/core select signal
58
  input                  wbs_cyc_i,     // valid bus cycle input
59
  input            [1:0] wbs_sel_i,     // Select byte in word bus transaction
60
  // Wishbone Master Signals
61
  output    [DWIDTH-1:0] wbm_dat_o,     // databus output
62
  output                 wbm_we_o,      // write enable output
63
  output                 wbm_stb_o,     // stobe/core select signal
64
  output                 wbm_cyc_o,     // valid bus cycle output
65
  output          [ 1:0] wbm_sel_o,     // Select byte in word bus transaction
66
  output          [15:0] wbm_adr_o,     // Address bits
67
  input     [DWIDTH-1:0] wbm_dat_i,     // databus input
68
  input                  wbm_ack_i,     // bus cycle acknowledge input
69 2 rehayes
  // XGATE IO Signals
70 96 rehayes
  output          [ 7:0] xgswt,            // XGATE Software Trigger Register
71 12 rehayes
  output                 xg_sw_irq,        // Xgate Software interrupt
72 72 rehayes
  output [MAX_CHANNEL:1] xgif,             // XGATE Interrupt Flag to Host
73
  input  [MAX_CHANNEL:1] chan_req_i,       // XGATE Interrupt request
74 2 rehayes
  input                  risc_clk,         // Clock for RISC core
75 30 rehayes
  input                  debug_mode_i,     // Force RISC core into debug mode
76
  input                  secure_mode_i,    // Limit host asscess to Xgate RISC registers
77 2 rehayes
  input                  scantestmode      // Chip in in scan test mode
78
  );
79
 
80 67 rehayes
 
81 2 rehayes
  wire        zero_flag;
82
  wire        negative_flag;
83
  wire        carry_flag;
84
  wire        overflow_flag;
85
  wire [15:0] xgr1;          // XGATE Register #1
86
  wire [15:0] xgr2;          // XGATE Register #2
87
  wire [15:0] xgr3;          // XGATE Register #3
88
  wire [15:0] xgr4;          // XGATE Register #4
89
  wire [15:0] xgr5;          // XGATE Register #5
90
  wire [15:0] xgr6;          // XGATE Register #6
91
  wire [15:0] xgr7;          // XGATE Register #7
92
 
93
  wire        write_xgmctl;  // Write Strobe for XGMCTL register
94 17 rehayes
  wire        write_xgchid;  // Write Strobe for XGCHID register
95 41 rehayes
  wire  [1:0] write_xgvbr;   // Write Strobe for XGVBR register
96
  wire  [1:0] write_xgif_7;  // Write Strobe for Interrupt Flag Register 7
97
  wire  [1:0] write_xgif_6;  // Write Strobe for Interrupt Flag Register 6
98
  wire  [1:0] write_xgif_5;  // Write Strobe for Interrupt Flag Register 5
99
  wire  [1:0] write_xgif_4;  // Write Strobe for Interrupt Flag Register 4
100
  wire  [1:0] write_xgif_3;  // Write Strobe for Interrupt Flag Register 3
101
  wire  [1:0] write_xgif_2;  // Write Strobe for Interrupt Flag Register 2
102
  wire  [1:0] write_xgif_1;  // Write Strobe for Interrupt Flag Register 1
103
  wire  [1:0] write_xgif_0;  // Write Strobe for Interrupt Flag Register 0
104 67 rehayes
  wire  [1:0] write_irw_en_7; // Write Strobe for Interrupt Bypass Control Register 7
105
  wire  [1:0] write_irw_en_6; // Write Strobe for Interrupt Bypass Control Register 6
106
  wire  [1:0] write_irw_en_5; // Write Strobe for Interrupt Bypass Control Register 5
107
  wire  [1:0] write_irw_en_4; // Write Strobe for Interrupt Bypass Control Register 4
108
  wire  [1:0] write_irw_en_3; // Write Strobe for Interrupt Bypass Control Register 3
109
  wire  [1:0] write_irw_en_2; // Write Strobe for Interrupt Bypass Control Register 2
110
  wire  [1:0] write_irw_en_1; // Write Strobe for Interrupt Bypass Control Register 1
111
  wire  [1:0] write_irw_en_0; // Write Strobe for Interrupt Bypass Control Register 0
112 2 rehayes
  wire        write_xgswt;   // Write Strobe for XGSWT register
113
  wire        write_xgsem;   // Write Strobe for XGSEM register
114
  wire        write_xgccr;   // Write Strobe for XGATE Condition Code Register
115 41 rehayes
  wire  [1:0] write_xgpc;    // Write Strobe for XGATE Program Counter
116
  wire  [1:0] write_xgr7;    // Write Strobe for XGATE Data Register R7
117
  wire  [1:0] write_xgr6;    // Write Strobe for XGATE Data Register R6
118
  wire  [1:0] write_xgr5;    // Write Strobe for XGATE Data Register R5
119
  wire  [1:0] write_xgr4;    // Write Strobe for XGATE Data Register R4
120
  wire  [1:0] write_xgr3;    // Write Strobe for XGATE Data Register R3
121
  wire  [1:0] write_xgr2;    // Write Strobe for XGATE Data Register R2
122
  wire  [1:0] write_xgr1;    // Write Strobe for XGATE Data Register R1
123 2 rehayes
 
124
  wire        clear_xgif_7;    // Strobe for decode to clear interrupt flag bank 7
125
  wire        clear_xgif_6;    // Strobe for decode to clear interrupt flag bank 6
126
  wire        clear_xgif_5;    // Strobe for decode to clear interrupt flag bank 5
127
  wire        clear_xgif_4;    // Strobe for decode to clear interrupt flag bank 4
128
  wire        clear_xgif_3;    // Strobe for decode to clear interrupt flag bank 3
129
  wire        clear_xgif_2;    // Strobe for decode to clear interrupt flag bank 2
130
  wire        clear_xgif_1;    // Strobe for decode to clear interrupt flag bank 1
131
  wire        clear_xgif_0;    // Strobe for decode to clear interrupt flag bank 0
132
  wire [15:0] clear_xgif_data; // Data for decode to clear interrupt flag
133 72 rehayes
  wire [MAX_CHANNEL:1] chan_bypass; // XGATE Interrupt enable or bypass
134 2 rehayes
 
135
  wire        xge;           // XGATE Module Enable
136
  wire        xgfrz;         // Stop XGATE in Freeze Mode
137 15 rehayes
  wire        xgdbg_set;     // Enter XGATE Debug Mode
138
  wire        xgdbg_clear;   // Leave XGATE Debug Mode
139 41 rehayes
  wire        xgfact;        // Fake Activity
140 2 rehayes
  wire        xgss;          // XGATE Single Step
141
  wire        xgsweif_c;     // Clear XGATE Software Error Interrupt FLag
142
  wire        xgie;          // XGATE Interrupt Enable
143
  wire [ 6:0] int_req;       // Encoded interrupt request
144
  wire [ 6:0] xgchid;        // Channel actively being processed
145 72 rehayes
  wire [127:1] xgif_status;  // Status bits of interrupt output flags that have been set
146
  wire [127:1] irq_bypass;   // IRQ status bits WISHBONE Read bus
147 67 rehayes
 
148 2 rehayes
  wire [15:1] xgvbr;         // XGATE vector Base Address Register
149 12 rehayes
  wire        brk_irq_ena;   // Enable BRK instruction to generate interrupt
150 89 rehayes
 
151 5 rehayes
  wire [15:0] xgate_address;   //
152
  wire [15:0] write_mem_data;  //
153
  wire [15:0] read_mem_data;   //
154 34 rehayes
  wire        mem_access;      //
155 5 rehayes
  wire        mem_req_ack;     //
156 12 rehayes
 
157 89 rehayes
  wire        debug_active;    // RISC state machine in Debug mode
158 53 rehayes
  wire        debug_ack;       // Clear debug register
159
  wire        single_step;     // Pulse to trigger a single instruction execution in debug mode
160
  wire        ss_mem_ack;      // WISHBONE Bus has granted single step memory access
161 89 rehayes
 
162 63 rehayes
  wire [ 7:0] host_semap;       // Semaphore status for host
163
  wire        write_mem_strb_l; // Strobe for writing low data byte
164
  wire        write_mem_strb_h; // Strobe for writing high data bye
165 96 rehayes
  wire        sync_reset;
166
  wire        async_rst_b;
167 89 rehayes
 
168 2 rehayes
  // ---------------------------------------------------------------------------
169
  // Wishbone Slave Bus interface
170
  xgate_wbs_bus #(.ARST_LVL(ARST_LVL),
171 67 rehayes
                  .SINGLE_CYCLE(SINGLE_CYCLE),
172 89 rehayes
                  .WB_RD_DEFAULT(WB_RD_DEFAULT))
173 2 rehayes
    wishbone_s(
174
    .wbs_dat_o( wbs_dat_o ),
175
    .wbs_ack_o( wbs_ack_o ),
176 53 rehayes
    .wbs_err_o( wbs_err_o ),
177 2 rehayes
    .wbs_clk_i( wbs_clk_i ),
178
    .wbs_rst_i( wbs_rst_i ),
179
    .arst_i( arst_i ),
180
    .wbs_adr_i( wbs_adr_i ),
181
    .wbs_we_i( wbs_we_i ),
182
    .wbs_stb_i( wbs_stb_i ),
183
    .wbs_cyc_i( wbs_cyc_i ),
184
    .wbs_sel_i( wbs_sel_i ),
185 89 rehayes
 
186 2 rehayes
    // outputs
187
    .sync_reset( sync_reset ),
188
    .write_xgmctl( write_xgmctl ),
189 17 rehayes
    .write_xgchid( write_xgchid ),
190 2 rehayes
    .write_xgvbr( write_xgvbr ),
191
    .write_xgif_7( write_xgif_7 ),
192
    .write_xgif_6( write_xgif_6 ),
193
    .write_xgif_5( write_xgif_5 ),
194
    .write_xgif_4( write_xgif_4 ),
195
    .write_xgif_3( write_xgif_3 ),
196
    .write_xgif_2( write_xgif_2 ),
197
    .write_xgif_1( write_xgif_1 ),
198
    .write_xgif_0( write_xgif_0 ),
199
    .write_xgswt( write_xgswt ),
200
    .write_xgsem( write_xgsem ),
201
    .write_xgccr( write_xgccr ),
202
    .write_xgpc( write_xgpc ),
203
    .write_xgr7( write_xgr7 ),
204
    .write_xgr6( write_xgr6 ),
205
    .write_xgr5( write_xgr5 ),
206
    .write_xgr4( write_xgr4 ),
207
    .write_xgr3( write_xgr3 ),
208
    .write_xgr2( write_xgr2 ),
209
    .write_xgr1( write_xgr1 ),
210 67 rehayes
    .write_irw_en_7( write_irw_en_7 ),
211
    .write_irw_en_6( write_irw_en_6 ),
212
    .write_irw_en_5( write_irw_en_5 ),
213
    .write_irw_en_4( write_irw_en_4 ),
214
    .write_irw_en_3( write_irw_en_3 ),
215
    .write_irw_en_2( write_irw_en_2 ),
216
    .write_irw_en_1( write_irw_en_1 ),
217
    .write_irw_en_0( write_irw_en_0 ),
218 89 rehayes
    // inputs
219 67 rehayes
    .async_rst_b( async_rst_b ),
220
    .read_risc_regs(               // in  -- read register bits
221 89 rehayes
       { xgr7,             // XGR7
222
         xgr6,             // XGR6
223
         xgr5,             // XGR5
224
         xgr4,             // XGR4
225
         xgr3,             // XGR3
226
         xgr2,             // XGR2
227
         xgr1,             // XGR1
228
         16'b0,            // Reserved (XGR0)
229
         xgate_address,    // XGPC
230
         {12'h000,  negative_flag, zero_flag, overflow_flag, carry_flag},  // XGCCR
231
         16'b0,                // Reserved
232
         {8'h00, host_semap},  // XGSEM
233
         {8'h00, xgswt},       // XGSWT
234
         {xgif_status[ 15:  1], 1'b0}, // XGIF_0
235
         xgif_status[ 31: 16], // XGIF_1
236
         xgif_status[ 47: 32], // XGIF_2
237
         xgif_status[ 63: 48], // XGIF_3
238
         xgif_status[ 79: 64], // XGIF_4
239
         xgif_status[ 95: 80], // XGIF_5
240
         xgif_status[111: 96], // XGIF_6
241
         xgif_status[127:112], // XGIF_7
242
         {xgvbr[15:1], 1'b0},  // XGVBR
243
         16'b0,                // Reserved
244
         16'b0,                // Reserved
245
         {8'b0, 1'b0, xgchid}, // XGCHID
246
         {8'b0, xge, xgfrz, debug_active, 1'b0, xgfact, brk_irq_ena, xg_sw_irq, xgie}  // XGMCTL
247
       }
248
      ),
249 67 rehayes
    .irq_bypass( irq_bypass )
250
 
251 2 rehayes
  );
252
 
253
  // ---------------------------------------------------------------------------
254
  xgate_regs #(.ARST_LVL(ARST_LVL),
255
               .MAX_CHANNEL(MAX_CHANNEL))
256
    regs(
257
    // outputs
258
    .xge( xge ),
259
    .xgfrz( xgfrz ),
260 15 rehayes
    .xgdbg_set( xgdbg_set ),
261
    .xgdbg_clear( xgdbg_clear ),
262 41 rehayes
    .xgfact( xgfact ),
263 2 rehayes
    .xgss( xgss ),
264
    .xgsweif_c( xgsweif_c ),
265
    .xgie( xgie ),
266 12 rehayes
    .brk_irq_ena( brk_irq_ena ),
267 2 rehayes
    .xgvbr( xgvbr ),
268
    .xgswt( xgswt ),
269
    .clear_xgif_7( clear_xgif_7 ),
270
    .clear_xgif_6( clear_xgif_6 ),
271
    .clear_xgif_5( clear_xgif_5 ),
272
    .clear_xgif_4( clear_xgif_4 ),
273
    .clear_xgif_3( clear_xgif_3 ),
274
    .clear_xgif_2( clear_xgif_2 ),
275
    .clear_xgif_1( clear_xgif_1 ),
276
    .clear_xgif_0( clear_xgif_0 ),
277
    .clear_xgif_data( clear_xgif_data ),
278 67 rehayes
    .irq_bypass( irq_bypass ),
279
    .chan_bypass( chan_bypass ),
280 2 rehayes
 
281
    // inputs
282
    .async_rst_b( async_rst_b ),
283
    .sync_reset( sync_reset ),
284
    .bus_clk( wbs_clk_i ),
285
    .write_bus( wbs_dat_i ),
286
    .write_xgmctl( write_xgmctl ),
287
    .write_xgvbr( write_xgvbr ),
288
    .write_xgif_7( write_xgif_7 ),
289
    .write_xgif_6( write_xgif_6 ),
290
    .write_xgif_5( write_xgif_5 ),
291
    .write_xgif_4( write_xgif_4 ),
292
    .write_xgif_3( write_xgif_3 ),
293
    .write_xgif_2( write_xgif_2 ),
294
    .write_xgif_1( write_xgif_1 ),
295
    .write_xgif_0( write_xgif_0 ),
296 67 rehayes
    .write_irw_en_7( write_irw_en_7 ),
297
    .write_irw_en_6( write_irw_en_6 ),
298
    .write_irw_en_5( write_irw_en_5 ),
299
    .write_irw_en_4( write_irw_en_4 ),
300
    .write_irw_en_3( write_irw_en_3 ),
301
    .write_irw_en_2( write_irw_en_2 ),
302
    .write_irw_en_1( write_irw_en_1 ),
303
    .write_irw_en_0( write_irw_en_0 ),
304 53 rehayes
    .write_xgswt( write_xgswt ),
305
    .debug_ack( debug_ack )
306 2 rehayes
  );
307
 
308
  // ---------------------------------------------------------------------------
309
  xgate_risc #(.MAX_CHANNEL(MAX_CHANNEL))
310
    risc(
311
    // outputs
312
    .xgate_address( xgate_address ),
313
    .write_mem_strb_l( write_mem_strb_l ),
314
    .write_mem_strb_h( write_mem_strb_h ),
315
    .write_mem_data( write_mem_data ),
316
    .zero_flag( zero_flag ),
317
    .negative_flag( negative_flag ),
318
    .carry_flag( carry_flag ),
319
    .overflow_flag( overflow_flag ),
320
    .xgchid( xgchid ),
321
    .host_semap( host_semap ),
322
    .xgr1( xgr1 ),
323
    .xgr2( xgr2 ),
324
    .xgr3( xgr3 ),
325
    .xgr4( xgr4 ),
326
    .xgr5( xgr5 ),
327
    .xgr6( xgr6 ),
328
    .xgr7( xgr7 ),
329 30 rehayes
    .xgif_status( xgif_status ),
330 12 rehayes
    .debug_active( debug_active ),
331 53 rehayes
    .debug_ack( debug_ack ),
332 12 rehayes
    .xg_sw_irq( xg_sw_irq ),
333 34 rehayes
    .mem_access( mem_access ),
334 53 rehayes
    .single_step( single_step ),
335 89 rehayes
 
336 2 rehayes
    // inputs
337
    .risc_clk( risc_clk ),
338
    .perif_data( wbs_dat_i ),
339
    .async_rst_b( async_rst_b ),
340
    .read_mem_data( read_mem_data ),
341 5 rehayes
    .mem_req_ack( mem_req_ack ),
342 53 rehayes
    .ss_mem_ack( ss_mem_ack ),
343 2 rehayes
    .xge( xge ),
344 15 rehayes
    .xgdbg_set( xgdbg_set ),
345
    .xgdbg_clear( xgdbg_clear ),
346 30 rehayes
    .debug_mode_i(debug_mode_i),
347 2 rehayes
    .xgss( xgss ),
348
    .xgvbr( xgvbr ),
349 5 rehayes
    .int_req( int_req ),
350 12 rehayes
    .xgie( xgie ),
351
    .brk_irq_ena( brk_irq_ena ),
352 2 rehayes
    .write_xgsem( write_xgsem ),
353 17 rehayes
    .write_xgchid( write_xgchid ),
354 2 rehayes
    .write_xgccr( write_xgccr ),
355
    .write_xgpc( write_xgpc ),
356
    .write_xgr7( write_xgr7 ),
357
    .write_xgr6( write_xgr6 ),
358
    .write_xgr5( write_xgr5 ),
359
    .write_xgr4( write_xgr4 ),
360
    .write_xgr3( write_xgr3 ),
361
    .write_xgr2( write_xgr2 ),
362
    .write_xgr1( write_xgr1 ),
363
    .clear_xgif_7( clear_xgif_7 ),
364
    .clear_xgif_6( clear_xgif_6 ),
365
    .clear_xgif_5( clear_xgif_5 ),
366
    .clear_xgif_4( clear_xgif_4 ),
367
    .clear_xgif_3( clear_xgif_3 ),
368
    .clear_xgif_2( clear_xgif_2 ),
369
    .clear_xgif_1( clear_xgif_1 ),
370
    .clear_xgif_0( clear_xgif_0 ),
371 12 rehayes
    .xgsweif_c( xgsweif_c ),
372 2 rehayes
    .clear_xgif_data( clear_xgif_data )
373
  );
374
 
375 89 rehayes
  xgate_irq_encode #(.MAX_CHANNEL(MAX_CHANNEL))
376 2 rehayes
    irq_encode(
377
    // outputs
378 67 rehayes
    .xgif( xgif ),
379 2 rehayes
    .int_req( int_req ),
380
    // inputs
381 67 rehayes
    .chan_req_i( chan_req_i ),
382
    .chan_bypass( chan_bypass ),
383
    .xgif_status( xgif_status )
384 2 rehayes
  );
385
 
386 5 rehayes
  // ---------------------------------------------------------------------------
387
  // Wishbone Master Bus interface
388
  xgate_wbm_bus #(.ARST_LVL(ARST_LVL))
389
    wishbone_m(
390
  // Wishbone Master Signals
391
    .wbm_dat_o( wbm_dat_o ),
392
    .wbm_we_o( wbm_we_o ),
393
    .wbm_stb_o( wbm_stb_o ),
394
    .wbm_cyc_o( wbm_cyc_o ),
395
    .wbm_sel_o( wbm_sel_o ),
396
    .wbm_adr_o( wbm_adr_o ),
397
    .wbm_dat_i( wbm_dat_i ),
398
    .wbm_ack_i( wbm_ack_i ),
399
 // XGATE Control Signals
400 53 rehayes
    .risc_clk( risc_clk ),
401
    .async_rst_b( async_rst_b ),
402 34 rehayes
    .xge( xge ),
403
    .mem_access( mem_access ),
404 53 rehayes
    .single_step( single_step ),
405
    .ss_mem_ack( ss_mem_ack ),
406 5 rehayes
    .read_mem_data( read_mem_data ),
407
    .xgate_address( xgate_address ),
408
    .mem_req_ack( mem_req_ack ),
409
    .write_mem_strb_l( write_mem_strb_l ),
410
    .write_mem_strb_h( write_mem_strb_h ),
411
    .write_mem_data( write_mem_data )
412
  );
413 2 rehayes
 
414 5 rehayes
 
415 2 rehayes
endmodule  // xgate_top
416
 

powered by: WebSVN 2.1.0

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