Entity: e16_arbiter_priority
- File: elink_e16_model.v
Diagram
Generics
| Generic name | Type | Value | Description |
|---|---|---|---|
| ARW | 99 |
Ports
| Port name | Direction | Type | Description |
|---|---|---|---|
| clk | input | ||
| clk_en | input | ||
| reset | input | ||
| hold | input | ||
| request | input | [ARW-1:0] | |
| grant | output | [ARW-1:0] | |
| arb_wait | output | [ARW-1:0] | |
| requests | input | [ARW-1:0] | enable mask rotation, makes arbiter more flexiblein mesh there should be a way to control freq of rotation |
| grants | output | [ARW-1:0] |
Signals
| Name | Type | Description |
|---|---|---|
| grant_mask | wire [ARW-1:0] | wires |
| request_mask | wire [ARW-1:0] | |
| grant_hold | reg [ARW-1:0] | regs |
| m | integer | loop variable |
| request_mask | reg [ARW-1:0] | rotating mask |
| grants_rotate_buffer | reg [2*ARW-1:0] | Wires |
| grants | reg [ARW-1:0] | output grants |
| shifted_requests | wire [ARW-1:0] | |
| shifted_grants | wire [ARW-1:0] | |
| requests_rotate_buffer | wire [2*ARW-1:0] |
Processes
- unnamed: ( @ (posedge clk or posedge reset) )
Type: always
Description
hold circuit
- unnamed: ( @ ( posedge clk or posedge reset) )
Type: always
Description
***/ Rotating Mask Pointer On Every Clock Cycle */ ***/ request vector[7:0]-->regular hold vector[7:0] -->sets the priority to the request when it wins there can be multiple bits set the only one active is the one where the mask is currently located. en_rotate=~(hold_vec[7:0] & requeste_mask[7:0]) every request should also be able to send a "start/stop" signal instead of having an en_rotate signal, we have if then en-rotate signal is low
- unnamed: ( @* )
Type: always
Description
***/ One Hot Mux */ ***/ Note that grants have to be rotate back to their right positiona again.