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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [orpsocv2/] [rtl/] [verilog/] [arbiter/] [README] - Blame information for rev 450

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 361 julius
Wishbone arbiter RTL source
2
 
3
The current implementation of these arbiters for the design is a hard-coded
4
slightly configurable set up, rather than a configurable one-size-fits-all
5
approach. It is assumed a Harvard architecture is in use, and therefore there
6
are seperate busses for both instruction and data busses of the processor. The
7
data bus arbiter also has a peripheral, or byte (wide) bus, attached to it.
8
 
9
The busses have ports following the Wishbone B3 standard. They are a cross-bar
10
switch setup, ie only one master can be controlling the bus at a time. A simple
11
priority-based arbitration system is used, however this only really matters for
12
the data bus, which has multiple masters.
13
 
14
The addresses for each slave are configured through parameters. It is expected
15
the instantiation of the arbiter will define these parameters also.
16
 
17
The arbiters have the option of passing the signals through with or without any
18
sequential logic (registering) however they _DO NOT_ yet support registered
19
bursting (ie, where wb_cti indicates anything other than a Wishbone classic
20
cycle.) Do not enable registering, via the defines, and expect bursting to work!
21
 
22
There is an optional watchdog counter which will assert wb_err if a request is
23
not serviced within the counting period of the clock. The width of the timer
24
is defined.
25
 
26
The arbiters depend on the design's top level define file. The options for
27
registering and the watchdog timer should be set there.
28
 
29
arbiter_ibus.v:
30
        This has only one master input and two slaves - a ROM and a main memory.
31
        This is the simplest of the arbiters. It has 32-bit wide data ports.
32
 
33
 
34
arbiter_dbus.v:
35
        This has two masters ports and several slave ports. It has 32-bit wide
36
        data ports. It has a default slave it selects if none of the other
37
        slaves are selected, allowing daisy-chaining of another arbiter onto it
38
        (used for the peripheral byte-bus.)
39
 
40
        Increasing or reducing the slaves here requires:
41
        1. Altering the module() declaration, adding the required ports.
42
        2. Altering the input/output declaration, adding the required ports.
43
        3. Add/remove(comment-out) the appropriate line in the section under the
44
           commend "Slave selects". Ensure to alter the final slave, or
45
           "default" slave's select logic to include/exclude the slave being
46
           added/removed.
47
        4. Alter the inputs from the master going to the slave
48
        5. Alter the inputs from the slave (wb_ack, wb_dat_i, etc.) going to the
49
           master
50
        6. When instantiating, be sure that the address for the new slave is
51
           defined.
52
        7. Be sure to update the appropriate parameters in design-params.v with
53
           the correct total number of slaves, and the address of the new slave.
54
 
55
        For most of this slave configuration change, it should be as easy as
56
        following the example of the structure already in the file, and
57
        potentially just moving the open block-comment marker "/*" past the
58
        lines for the new slave.
59
 
60
arbiter_bytebus.v:
61
        This is a single-master arbiter, connecting to multiple slaves. It has
62
        single byte-wide data ports. The data port back to the master maps read
63
        bytes to the correct position in a 32-bit wide word, consistent with a
64
        big-endian representation of data. There is no default slave. The
65
        procedure for adding new slaves is the same as for the main data-bus
66
        arbiter, except for the default slave selection considerations.
67
 

powered by: WebSVN 2.1.0

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