clash-prelude-0.10.1: CAES Language for Synchronous Hardware - Prelude library

Copyright (C) 2013-2015, University of Twente BSD2 (see the file LICENSE) Christiaan Baaij Unsafe Haskell2010 TemplateHaskellDataKindsMagicHashKindSignaturesTypeOperatorsExplicitNamespaces

CLaSH.Sized.Internal.Index

Description

Synopsis

# Datatypes

newtype Index n Source

Arbitrary-bounded unsigned integer represented by `ceil(log_2(n))` bits.

Given an upper bound `n`, an `Index` `n` number has a range of: [0 .. `n`-1]

````>>> ````maxBound :: Index 8
```7
`>>> ````minBound :: Index 8
```0
`>>> ````1 + 2 :: Index 8
```3
`>>> ````2 + 6 :: Index 8
```*** Exception: 8 is out of bounds: [0..7]
`>>> ````1 - 3 :: Index 8
```*** Exception: -2 is out of bounds: [0..7]
`>>> ````2 * 3 :: Index 8
```6
`>>> ````2 * 4 :: Index 8
```*** Exception: 8 is out of bounds: [0..7]
```

Constructors

 I The constructor, `I`, and the field, `unsafeToInteger`, are not synthesisable. FieldsunsafeToInteger :: Integer

Instances

 KnownNat n => Bounded (Index n) Source KnownNat n => Enum (Index n) Source The functions: `enumFrom`, `enumFromThen`, `enumFromTo`, and `enumFromThenTo`, are not synthesisable. Eq (Index n) Source KnownNat n => Integral (Index n) Source KnownNat n => Num (Index n) Source Operators report an error on overflow and underflow Ord (Index n) Source KnownNat n => Real (Index n) Source Show (Index n) Source KnownNat n => Arbitrary (Index n) Source KnownNat n => CoArbitrary (Index n) Source KnownNat n => Default (Index n) Source KnownNat n => Lift (Index n) Source Bundle (Index n) Source type Unbundled' clk (Index n) = Signal' clk (Index n)

# Type classes

## Eq

eq# :: Index n -> Index n -> Bool Source

neq# :: Index n -> Index n -> Bool Source

## Ord

lt# :: Index n -> Index n -> Bool Source

ge# :: Index n -> Index n -> Bool Source

gt# :: Index n -> Index n -> Bool Source

le# :: Index n -> Index n -> Bool Source

## Enum (not synthesisable)

enumFromTo# :: KnownNat n => Index n -> Index n -> [Index n] Source

enumFromThenTo# :: KnownNat n => Index n -> Index n -> Index n -> [Index n] Source

## Num

(+#) :: KnownNat n => Index n -> Index n -> Index n Source

(-#) :: KnownNat n => Index n -> Index n -> Index n Source

(*#) :: KnownNat n => Index n -> Index n -> Index n Source

## Integral

quot# :: Index n -> Index n -> Index n Source

rem# :: Index n -> Index n -> Index n Source