------------------------------------------------------------------------------- -- $Id: OneBitAdder.hs#1 2009/10/01 10:31:09 REDMOND\\satnams $ ------------------------------------------------------------------------------- module Xilinx.OneBitAdder where import Lava import Xilinx ------------------------------------------------------------------------------- oneBitAdder :: Xilinx m bit => (bit, (bit, bit)) -> m (bit, bit) oneBitAdder (cin, (a, b)) = do part_sum <- xor2 (a, b) sum <- xorcy (part_sum, cin) cout <- muxcy (part_sum, (a, cin)) return (sum, cout) ------------------------------------------------------------------------------- oneBitAdder_top :: Out () oneBitAdder_top = do a <- input_bit "a" b <- input_bit "b" cin <- input_bit "cin" (sum, cout) <- oneBitAdder (cin, (a, b)) output_bit "sum" sum output_bit "cout" cout -------------------------------------------------------------------------------