From 8c63ae039b15a5de575248ed2399e8ab3c451e16 Mon Sep 17 00:00:00 2001 From: Alex AUVOLAT Date: Thu, 19 Dec 2013 18:31:04 +0100 Subject: Premiers morceaux de CPU - enfin non, rien du tout... --- cpu/alu.ml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 cpu/alu.ml (limited to 'cpu/alu.ml') diff --git a/cpu/alu.ml b/cpu/alu.ml new file mode 100644 index 0000000..0a0c00f --- /dev/null +++ b/cpu/alu.ml @@ -0,0 +1,16 @@ +open Netlist_gen + +let fulladder a b c = + let s = a ^^ b ^^ c in + let r = (a ^& b) ^| ((a ^^ b) ^& c) in + s, r + +let rec nadder n a b c_in = + if n = 1 then fulladder a b c_in + else + let s_n, c_n1 = fulladder (a ** 0) (b ** 0) c_in in + let s_n1, c_out = nadder (n-1) (a % (1, n-1)) (b % (1, n-1)) c_n1 in + s_n ++ s_n1, c_out + + + -- cgit v1.2.3