| Copyright | (C) 2013-2015, University of Twente |
|---|---|
| License | BSD2 (see the file LICENSE) |
| Maintainer | Christiaan Baaij <christiaan.baaij@gmail.com> |
| Safe Haskell | None |
| Language | Haskell2010 |
| Extensions |
|
CLaSH.Signal.Delayed
Contents
Description
- data DSignal delay a
- delay :: forall a n m. KnownNat m => Vec m a -> DSignal (n - m) a -> DSignal n a
- delayI :: (Default a, KnownNat m) => DSignal (n - m) a -> DSignal n a
- feedback :: (DSignal ((n - m) - 1) a -> (DSignal ((n - m) - 1) a, DSignal n a)) -> DSignal ((n - m) - 1) a
- fromSignal :: Signal a -> DSignal 0 a
- toSignal :: DSignal delay a -> Signal a
- dfromList :: [a] -> DSignal 0 a
- unsafeFromSignal :: Signal a -> DSignal n a
- antiDelay :: SNat d -> DSignal n a -> DSignal (n - d) a
Delay-annotated synchronous signals
A synchronized signal with samples of type a, synchronized to "system"
clock (period 1000), that has accumulated delay amount of samples delay
along its path.
Instances
| Functor (DSignal delay) | |
| Applicative (DSignal delay) | |
| Foldable (DSignal delay) | |
| Traversable (DSignal delay) | |
| Bounded a => Bounded (DSignal delay a) | |
| Enum a => Enum (DSignal delay a) | |
| Eq (DSignal delay a) | |
| Fractional a => Fractional (DSignal delay a) | |
| Integral a => Integral (DSignal delay a) | |
| Num a => Num (DSignal delay a) | |
| Ord a => Ord (DSignal delay a) | |
| (Num a, Ord a) => Real (DSignal delay a) | |
| Show a => Show (DSignal delay a) | |
| Bits a => Bits (DSignal delay a) | |
| FiniteBits a => FiniteBits (DSignal delay a) | |
| Default a => Default (DSignal delay a) | |
| Lift a => Lift (DSignal delay a) | |
| SaturatingNum a => SaturatingNum (DSignal delay a) | |
| ExtendingNum a b => ExtendingNum (DSignal n a) (DSignal n b) | |
| type AResult (DSignal n a) (DSignal n b) = DSignal n (AResult a b) | |
| type MResult (DSignal n a) (DSignal n b) = DSignal n (MResult a b) |
feedback :: (DSignal ((n - m) - 1) a -> (DSignal ((n - m) - 1) a, DSignal n a)) -> DSignal ((n - m) - 1) a Source
Feed the delayed result of a function back to its input:
mac ::DSignal0 Int ->DSignal0 Int ->DSignal0 Int mac x y =feedback(mac' x y) where mac' ::DSignal0 Int ->DSignal0 Int ->DSignal0 Int -> (DSignal0 Int,DSignal1 Int) mac' a b acc = let acc' = a * b + acc in (acc,delay(singleton0) acc')
>>>sampleN 6 (mac (dfromList [1..]) (dfromList [1..]))[0,1,5,14,30,55]
Signal <-> DSignal conversion
fromSignal :: Signal a -> DSignal 0 a Source
Signals are not delayed
sample s == dsample (fromSignal s)
List <-> DSignal conversion (not synthesisable)
dfromList :: [a] -> DSignal 0 a Source
Create a DSignal from a list
Every element in the list will correspond to a value of the signal for one clock cycle.
>>>sampleN 2 (dfromList [1,2,3,4,5])[1,2]
NB: This function is not synthesisable
Experimental
unsafeFromSignal :: Signal a -> DSignal n a Source