| Copyright | (C) 2013-2016 University of Twente |
|---|---|
| License | BSD2 (see the file LICENSE) |
| Maintainer | Christiaan Baaij <christiaan.baaij@gmail.com> |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
Clash.Sized.Unsigned
Description
Documentation
data Unsigned (n :: Nat) Source #
Arbitrary-width unsigned integer represented by n bits
Given n bits, an Unsigned n number has a range of: [0 .. 2^n-1]
- NB: The usual Haskell method of converting an integral numeric type to
another,
fromIntegral, is not well suited for Clash as it will go throughIntegerwhich is arbitrarily bounded in HDL. Instead usebitCoerceand theResizeclass. - NB: The
Numoperators performwrap-aroundon overflow. If you want saturation on overflow, check out theSaturatingNumclass.
>>>maxBound :: Unsigned 37>>>minBound :: Unsigned 30>>>read (show (maxBound :: Unsigned 3)) :: Unsigned 37>>>1 + 2 :: Unsigned 33>>>2 + 6 :: Unsigned 30>>>1 - 3 :: Unsigned 36>>>2 * 3 :: Unsigned 36>>>2 * 4 :: Unsigned 30>>>(2 :: Unsigned 3) `mul` (4 :: Unsigned 3) :: Unsigned 68>>>(2 :: Unsigned 3) `add` (6 :: Unsigned 3) :: Unsigned 48>>>satAdd SatSymmetric 2 6 :: Unsigned 37>>>satSub SatSymmetric 2 3 :: Unsigned 30
Unsigned has the type role
>>>:i Unsignedtype role Unsigned nominal ...
as it is not safe to coerce between different width Unsigned. To change the
width, use the functions in the Resize class.