Copyright  (C) 2019 Myrtle Software Ltd. 2018 @blaxill 20182019 QBayLogic B.V. 

License  BSD2 (see the file LICENSE) 
Maintainer  Christiaan Baaij <christiaan.baaij@gmail.com> 
Safe Haskell  Trustworthy 
Language  Haskell2010 
Extensions 

Synopsis
 newtype DSignal (dom :: Domain) (delay :: Nat) a = DSignal {}
 feedback :: (DSignal dom n a > (DSignal dom n a, DSignal dom ((n + m) + 1) a)) > DSignal dom n a
 fromSignal :: Signal dom a > DSignal dom 0 a
 dfromList :: NFDataX a => [a] > DSignal dom 0 a
 dfromList_lazy :: [a] > DSignal dom 0 a
 unsafeFromSignal :: Signal dom a > DSignal dom n a
 antiDelay :: SNat d > DSignal dom (n + d) a > DSignal dom n a
Delayannotated synchronous signals
newtype DSignal (dom :: Domain) (delay :: Nat) 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.
Instances
Functor (DSignal dom delay) Source #  
Applicative (DSignal dom delay) Source #  
Defined in Clash.Signal.Delayed.Internal pure :: a > DSignal dom delay a # (<*>) :: DSignal dom delay (a > b) > DSignal dom delay a > DSignal dom delay b # liftA2 :: (a > b > c) > DSignal dom delay a > DSignal dom delay b > DSignal dom delay c # (*>) :: DSignal dom delay a > DSignal dom delay b > DSignal dom delay b # (<*) :: DSignal dom delay a > DSignal dom delay b > DSignal dom delay a #  
Foldable (DSignal dom delay) Source #  
Defined in Clash.Signal.Delayed.Internal fold :: Monoid m => DSignal dom delay m > m # foldMap :: Monoid m => (a > m) > DSignal dom delay a > m # foldMap' :: Monoid m => (a > m) > DSignal dom delay a > m # foldr :: (a > b > b) > b > DSignal dom delay a > b # foldr' :: (a > b > b) > b > DSignal dom delay a > b # foldl :: (b > a > b) > b > DSignal dom delay a > b # foldl' :: (b > a > b) > b > DSignal dom delay a > b # foldr1 :: (a > a > a) > DSignal dom delay a > a # foldl1 :: (a > a > a) > DSignal dom delay a > a # toList :: DSignal dom delay a > [a] # null :: DSignal dom delay a > Bool # length :: DSignal dom delay a > Int # elem :: Eq a => a > DSignal dom delay a > Bool # maximum :: Ord a => DSignal dom delay a > a # minimum :: Ord a => DSignal dom delay a > a #  
Traversable (DSignal dom delay) Source #  
Defined in Clash.Signal.Delayed.Internal traverse :: Applicative f => (a > f b) > DSignal dom delay a > f (DSignal dom delay b) # sequenceA :: Applicative f => DSignal dom delay (f a) > f (DSignal dom delay a) # mapM :: Monad m => (a > m b) > DSignal dom delay a > m (DSignal dom delay b) # sequence :: Monad m => DSignal dom delay (m a) > m (DSignal dom delay a) #  
Fractional a => Fractional (DSignal dom delay a) Source #  
Num a => Num (DSignal dom delay a) Source #  
Defined in Clash.Signal.Delayed.Internal (+) :: DSignal dom delay a > DSignal dom delay a > DSignal dom delay a # () :: DSignal dom delay a > DSignal dom delay a > DSignal dom delay a # (*) :: DSignal dom delay a > DSignal dom delay a > DSignal dom delay a # negate :: DSignal dom delay a > DSignal dom delay a # abs :: DSignal dom delay a > DSignal dom delay a # signum :: DSignal dom delay a > DSignal dom delay a # fromInteger :: Integer > DSignal dom delay a #  
Show a => Show (DSignal dom delay a) Source #  
Lift a => Lift (DSignal dom delay a) Source #  
Arbitrary a => Arbitrary (DSignal dom delay a) Source #  
CoArbitrary a => CoArbitrary (DSignal dom delay a) Source #  
Defined in Clash.Signal.Delayed.Internal coarbitrary :: DSignal dom delay a > Gen b > Gen b #  
Default a => Default (DSignal dom delay a) Source #  
Defined in Clash.Signal.Delayed.Internal  
type HasDomain dom1 (DSignal dom2 delay a) Source #  
Defined in Clash.Class.HasDomain.HasSpecificDomain  
type TryDomain t (DSignal dom delay a) Source #  
Defined in Clash.Class.HasDomain.HasSingleDomain 
feedback :: (DSignal dom n a > (DSignal dom n a, DSignal dom ((n + m) + 1) a)) > DSignal dom n a Source #
Feed the delayed result of a function back to its input:
mac :: Clock dom > Reset dom > Enable dom >DSignal
dom 0 Int >DSignal
dom 0 Int >DSignal
dom 0 Int mac clk rst en x y =feedback
(mac' x y) where mac' ::DSignal
dom 0 Int >DSignal
dom 0 Int >DSignal
dom 0 Int > (DSignal
dom 0 Int,DSignal
dom 1 Int) mac' a b acc = let acc' = a * b + acc in (acc,delay
clk rst en (singleton
0) acc')
>>>
sampleN 7 (mac systemClockGen systemResetGen enableGen (dfromList [0..]) (dfromList [0..]))
[0,0,1,5,14,30,55]
fromSignal :: Signal dom a > DSignal dom 0 a Source #
Signal
s are not delayed
sample s == dsample (fromSignal s)
List <> DSignal conversion (not synthesizable)
dfromList :: NFDataX a => [a] > DSignal dom 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 synthesizable
lazy versions
dfromList_lazy :: [a] > DSignal dom 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 synthesizable
Experimental
unsafeFromSignal :: Signal dom a > DSignal dom n a Source #