| Copyright | (C) 2013-2016 University of Twente 2016 Myrtle Software Ltd 2021-2023 QBayLogic B.V. |
|---|---|
| License | BSD2 (see the file LICENSE) |
| Maintainer | QBayLogic B.V. <devops@qbaylogic.com> |
| Safe Haskell | Unsafe |
| Language | Haskell2010 |
| Extensions |
|
Clash.Sized.Internal.Unsigned
Description
Synopsis
- newtype Unsigned (n :: Nat) = U {}
- size# :: KnownNat n => Unsigned n -> Int
- pack# :: Unsigned n -> BitVector n
- unpack# :: KnownNat n => BitVector n -> Unsigned n
- eq# :: Unsigned n -> Unsigned n -> Bool
- neq# :: Unsigned n -> Unsigned n -> Bool
- lt# :: Unsigned n -> Unsigned n -> Bool
- ge# :: Unsigned n -> Unsigned n -> Bool
- gt# :: Unsigned n -> Unsigned n -> Bool
- le# :: Unsigned n -> Unsigned n -> Bool
- toEnum# :: forall n. KnownNat n => Int -> Unsigned n
- fromEnum# :: forall n. KnownNat n => Unsigned n -> Int
- enumFrom# :: forall n. KnownNat n => Unsigned n -> [Unsigned n]
- enumFromThen# :: forall n. KnownNat n => Unsigned n -> Unsigned n -> [Unsigned n]
- enumFromTo# :: forall n. KnownNat n => Unsigned n -> Unsigned n -> [Unsigned n]
- enumFromThenTo# :: forall n. KnownNat n => Unsigned n -> Unsigned n -> Unsigned n -> [Unsigned n]
- minBound# :: Unsigned n
- maxBound# :: forall n. KnownNat n => Unsigned n
- (+#) :: forall n. KnownNat n => Unsigned n -> Unsigned n -> Unsigned n
- (-#) :: forall n. KnownNat n => Unsigned n -> Unsigned n -> Unsigned n
- (*#) :: forall n. KnownNat n => Unsigned n -> Unsigned n -> Unsigned n
- negate# :: forall n. KnownNat n => Unsigned n -> Unsigned n
- fromInteger# :: forall n. KnownNat n => Integer -> Unsigned n
- plus# :: Unsigned m -> Unsigned n -> Unsigned (Max m n + 1)
- minus# :: forall m n. (KnownNat m, KnownNat n) => Unsigned m -> Unsigned n -> Unsigned (Max m n + 1)
- times# :: Unsigned m -> Unsigned n -> Unsigned (m + n)
- quot# :: Unsigned n -> Unsigned n -> Unsigned n
- rem# :: Unsigned n -> Unsigned n -> Unsigned n
- toInteger# :: Unsigned n -> Integer
- and# :: Unsigned n -> Unsigned n -> Unsigned n
- or# :: Unsigned n -> Unsigned n -> Unsigned n
- xor# :: Unsigned n -> Unsigned n -> Unsigned n
- complement# :: forall n. KnownNat n => Unsigned n -> Unsigned n
- shiftL# :: forall n. KnownNat n => Unsigned n -> Int -> Unsigned n
- shiftR# :: forall n. KnownNat n => Unsigned n -> Int -> Unsigned n
- rotateL# :: forall n. KnownNat n => Unsigned n -> Int -> Unsigned n
- rotateR# :: forall n. KnownNat n => Unsigned n -> Int -> Unsigned n
- resize# :: forall n m. KnownNat m => Unsigned n -> Unsigned m
- unsignedToWord :: Unsigned 64 -> Word
- unsigned8toWord8 :: Unsigned 8 -> Word8
- unsigned16toWord16 :: Unsigned 16 -> Word16
- unsigned32toWord32 :: Unsigned 32 -> Word32
Datatypes
newtype 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.
Constructors
| U | The constructor, |
Fields | |
Instances
Accessors
Length information
Type classes
BitPack
Eq
Ord
Enum
Enum (not synthesizable)
enumFromThenTo# :: forall n. KnownNat n => Unsigned n -> Unsigned n -> Unsigned n -> [Unsigned n] Source #
Bounded
Num
ExtendingNum
minus# :: forall m n. (KnownNat m, KnownNat n) => Unsigned m -> Unsigned n -> Unsigned (Max m n + 1) Source #
Integral
toInteger# :: Unsigned n -> Integer Source #
Bits
Resize
Conversions
unsignedToWord :: Unsigned 64 -> Word Source #
unsigned8toWord8 :: Unsigned 8 -> Word8 Source #
unsigned16toWord16 :: Unsigned 16 -> Word16 Source #
unsigned32toWord32 :: Unsigned 32 -> Word32 Source #