Skip to content

Commit e981312

Browse files
committed
Dynamic control signals
I should've done this long ago...
1 parent a1c88d6 commit e981312

File tree

1 file changed

+7
-22
lines changed

1 file changed

+7
-22
lines changed

src/computer_build.clj

+7-22
Original file line numberDiff line numberDiff line change
@@ -208,10 +208,12 @@
208208

209209
(defn build* [cpuname options instructions]
210210
(.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)]
212214
(with-open [main-vhdl (java.io.FileWriter. (str cpuname "/main.vhdl"))
213215
control-vhdl (java.io.FileWriter. (str cpuname "/control.vhdl"))]
214-
;(pprint control-unit)
216+
(pprint dynamic-signals)
215217
(binding [*out* control-vhdl]
216218
(generate-vhdl control-unit))
217219
(binding [*out* main-vhdl]
@@ -221,26 +223,9 @@
221223
(:reset :in ~std-logic)
222224
(:bus_inspection :out ~(std-logic-vector 7 0))]
223225
; 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+
244229
(component :reg
245230
(:clock :in ~std-logic)
246231
(:data_in :in ~(std-logic-vector 7 0))

0 commit comments

Comments
 (0)