summaryrefslogtreecommitdiff
path: root/hdl/top.sv
diff options
context:
space:
mode:
authorJulian Blake Kongslie2022-03-13 16:50:34 -0700
committerJulian Blake Kongslie2022-03-13 16:50:34 -0700
commitfce46a9a7bb2fe2a9b3addca0f488931b9e231ff (patch)
tree31a467115e726b0b0e79b8ae7dbe91c0472a6295 /hdl/top.sv
parentFix DRAM timings to avoid back-to-back transactions. (diff)
downloadmultipdp8-fce46a9a7bb2fe2a9b3addca0f488931b9e231ff.tar.xz
Add memory arbiter and broadcast in between command UART and DRAM.
Diffstat (limited to '')
-rw-r--r--hdl/top.sv80
1 files changed, 63 insertions, 17 deletions
diff --git a/hdl/top.sv b/hdl/top.sv
index 5c8b531..ba6311f 100644
--- a/hdl/top.sv
+++ b/hdl/top.sv
@@ -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 ) print 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)