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

Subversion Repositories mips_enhanced

[/] [mips_enhanced/] [trunk/] [grlib-gpl-1.0.19-b3188/] [lib/] [grlib/] [amba/] [dma2ahb.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dimamali
------------------------------------------------------------------------------
2
--  This file is a part of the GRLIB VHDL IP LIBRARY
3
--  Copyright (C) 2003, Gaisler Research
4
--
5
--  This program is free software; you can redistribute it and/or modify
6
--  it under the terms of the GNU General Public License as published by
7
--  the Free Software Foundation; either version 2 of the License, or
8
--  (at your option) any later version.
9
--
10
--  This program is distributed in the hope that it will be useful,
11
--  but WITHOUT ANY WARRANTY; without even the implied warranty of
12
--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
--  GNU General Public License for more details.
14
--
15
--  You should have received a copy of the GNU General Public License
16
--  along with this program; if not, write to the Free Software
17
--  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
18
--============================================================================--
19
-- Design unit  : DMA2AHB (Entity & architecture declarations)
20
--
21
-- File name    : dma2ahb.vhd
22
--
23
-- Purpose      : AMBA AHB master interface with DMA input
24
--
25
-- Reference    : AMBA(TM) Specification (Rev 2.0), ARM IHI 0011A,
26
--                13th May 1999, issue A, first release, ARM Limited
27
--                The document can be retrieved from http://www.arm.com
28
--                AMBA is a trademark of ARM Limited.
29
--                ARM is a registered trademark of ARM Limited.
30
--
31
-- Note         : Naming convention according to AMBA(TM) Specification:
32
--                Signal names are in upper case, except for the following:
33
--                   A lower case 'n' in the name indicates that the signal
34
--                   is active low.
35
--                   Constant names are in upper case.
36
--                The least significant bit of an array is located to the right,
37
--                carrying the index number zero.
38
--
39
-- Limitations  : The AMBA AHB interface has been reduced in function to support
40
--                only what is required. The following features are constrained:
41
--                Optionally generates HSIZE=BYTE, HWORD and WORD
42
--                Only generates HPROT="0000"
43
--                Allways generates HBURST=HBURST_SINGLE, HBURST_INCR
44
--                Optionally generates HBURST_INCR4, HBURST_INCR8, HBURST_INCR16
45
--
46
--                Generates the following on reponses on DMA interface:
47
--                   HRESP=HRESP_OKAY  => DMAOut.Ready
48
--                   HRESP=HRESP_ERROR => DMAOut.Fault
49
--                   HRESP=HRESP_RETRY => DMAOut.Retry (normally not used)
50
--                   HRESP=HRESP_SPLIT => DMAOut.Retry (normally not used)
51
--
52
--                Assumes pipelined data input (after OKAY asserted).
53
--
54
--                Only big-endianness is supported.
55
--
56
--                Supports Early Bus Termination with automatic restart.
57
--                Supports Retry/Split with automatic restart.
58
--
59
-- Library      : gaisler
60
--
61
-- Authors      : Mr Sandi Habinc
62
--                Gaisler Research AB
63
--                Forsta Langgatan 19
64
--                SE-413 27 Göteborg
65
--                Sweden
66
--
67
-- Contact      : mailto:sandi@gaisler.com
68
--                http://www.gaisler.com
69
--
70
-- Disclaimer   : All information is provided "as is", there is no warranty that
71
--                the information is correct or suitable for any purpose,
72
--                neither implicit nor explicit.
73
--
74
--------------------------------------------------------------------------------
75
-- Version  Author   Date           Changes
76
--
77
-- 0.1      SH        1 Jul 2003    New version
78
-- 0.2      SH       21 Jul 2003    Combinatorial response introduced
79
-- 0.3      SH       25 Jan 2004    Support for interrupted bursts introduced
80
--                                  (early burst termination)
81
--                                  Optimised coding
82
--                                  Idle transfer initiated in 1st error phase
83
-- 1.3      SH        1 Oct 2004    Ported to GRLIB
84
-- 1.4      SH        1 Jul 2005    Support for fixed length incrementing bursts
85
--                                  Support for record types
86
-- 1.5      SH        1 Sep 2005    New library gaisler
87
-- 1.6      SH       20 Sep 2005    Added transparent HSIZE support
88
-- 1.6      SH        1 Nov 2005    DMAOut.Grant asserted only while HREADY high
89
-- 1.8      SH       10 Nov 2005    Re-ported to GRLIB
90
-- 1.8.1    SH       12 Dec 2005    Ensured no HTRANS=seq occurs after idle
91
-- 1.9      SH        1 Jan 2006    Resolve retry/early burst termination
92
-- 1.9.2    SH        3 Jan 2006    DelDataPhase dealyed with HREADY signal
93
-- 1.9.3    SH       24 Feb 2006    Added syncrst generic
94
-- 1.9.4    MI       27 Mar 2007    Driving HSIZE with address
95
-- 1.9.5    SH       14 Dec 2007    Automatic 1kbyte boundary crossing (merged)
96
-- 1.9.6    JA       14 Dec 2007    Support for halfword and byte bursts
97
-- 1.9.7    MI        4 Aug 2008    Support for Lock
98
--------------------------------------------------------------------------------
99
library  IEEE;
100
use      IEEE.Std_Logic_1164.all;
101
 
102
library  GRLIB;
103
use      GRLIB.AMBA.all;
104
use      GRLIB.STDLIB.all;
105
use      GRLIB.DMA2AHB_Package.all;
106
 
107
entity DMA2AHB is
108
   generic(
109
      hindex:        in    Integer := 0;
110
      vendorid:      in    Integer := 0;
111
      deviceid:      in    Integer := 0;
112
      version:       in    Integer := 0;
113
      syncrst:       in    Integer := 1;
114
      boundary:      in    Integer := 1);
115
   port(
116
      -- AMBA AHB system signals
117
      HCLK:          in    Std_ULogic;                   -- system clock
118
      HRESETn:       in    Std_ULogic;                   -- asynchronous reset
119
 
120
      -- Direct Memory Access Interface
121
      DMAIn:         in    DMA_In_Type;
122
      DMAOut:        out   DMA_OUt_Type;
123
 
124
      -- AMBA AHB Master Interface
125
      AHBIn:         in    AHB_Mst_In_Type;
126
      AHBOut:        out   AHB_Mst_Out_Type);
127
end entity DMA2AHB;
128
 
129
--============================== Architecture ================================--
130
 
131
architecture RTL of DMA2AHB is
132
   --=========================================================================--
133
   -- Configuration GRLIB
134
   -----------------------------------------------------------------------------
135
   constant HConfig:          AHB_Config_Type := (
136
 
137
      others   => (others => '0'));
138
   --=========================================================================--
139
 
140
   -----------------------------------------------------------------------------
141
   -- Local signals
142
   -----------------------------------------------------------------------------
143
   signal   Address:             Std_Logic_Vector(31 downto 0);
144
   signal   AddressSave:         Std_Logic_Vector(31 downto 0);
145
 
146
   signal   ActivePhase:         Std_ULogic;             -- ongoing access
147
 
148
   signal   AddressPhase:        Std_ULogic;             -- address phase
149
   signal   DataPhase:           Std_ULogic;             -- data phase
150
 
151
   signal   ReDataPhase:         Std_ULogic;             -- restart first
152
   signal   ReAddrPhase:         Std_ULogic;             -- restart second
153
 
154
   signal   IdlePhase:           Std_ULogic;             -- idle phase
155
   signal   EarlyPhase:          Std_ULogic;             -- early termination
156
 
157
   signal   BoundaryPhase:       Std_ULogic;             -- boundary crossing
158
 
159
   signal   SingleAcc:           Std_ULogic;             -- single access
160
   signal   WriteAcc:            Std_ULogic;             -- write access
161
 
162
   signal   DelDataPhase:        Std_ULogic;             -- restart first
163
   signal   DelAddrPhase:        Std_ULogic;             -- restart second
164
 
165
   signal   AHBInHGRANTx:        Std_ULogic;             -- decoded grant
166
 
167
begin
168
   --=========================================================================--
169
   -- AMBA AHB master interface
170
   -----------------------------------------------------------------------------
171
   AHBOut.HIRQ                   <= (others => '0');
172
   AHBOut.HCONFIG                <= HConfig;
173
   AHBOut.HINDEX                 <= hindex;
174
 
175
   AHBInHGRANTx                  <= AHBIn.HGRANT(hindex);
176
   --=========================================================================--
177
 
178
   -----------------------------------------------------------------------------
179
   -- AMBA AHB Master interface with fast issuing of accesses
180
   -----------------------------------------------------------------------------
181
   -----------------------------------------------------------------------------
182
   -- Fixed AMBA AHB signals
183
   -----------------------------------------------------------------------------
184
   AHBOut.HPROT               <= (others => '0');
185
 
186
   -----------------------------------------------------------------------------
187
   -- Combinatorial paths
188
   -----------------------------------------------------------------------------
189
   AHBOut.HADDR               <= Address;                -- internal to external
190
 
191
   AHBOut.HWDATA              <= DMAIn.Data;             -- combinatorial path
192
 
193
   DMAOut.OKAY                <= '1' when AHBIn.HREADY='1' and
194
                                          DataPhase ='1' and
195
                                          AHBIN.HRESP=HRESP_OKAY else
196
                                 '0';
197
 
198
   DMAOut.Retry               <= '1' when AHBIn.HREADY='0' and
199
                                          DataPhase ='1' and
200
                                          (AHBIN.HRESP=HRESP_RETRY or
201
                                           AHBIN.HRESP=HRESP_SPLIT) else
202
                                 '0';
203
 
204
   DMAOut.Fault               <= '1' when AHBIn.HREADY='0' and
205
                                          DataPhase ='1' and
206
                                          AHBIN.HRESP=HRESP_ERROR else
207
                                 '0';
208
 
209
   DMAOut.Grant               <= '0' when DelDataPhase='1' or ReDataPhase='1' else
210
                                 '1' when AHBIn.HREADY='1' and
211
                                          AHBInHGRANTx='1' and
212
                                          DMAIn.Request='1' else
213
                                 '0';
214
 
215
   AHBOut.HBUSREQ             <= '0' when IdlePhase='1' else
216
                                 '1' when DMAIn.Request='1' else
217
                                 '1' when DMAIn.Burst='1' else
218
                                 '1' when ReDataPhase='1' else
219
                                 '1' when ReAddrPhase='1' else
220
                                 '0';
221
 
222
   AHBOut.HLOCK               <= '0' when IdlePhase='1' else
223
                                 '1' when (DMAIn.Lock and
224
                                          (DMAIn.Request or ReDataPhase)) = '1'else
225
                                 '0';
226
 
227
   -----------------------------------------------------------------------------
228
   -- The AMBA AHB interfacing is done in this process
229
   -----------------------------------------------------------------------------
230
   AHBMaster: process(HCLK, HRESETn)
231
      variable BoundaryCrossing:    Std_ULogic;
232
      variable AddressInc:          Std_Logic_Vector(3 downto 0);
233
      --------------------------------------------------------------------------
234
      -- This procedure is used to define all reset values for the
235
      -- asynchronous or synchronous reset statements in this process. This
236
      -- is done to avoid source code duplication.
237
      --------------------------------------------------------------------------
238
      procedure Reset is
239
      begin
240
         ActivePhase          <= '0';
241
         EarlyPhase           <= '0';
242
 
243
         AddressPhase         <= '0';
244
         DataPhase            <= '0';
245
         ReDataPhase          <= '0';
246
         ReAddrPhase          <= '0';
247
 
248
         DelDataPhase         <= '0';
249
         DelAddrPhase         <= '0';
250
 
251
         BoundaryPhase        <= '0';
252
 
253
         IdlePhase            <= '0';
254
         EarlyPhase           <= '0';
255
 
256
         SingleAcc            <= '0';
257
         WriteAcc             <= '0';
258
 
259
         Address              <= (others => '0');
260
         AddressSave          <= (others => '0');
261
 
262
         DMAOut.Ready         <= '0';
263
         DMAOut.Data          <= (others => '0');
264
 
265
         AHBOut.HSIZE         <= HSIZE_BYTE;
266
         AHBOut.HBURST        <= HBURST_SINGLE;
267
         AHBOut.HTRANS        <= HTRANS_IDLE;
268
         AHBOut.HWRITE        <= '0';
269
 
270
      end Reset; ---------------------------------------------------------------
271
   begin
272
      if HRESETn='0' and syncrst=0 then                  -- asynchronous reset
273
         Reset;
274
      elsif Rising_Edge(HCLK) then
275
         if DMAIn.Reset='1' or                           -- functional reset
276
            (syncrst/=0 and HRESETn='0') then            -- synchronous reset
277
            Reset;
278
         else                                            -- no reset
279
            --------------------------------------------------------------------
280
            -- Temporary variables
281
            --------------------------------------------------------------------
282
            BoundaryCrossing := '0';
283
            AddressInc := (others => '0');
284
 
285
            --------------------------------------------------------------------
286
            -- AMBA AHB interface - data phase handling
287
            --------------------------------------------------------------------
288
            -- indicate when no more activies are pending
289
            if AddressPhase='0' and DataPhase='0' and
290
               ReDataPhase='0'  and ReAddrPhase='0' and
291
               DMAIn.Burst='0' then
292
               ActivePhase          <= '0';
293
            end if;
294
 
295
            if AHBIn.HREADY='0' and DataPhase='1' then
296
               -- error check
297
               if AHBIN.HRESP=HRESP_ERROR then
298
                  DataPhase         <= '0';              -- data phase aborted
299
               end if;
300
               -- split or retry check
301
               if AHBIN.HRESP=HRESP_SPLIT or
302
                  AHBIN.HRESP=HRESP_RETRY then
303
                  ReDataPhase       <= DataPhase;        -- restart phases
304
                  ReAddrPhase       <= AddressPhase or ReAddrPhase;
305
                  AddressPhase      <= '0';              -- addr phase aborted
306
                  DataPhase         <= '0';              -- data phase aborted
307
                  -- go back with address
308
                  if boundary=1 then
309
                     Address           <= AddressSave;
310
                  else
311
                     Address(9 downto 0) <= AddressSave(9 downto 0);
312
                  end if;
313
                  if DMAIn.Size=HSIZE8 then
314
                    AHBOut.HSIZE    <= HSIZE_BYTE;
315
                  elsif DMAIn.Size=HSIZE16 then
316
                    AHBOut.HSIZE    <= HSIZE_HWORD;
317
                  else
318
                    AHBOut.HSIZE    <= HSIZE_WORD;
319
                  end if;
320
               end if;
321
            end if;
322
 
323
            if    AHBIn.HREADY='1' and DataPhase='1' then
324
               -- sample AHB input data at end of data phase
325
               DMAOut.Data          <= AHBIn.HRDATA;
326
               DataPhase            <= '0';              -- data phase ends
327
               DMAOut.Ready         <= '1';
328
            else
329
               -- remove acknowledgement after one cycle
330
               DMAOut.Ready         <= '0';
331
            end if;
332
 
333
            --------------------------------------------------------------------
334
            -- AMBA AHB interface - address phase handling
335
            --------------------------------------------------------------------
336
            -- initialize data phase on AHB after previous address phase
337
            if AddressPhase='1' and AHBIn.HREADY='1' then
338
               DataPhase            <= '1';              -- data phase start
339
            end if;
340
 
341
            -- address generation on AHB
342
            if AHBIn.HREADY='1' then
343
               if AddressPhase='1' then
344
                  -- burst continuation, sequential transfer
345
                  AddressInc(conv_integer(DMAIn.Size)) := '1';
346
                  if boundary=1 then                     -- automatic boundary
347
                     Address                 <= Address + AddressInc;
348
                     AddressSave             <= Address;
349
                     if Address(9 downto 2)="11111111" then
350
                        BoundaryCrossing     := '1';
351
                        BoundaryPhase        <= '1';
352
                     end if;
353
                  else
354
                     Address(31 downto 10)   <= DMAIn.Address(31 downto 10);
355
                     Address( 9 downto  0)   <= Address(9 downto 0) + AddressInc;
356
                     AddressSave(9 downto 0) <= Address(9 downto 0);
357
                  end if;
358
                  if DMAIn.Size=HSIZE8 then
359
                    AHBOut.HSIZE          <= HSIZE_BYTE;
360
                  elsif DMAIn.Size=HSIZE16 then
361
                    AHBOut.HSIZE          <= HSIZE_HWORD;
362
                  else
363
                    AHBOut.HSIZE          <= HSIZE_WORD;
364
                  end if;
365
               elsif AHBInHGRANTx='1' and ActivePhase='0' and DMAIn.Request='1' then
366
                  -- start of burst,  non-sequential transfer
367
                  -- start of single, non-sequential transfer
368
                  if boundary=1 then                     -- automatic boundary
369
                     Address                 <= DMAIn.Address;
370
                     AddressSave             <= DMAIn.Address;
371
                     BoundaryCrossing        := '0';
372
                     BoundaryPhase           <= '0';
373
                  else
374
                     Address                 <= DMAIn.Address;
375
                     AddressSave(9 downto 0) <= DMAIn.Address(9 downto 0);
376
                  end if;
377
 
378
                  if DMAIn.Size=HSIZE8 then
379
                    AHBOut.HSIZE          <= HSIZE_BYTE;
380
                  elsif DMAIn.Size=HSIZE16 then
381
                    AHBOut.HSIZE          <= HSIZE_HWORD;
382
                  else
383
                    AHBOut.HSIZE          <= HSIZE_WORD;
384
                  end if;
385
               end if;
386
            end if;
387
 
388
            -- address generation on AHB
389
            if AHBIn.HREADY='1' then
390
               IdlePhase            <= '0';              -- one clock cycle only
391
            end if;
392
 
393
            -- initialize address phase on AHB
394
            if AHBIn.HREADY='1' then
395
               -- granted the AHB bus
396
               if    AHBInHGRANTx='1' then
397
                  if    ReDataPhase='1' then
398
                     ReDataPhase       <= '0';
399
                     AddressPhase      <= '1';           -- address phase start
400
                     EarlyPhase        <= '0';
401
                     AHBOut.HTRANS     <= HTRANS_NONSEQ;
402
                     if SingleAcc='1' then
403
                        AHBOut.HBURST  <= HBURST_SINGLE;
404
                     else
405
                        AHBOut.HBURST  <= HBURST_INCR;
406
                     end if;
407
                     AHBOut.HWRITE     <= WriteAcc;
408
 
409
                  elsif ReAddrPhase='1' then
410
                     AddressPhase      <= '1';           -- address phase start
411
                     ReAddrPhase       <= '0';
412
                     if AddressPhase='1' then
413
                        if boundary=1 and (BoundaryCrossing='1' or BoundaryPhase='1') then
414
                           -- new bursts, non-sequential transfer
415
                           AHBOut.HTRANS <= HTRANS_NONSEQ;
416
                           BoundaryPhase <= '0';
417
                        else
418
                           -- burst continuation, sequential transfer
419
                           AHBOut.HTRANS <= HTRANS_SEQ;
420
                        end if;
421
                     else
422
                        AHBOut.HTRANS  <= HTRANS_NONSEQ;
423
                     end if;
424
                     EarlyPhase        <= '0';
425
                     if SingleAcc='1' then
426
                        AHBOut.HBURST  <= HBURST_SINGLE;
427
                     else
428
                        AHBOut.HBURST  <= HBURST_INCR;
429
                     end if;
430
                     AHBOut.HWRITE     <= WriteAcc;
431
 
432
                  elsif EarlyPhase='1' then
433
                     -- early terminated burst resumed
434
                     AddressPhase      <= '1';           -- address phase start
435
                     EarlyPhase        <= '0';
436
                     AHBOut.HTRANS     <= HTRANS_NONSEQ;
437
                     AHBOut.HBURST     <= HBURST_INCR;
438
                     AHBOut.HWRITE     <= WriteAcc;
439
 
440
                  elsif DMAIn.Request='1' and DMAIn.Burst='1' then
441
                     AddressPhase      <= '1';           -- address phase start
442
                     if ActivePhase='1' then
443
                        -- burst continuation, sequential transfer
444
                        if boundary=1 and (BoundaryCrossing='1' or BoundaryPhase='1') then
445
                           -- new bursts, non-sequential transfer
446
                           AHBOut.HTRANS <= HTRANS_NONSEQ;
447
                           BoundaryPhase <= '0';
448
                        else
449
                           -- burst continuation, sequential transfer
450
                           AHBOut.HTRANS <= HTRANS_SEQ;
451
                        end if;
452
                     else
453
                        -- start of burst, non-sequential transfer
454
                        AHBOut.HTRANS  <= HTRANS_NONSEQ;
455
                        if    DMAIn.Beat ="00" then
456
                           AHBOut.HBURST  <= HBURST_INCR;
457
                        elsif DMAIn.Beat ="01" then
458
                           AHBOut.HBURST  <= HBURST_INCR4;
459
                        elsif DMAIn.Beat ="10" then
460
                           AHBOut.HBURST  <= HBURST_INCR8;
461
                        else
462
                           AHBOut.HBURST  <= HBURST_INCR16;
463
                        end if;
464
                        AHBOut.HWRITE  <= DMAIn.Store;
465
                        ActivePhase    <= '1';
466
                        SingleAcc      <= '0';
467
                        WriteAcc       <= DMAIn.Store;
468
                     end if;
469
 
470
                  elsif DMAIn.Request='0' and DMAIn.Burst='1' and ActivePhase='1' then
471
                     -- burst in wait state
472
                     AddressPhase      <= '0';           -- no address phase
473
                     AHBOut.HTRANS     <= HTRANS_BUSY;
474
 
475
                  elsif DMAIn.Request='1' and DMAIn.Burst='0' then
476
                     -- start of single, non-sequential transfer
477
                     AddressPhase      <= '1';           -- address phase start
478
                     ActivePhase       <= '1';
479
                     SingleAcc         <= '1';
480
                     WriteAcc          <= DMAIn.Store;
481
                     AHBOut.HTRANS     <= HTRANS_NONSEQ;
482
                     AHBOut.HBURST     <= HBURST_SINGLE;
483
                     AHBOut.HWRITE     <= DMAIn.Store;
484
                  else
485
                     -- drive idle transfer as default master
486
                     -- the next cycle will start the address phase
487
                     AddressPhase      <= '0';              -- no useful address
488
                     AHBOut.HTRANS     <= HTRANS_IDLE;
489
                     AHBOut.HBURST     <= HBURST_SINGLE;
490
                     AHBOut.HWRITE     <= '0';
491
                  end if;
492
 
493
               -- not granted the AHB bus, but early burst termination
494
               elsif (DMAIn.Request='1' or DMAIn.Burst='1') and ActivePhase='1'then
495
                  -- must restart a burst transfer since grant removed
496
                  AddressPhase      <= '0';              -- no address phase
497
                  EarlyPhase        <= '1';
498
                  AHBOut.HTRANS     <= HTRANS_IDLE;
499
                  AHBOut.HBURST     <= HBURST_SINGLE;
500
                  AHBOut.HWRITE     <= '0';
501
 
502
               -- not granted the AHB bus
503
               else
504
                  -- drive idle transfer as default master
505
                  -- the next cycle will start the address phase
506
                  AddressPhase      <= '0';              -- no useful address
507
                  AHBOut.HTRANS     <= HTRANS_IDLE;
508
                  AHBOut.HBURST     <= HBURST_SINGLE;
509
                  AHBOut.HWRITE     <= '0';
510
               end if;
511
 
512
            elsif AHBIn.HREADY='0' and DataPhase='1' then
513
               if AHBIN.HRESP=HRESP_ERROR or
514
                  AHBIN.HRESP=HRESP_SPLIT or
515
                  AHBIN.HRESP=HRESP_RETRY then
516
                  -- drive idle transfer due to error, retry or split
517
                  -- the next cycle will start the address phase
518
                  AddressPhase      <= '0';              -- no useful address
519
                  IdlePhase         <= '1';
520
                  AHBOut.HTRANS     <= HTRANS_IDLE;
521
                  AHBOut.HBURST     <= HBURST_SINGLE;
522
                  AHBOut.HWRITE     <= '0';
523
               end if;
524
            end if;
525
          end if;
526
 
527
         if AHBIn.HREADY='1' then                        -- delay one phase
528
            DelDataPhase         <= ReDataPhase;
529
            DelAddrPhase         <= ReAddrPhase;
530
         end if;
531
 
532
         -- temporary variables cleared
533
         BoundaryCrossing        := '0';
534
         AddressInc              := (others => '0');
535
      else
536
         null;
537
      end if;
538
   end process AHBMaster;
539
end architecture RTL; --======================================================--
540
 

powered by: WebSVN 2.1.0

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