-
Notifications
You must be signed in to change notification settings - Fork 5
pzbcm_arbiter
Taichi Ishitani edited this page Dec 26, 2022
·
4 revisions
https://github.com/pezy-computing/pzbcm/tree/master/pzbcm_arbiter
This module implements arbitration methods listed below.
- round robin
- prioritized round robin and weighted round robin are also supported.
- fixed priority
- least recently used (LRU)
- most recently used (MRU)
- incremental round robin
- decremental round robin
This module is divided into two sub arbiter blocks; one is round robin arbiter
and another one is matrix arbiter
.
The round robin arbiter implements round robin arbitraton method. On the other hand, the matrix arbiter implements other arbitraton methods. See Microarchitecture of Network on Chip Routers: A Designer's Perspective for details of the matrix arbiter and its implemented arbitration methods.
name | type/width | default value |
---|---|---|
REQUESTS | int | 2 |
ONEHOT_GRANT | 1 | 1 |
ENABLE_ARBITER | 2 | all bits 1 |
PRIORITY_WIDTH | int | 0 |
WEIGHT_WIDTH | int | 0 |
WEIGHT | pzbcm_arbiter_weight_list | all bits 1 |
PRIORITY_MATRIX | pzbcm_arbiter_priority_matrix | all bits 1 |
KEEP_RESULT | 1 | 1 |
- REQUESTS
- Number of input requests.
- ONEHOT_GRANT
- is to specify format of the output grant port.
- 1: one-hot
- 0: binary
- is to specify format of the output grant port.
- ENABLE_ARBITER
- This is to specify sub arbiter blocks which are instantiated.
- If
ENABLE_ARBITER[0]
is set to 1 the round robin arbiter is instantiated. - If
ENABLE_ARBITER[1]
is set to 1 the matrix arbiter is instantiated.
- If
- This is to specify sub arbiter blocks which are instantiated.
- PRIORITY_WIDTH
- This is specify width of the priority value used for the prioritized round robin arbitration. If set to 0 the prioritized round robin method is disabled.
- WEIGHT_WIDTH
- This is specify width of the weight value used for the weighted round robin arbitration. If set to 0 the weighted round robin arbitration is disabled.
- WEIGHT
- This is to specify the reset value of each weight values.
- PRIORITY_MATRIX
- This is to specify the reset value of the priority matrix used for the matrix arbiter.
- KEEP_GRANT
- If this value is set to 1 the output grant signal is kept until the input
i_free
signal is asserted.
- If this value is set to 1 the output grant signal is kept until the input
name | direction | type/width | note |
---|---|---|---|
i_clk | input | 1 | clock |
i_rst_n | input | 1 | async/active low reset |
i_config | input | pzbcm_arbiter_config | arbiter configuration |
i_request | input | REQUESTS | request |
o_grant | output | GRANT_WIDTH | grant |
i_free | input | REQUESTS |
- i_config
- The
i_config
input has following fields:- arbiter_type
- Specify which arbiter method is used.
- reset
- Internal state is reset when it's asserted.
- request_priority
- Priority values used for the prioritized round robin method.
- weight_valid/weight
- Weight values used for the weighted round robin method.
- priority_matrix
- This value will be set to the priority matrix of the matrix arbiter when
reset
is asserted.
- This value will be set to the priority matrix of the matrix arbiter when
- arbiter_type
- The