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 |
Extensions |
|
- data DSignal' clk delay a
- delay' :: forall clk a n d. KnownNat d => SClock clk -> Vec d a -> DSignal' clk n a -> DSignal' clk (n + d) a
- delayI' :: (Default a, KnownNat d) => SClock clk -> DSignal' clk n a -> DSignal' clk (n + d) a
- feedback :: (DSignal' clk n a -> (DSignal' clk n a, DSignal' clk ((n + m) + 1) a)) -> DSignal' clk n a
- fromSignal :: Signal' clk a -> DSignal' clk 0 a
- toSignal :: DSignal' clk delay a -> Signal' clk a
- dfromList :: [a] -> DSignal' clk 0 a
- unsafeFromSignal :: Signal' clk a -> DSignal' clk n a
- antiDelay :: SNat d -> DSignal' clk (n + d) a -> DSignal' clk n a
Delay-annotated synchronous signals
data DSignal' clk delay a Source
A synchronized signal with samples of type a
, synchronized to clock
clk
, that has accumulated delay
amount of samples delay along its path.
delay' :: forall clk a n d. KnownNat d => SClock clk -> Vec d a -> DSignal' clk n a -> DSignal' clk (n + d) a Source
delayI' :: (Default a, KnownNat d) => SClock clk -> DSignal' clk n a -> DSignal' clk (n + d) a Source
feedback :: (DSignal' clk n a -> (DSignal' clk n a, DSignal' clk ((n + m) + 1) a)) -> DSignal' clk n a Source
Feed the delayed result of a function back to its input:
mac ::DSignal'
clk 0 Int ->DSignal'
clk 0 Int ->DSignal'
clk 0 Int mac x y =feedback
(mac' x y) where mac' ::DSignal'
clk 0 Int ->DSignal'
clk 0 Int ->DSignal'
clk 0 Int -> (DSignal'
clk 0 Int,DSignal'
clk 1 Int) mac' a b acc = let acc' = a * b + acc in (acc,delay
(singleton
0) acc')
>>>
sampleN 6 (mac (dfromList [1..]) (dfromList [1..]))
[0,1,5,14,30,55]
Signal <-> DSignal conversion
fromSignal :: Signal' clk a -> DSignal' clk 0 a Source
Signal
s are not delayed
sample s == dsample (fromSignal s)
List <-> DSignal conversion (not synthesisable)
dfromList :: [a] -> DSignal' clk 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' clk a -> DSignal' clk n a Source
EXPERIMENTAL
Unsafely convert a Signal
to any DSignal
clk'.
NB: Should only be used to interface with functions specified in terms of
Signal
.