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