diff options
| author | Julian Blake Kongslie | 2022-03-13 16:50:34 -0700 |
|---|---|---|
| committer | Julian Blake Kongslie | 2022-03-13 16:50:34 -0700 |
| commit | fce46a9a7bb2fe2a9b3addca0f488931b9e231ff (patch) | |
| tree | 31a467115e726b0b0e79b8ae7dbe91c0472a6295 /hdl/top.sv | |
| parent | Fix DRAM timings to avoid back-to-back transactions. (diff) | |
| download | multipdp8-fce46a9a7bb2fe2a9b3addca0f488931b9e231ff.tar.xz | |
Add memory arbiter and broadcast in between command UART and DRAM.
Diffstat (limited to 'hdl/top.sv')
| -rw-r--r-- | hdl/top.sv | 80 |
1 files changed, 63 insertions, 17 deletions
| @@ -48,9 +48,25 @@ module top | |||
| 48 | bit command_valid; | 48 | bit command_valid; |
| 49 | ram_command_t command_data; | 49 | ram_command_t command_data; |
| 50 | 50 | ||
| 51 | bit result_ready; | 51 | bit ram_command_ready; |
| 52 | bit result_valid; | 52 | bit ram_command_valid; |
| 53 | ram_read_response_t result_data; | 53 | ram_command_t ram_command_data; |
| 54 | |||
| 55 | bit ram_response_ready; | ||
| 56 | bit ram_response_valid; | ||
| 57 | ram_read_response_t ram_response_data; | ||
| 58 | |||
| 59 | bit print_ready; | ||
| 60 | bit print_valid; | ||
| 61 | ram_read_response_t print_data; | ||
| 62 | |||
| 63 | bit [`NUM_PDPS-1:0] pdp_command_ready; | ||
| 64 | bit [`NUM_PDPS-1:0] pdp_command_valid; | ||
| 65 | pdp_command_t [`NUM_PDPS-1:0] pdp_command_data; | ||
| 66 | |||
| 67 | bit [`NUM_PDPS-1:0] pdp_response_ready; | ||
| 68 | bit [`NUM_PDPS-1:0] pdp_response_valid; | ||
| 69 | pdp_read_response_t [`NUM_PDPS-1:0] pdp_response_data; | ||
| 54 | 70 | ||
| 55 | bit ram_rwds_oe; | 71 | bit ram_rwds_oe; |
| 56 | bit ram_rwds_out; | 72 | bit ram_rwds_out; |
| @@ -78,7 +94,7 @@ module top | |||
| 78 | , .t_ena(ram_rx_valid) | 94 | , .t_ena(ram_rx_valid) |
| 79 | ); | 95 | ); |
| 80 | 96 | ||
| 81 | echo_arbiter arb | 97 | echo_arbiter uart0arb |
| 82 | ( .clock(internal_clock) | 98 | ( .clock(internal_clock) |
| 83 | , .reset(internal_reset) | 99 | , .reset(internal_reset) |
| 84 | 100 | ||
| @@ -95,9 +111,7 @@ module top | |||
| 95 | , .out_data(ram_tx_data) | 111 | , .out_data(ram_tx_data) |
| 96 | ); | 112 | ); |
| 97 | 113 | ||
| 98 | command_parser | 114 | command_parser parser |
| 99 | #( .TAG(0) | ||
| 100 | ) parser | ||
| 101 | ( .clock(internal_clock) | 115 | ( .clock(internal_clock) |
| 102 | , .reset(internal_reset) | 116 | , .reset(internal_reset) |
| 103 | 117 | ||
| @@ -114,7 +128,7 @@ module top | |||
| 114 | , .command_data(command_data) | 128 | , .command_data(command_data) |
| 115 | ); | 129 | ); |
| 116 | 130 | ||
| 117 | ram_controller ram | 131 | mem_arbiter memarb |
| 118 | ( .clock(internal_clock) | 132 | ( .clock(internal_clock) |
| 119 | , .reset(internal_reset) | 133 | , .reset(internal_reset) |
| 120 | 134 | ||
| @@ -122,9 +136,26 @@ module top | |||
| 122 | , .command_valid(command_valid) | 136 | , .command_valid(command_valid) |
| 123 | , .command_data(command_data) | 137 | , .command_data(command_data) |
| 124 | 138 | ||
| 125 | , .result_ready(result_ready) | 139 | , .pdp_ready(pdp_command_ready) |
| 126 | , .result_valid(result_valid) | 140 | , .pdp_valid(pdp_command_valid) |
| 127 | , .result_data(result_data) | 141 | , .pdp_data(pdp_command_data) |
| 142 | |||
| 143 | , .ram_ready(ram_command_ready) | ||
| 144 | , .ram_valid(ram_command_valid) | ||
| 145 | , .ram_data(ram_command_data) | ||
| 146 | ); | ||
| 147 | |||
| 148 | ram_controller ram | ||
| 149 | ( .clock(internal_clock) | ||
| 150 | , .reset(internal_reset) | ||
| 151 | |||
| 152 | , .command_ready(ram_command_ready) | ||
| 153 | , .command_valid(ram_command_valid) | ||
| 154 | , .command_data(ram_command_data) | ||
| 155 | |||
| 156 | , .result_ready(ram_response_ready) | ||
| 157 | , .result_valid(ram_response_valid) | ||
| 158 | , .result_data(ram_response_data) | ||
| 128 | 159 | ||
| 129 | , .ram_resetn(ram_resetn) | 160 | , .ram_resetn(ram_resetn) |
| 130 | , .ram_csn(ram_csn) | 161 | , .ram_csn(ram_csn) |
| @@ -138,15 +169,30 @@ module top | |||
| 138 | , .ram_data_out(ram_data_out) | 169 | , .ram_data_out(ram_data_out) |
| 139 | ); | 170 | ); |
| 140 | 171 | ||
| 141 | result_printer | 172 | mem_broadcast memcast |
| 142 | #( .TAG(0) | 173 | ( .clock(internal_clock) |
| 143 | 174 | , .reset(internal_reset) | |
| 175 | |||
| 176 | , .ram_ready(ram_response_ready) | ||
| 177 | , .ram_valid(ram_response_valid) | ||
| 178 | , .ram_data(ram_response_data) | ||
| 179 | |||
| 180 | , .print_ready(print_ready) | ||
| 181 | , .print_valid(print_valid) | ||
| 182 | , .print_data(print_data) | ||
| 183 | |||
| 184 | , .pdp_ready(pdp_response_ready) | ||
| 185 | , .pdp_valid(pdp_response_valid) | ||
| 186 | , .pdp_data(pdp_response_data) | ||
| 187 | ); | ||
| 188 | |||
| 189 | result_printer print | ||
| 144 | ( .clock(internal_clock) | 190 | ( .clock(internal_clock) |
| 145 | , .reset(internal_reset) | 191 | , .reset(internal_reset) |
| 146 | 192 | ||
| 147 | , .result_ready(result_ready) | 193 | , .result_ready(print_ready) |
| 148 | , .result_valid(result_valid) | 194 | , .result_valid(print_valid) |
| 149 | , .result_data(result_data) | 195 | , .result_data(print_data) |
| 150 | 196 | ||
| 151 | , .echo_ready(ram_echo_in1_ready) | 197 | , .echo_ready(ram_echo_in1_ready) |
| 152 | , .echo_valid(ram_echo_in1_valid) | 198 | , .echo_valid(ram_echo_in1_valid) |
