diff options
| author | Julian Blake Kongslie | 2022-05-29 16:33:24 -0700 |
|---|---|---|
| committer | Julian Blake Kongslie | 2022-05-29 16:33:24 -0700 |
| commit | 28d7b77b927144d69a82d8eaec6dc65c8afc5626 (patch) | |
| tree | 6567262eae420f17260ef93638f6f94c9926d540 /hdl/mem_arbiter.sv | |
| parent | Add makefile target for uploading "raw UART" images (diff) | |
| download | multipdp8-28d7b77b927144d69a82d8eaec6dc65c8afc5626.tar.xz | |
Only run selector logic if we need a new selection next cycle.
Diffstat (limited to 'hdl/mem_arbiter.sv')
| -rw-r--r-- | hdl/mem_arbiter.sv | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/hdl/mem_arbiter.sv b/hdl/mem_arbiter.sv index 1404a54..e39317d 100644 --- a/hdl/mem_arbiter.sv +++ b/hdl/mem_arbiter.sv | |||
| @@ -32,12 +32,15 @@ module mem_arbiter | |||
| 32 | hold_valid[i] = 0; | 32 | hold_valid[i] = 0; |
| 33 | selector = 0; | 33 | selector = 0; |
| 34 | end else begin | 34 | end else begin |
| 35 | automatic bit selector_stale = 0; | ||
| 36 | |||
| 35 | if (ram_ready) ram_valid = 0; | 37 | if (ram_ready) ram_valid = 0; |
| 36 | 38 | ||
| 37 | if (!ram_valid && hold_valid[selector]) begin | 39 | if (!ram_valid && hold_valid[selector]) begin |
| 38 | ram_valid = 1; | 40 | ram_valid = 1; |
| 39 | ram_data = hold_data[selector]; | 41 | ram_data = hold_data[selector]; |
| 40 | hold_valid[selector] = 0; | 42 | hold_valid[selector] = 0; |
| 43 | selector_stale = 1; | ||
| 41 | end | 44 | end |
| 42 | 45 | ||
| 43 | if (hold_valid == 0) begin | 46 | if (hold_valid == 0) begin |
| @@ -59,7 +62,7 @@ module mem_arbiter | |||
| 59 | end | 62 | end |
| 60 | end | 63 | end |
| 61 | 64 | ||
| 62 | if (hold_valid != 0) begin | 65 | if (hold_valid != 0 && (selector_stale || !ram_valid)) begin |
| 63 | for (int i = 0; i < `NUM_PDPS+1; ++i) begin | 66 | for (int i = 0; i < `NUM_PDPS+1; ++i) begin |
| 64 | automatic int j = selector + i; | 67 | automatic int j = selector + i; |
| 65 | if (j > `NUM_PDPS) | 68 | if (j > `NUM_PDPS) |
