diff options
-rw-r--r-- | cpu/alu.ml | 2 | ||||
-rw-r--r-- | cpu/cpu.ml | 4 | ||||
-rw-r--r-- | cpu/netlist_gen.ml | 9 | ||||
-rw-r--r-- | cpu/netlist_gen.mli | 2 | ||||
-rw-r--r-- | plan_micro.pdf | bin | 76663 -> 76886 bytes | |||
-rw-r--r-- | plan_micro.tm | 4 |
6 files changed, 10 insertions, 11 deletions
@@ -51,7 +51,7 @@ let rec nadder_with_carry n a b c_in = let nadder n a b = let a, b = nadder_with_carry n a b (const "0") in - ignore b a + b ^. a let rec nsubber n a b = zeroes n (* TODO *) @@ -17,6 +17,7 @@ let cpu_ram ra we wa d = 0x8000 to 0xFFFF is RAM *) let read_data = zeroes 8 in + (* ROM chip *) let ra_hi1 = ra ** 15 in let ra_lo1 = ra % (0, 14) in let ra_hi2 = ra ** 14 in @@ -25,7 +26,7 @@ let cpu_ram ra we wa d = let rd_rom = rom "ROM0" 14 8 ra_lo2 in let read_data = mux read_rom read_data rd_rom in - + (* RAM chip *) let read_ram = ra_hi1 in let wa_hi1 = wa ** 15 in let wa_lo1 = wa % (0, 14) in @@ -33,6 +34,7 @@ let cpu_ram ra we wa d = let rd_ram = ram 15 8 ra_lo1 we_ram wa_lo1 d in let read_data = mux read_ram read_data rd_ram in + (* MMIO *) let read_tick = eq_c 16 ra 0x4000 in let next_tick, save_next_tick = loop 8 in let tick = nadder 8 (reg 8 next_tick) (get "tick" ++ zeroes 7) in diff --git a/cpu/netlist_gen.ml b/cpu/netlist_gen.ml index 1aad452..016c595 100644 --- a/cpu/netlist_gen.ml +++ b/cpu/netlist_gen.ml @@ -16,9 +16,8 @@ let add p id eq size = assert (not (Env.mem id p.p_vars) || (Env.find id p.p_vars = size)); assert (not (List.mem_assoc id p.p_eqs)); - { p_eqs = (id, eq)::p.p_eqs; - p_inputs = p.p_inputs; - p_outputs = p.p_outputs; + { p with + p_eqs = (id, eq)::p.p_eqs; p_vars = Env.add id size p.p_vars } let get id = @@ -195,9 +194,7 @@ let program entries outputs = p, outputs) (p, []) outputs in - { p_inputs = p.p_inputs; - p_eqs = p.p_eqs; - p_vars = p.p_vars; + { p with p_outputs = List.rev outputs } diff --git a/cpu/netlist_gen.mli b/cpu/netlist_gen.mli index 280ee8c..67d4774 100644 --- a/cpu/netlist_gen.mli +++ b/cpu/netlist_gen.mli @@ -2,8 +2,6 @@ type t val print : out_channel -> Netlist_ast.program -> unit -val id : string -> Netlist_ast.ident - val get : Netlist_ast.ident -> t val loop : int -> (t * (t -> t)) diff --git a/plan_micro.pdf b/plan_micro.pdf Binary files differindex 0804a86..14bf881 100644 --- a/plan_micro.pdf +++ b/plan_micro.pdf diff --git a/plan_micro.tm b/plan_micro.tm index ae8c5b9..acfe710 100644 --- a/plan_micro.tm +++ b/plan_micro.tm @@ -86,7 +86,9 @@ <section|Jeu d'instruction> - Les instructions sont codées sur 16 bits. + Les instructions sont codées sur 16 bits. Les tableaux suivants montrent + les instructions avec les poids forts à gauche et les poids faibles à + droite. <subsection|Types d'instructions> |