|
208 | 208 |
|
209 | 209 | (defn build* [cpuname options instructions]
|
210 | 210 | (.mkdir (java.io.File. cpuname))
|
211 |
| - (let [[control-unit control-in control-out] (control-unit instructions)] |
| 211 | + (let [[control-unit control-in control-out] (control-unit instructions) |
| 212 | + control-signals (concat (dissoc control-in :clock :reset) control-out) |
| 213 | + dynamic-signals (map (fn [[k v]] (list 'signal k v)) control-signals)] |
212 | 214 | (with-open [main-vhdl (java.io.FileWriter. (str cpuname "/main.vhdl"))
|
213 | 215 | control-vhdl (java.io.FileWriter. (str cpuname "/control.vhdl"))]
|
214 |
| - ;(pprint control-unit) |
| 216 | + (pprint dynamic-signals) |
215 | 217 | (binding [*out* control-vhdl]
|
216 | 218 | (generate-vhdl control-unit))
|
217 | 219 | (binding [*out* main-vhdl]
|
|
221 | 223 | (:reset :in ~std-logic)
|
222 | 224 | (:bus_inspection :out ~(std-logic-vector 7 0))]
|
223 | 225 | ; defs
|
224 |
| - [(signal :system_bus ~(std-logic-vector 7 0)) |
225 |
| - (signal :condition ~std-logic) |
226 |
| - (signal :alu_operation ~(std-logic-vector 2 0)) |
227 |
| - (signal :opcode ~(std-logic-vector 7 5)) |
228 |
| - (signal :wr_pc ~std-logic) |
229 |
| - (signal :rd_pc ~std-logic) |
230 |
| - (signal :inc_pc ~std-logic) |
231 |
| - (signal :wr_IR ~std-logic) |
232 |
| - (signal :rd_IR ~std-logic) |
233 |
| - (signal :wr_MA ~std-logic) |
234 |
| - (signal :wr_MD ~std-logic) |
235 |
| - (signal :rd_MD ~std-logic) |
236 |
| - (signal :wr_A ~std-logic) |
237 |
| - (signal :rd_A ~std-logic) |
238 |
| - (signal :wr_B ~std-logic) |
239 |
| - (signal :rd_B ~std-logic) |
240 |
| - (signal :wr_alu_a ~std-logic) |
241 |
| - (signal :wr_alu_b ~std-logic) |
242 |
| - (signal :rd_alu ~std-logic) |
243 |
| - |
| 226 | + [~@dynamic-signals |
| 227 | + (signal :system_bus ~(std-logic-vector 7 0)) |
| 228 | + |
244 | 229 | (component :reg
|
245 | 230 | (:clock :in ~std-logic)
|
246 | 231 | (:data_in :in ~(std-logic-vector 7 0))
|
|
0 commit comments