{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeFamilies #-}
module Clash.Intel.DDR
( altddioIn
, altddioOut
, altddioIn#
, altddioOut#
)
where
import Data.Bifunctor
import GHC.Stack (HasCallStack, withFrozenCallStack)
import Clash.Annotations.Primitive (hasBlackBox)
import Clash.Explicit.Prelude
import Clash.Explicit.DDR
altddioIn
:: forall deviceFamily a dom domDDR
. HasCallStack
=> KnownDomain dom
=> KnownDomain domDDR
=> DomainPeriod dom ~ (2 * DomainPeriod domDDR)
=> DomainActiveEdge dom ~ 'Rising
=> BitPack a
=> SSymbol deviceFamily
-> Clock dom
-> Reset dom
-> Enable dom
-> Signal domDDR a
-> Signal dom (a, a)
altddioIn :: forall (deviceFamily :: Symbol) a (dom :: Symbol)
(domDDR :: Symbol).
(HasCallStack, KnownDomain dom, KnownDomain domDDR,
DomainPeriod dom ~ (2 * DomainPeriod domDDR),
DomainActiveEdge dom ~ 'Rising, BitPack a) =>
SSymbol deviceFamily
-> Clock dom
-> Reset dom
-> Enable dom
-> Signal domDDR a
-> Signal dom (a, a)
altddioIn SSymbol deviceFamily
devFam Clock dom
clk Reset dom
rst Enable dom
en =
((BitVector (BitSize a), BitVector (BitSize a)) -> (a, a))
-> Signal dom (BitVector (BitSize a), BitVector (BitSize a))
-> Signal dom (a, a)
forall a b. (a -> b) -> Signal dom a -> Signal dom b
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
fmap ((BitVector (BitSize a) -> a)
-> (BitVector (BitSize a) -> a)
-> (BitVector (BitSize a), BitVector (BitSize a))
-> (a, a)
forall a b c d. (a -> b) -> (c -> d) -> (a, c) -> (b, d)
forall (p :: Type -> Type -> Type) a b c d.
Bifunctor p =>
(a -> b) -> (c -> d) -> p a c -> p b d
bimap BitVector (BitSize a) -> a
forall a. BitPack a => BitVector (BitSize a) -> a
unpack BitVector (BitSize a) -> a
forall a. BitPack a => BitVector (BitSize a) -> a
unpack) (Signal dom (BitVector (BitSize a), BitVector (BitSize a))
-> Signal dom (a, a))
-> (Signal domDDR a
-> Signal dom (BitVector (BitSize a), BitVector (BitSize a)))
-> Signal domDDR a
-> Signal dom (a, a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
(HasCallStack =>
Signal domDDR (BitVector (BitSize a))
-> Signal dom (BitVector (BitSize a), BitVector (BitSize a)))
-> Signal domDDR (BitVector (BitSize a))
-> Signal dom (BitVector (BitSize a), BitVector (BitSize a))
forall a. HasCallStack => (HasCallStack => a) -> a
withFrozenCallStack (SSymbol deviceFamily
-> Clock dom
-> Reset dom
-> Enable dom
-> Signal domDDR (BitVector (BitSize a))
-> Signal dom (BitVector (BitSize a), BitVector (BitSize a))
forall (deviceFamily :: Symbol) (n :: Nat) (dom :: Symbol)
(domDDR :: Symbol).
(HasCallStack, KnownDomain dom, KnownDomain domDDR,
DomainPeriod dom ~ (2 * DomainPeriod domDDR),
DomainActiveEdge dom ~ 'Rising, KnownNat n) =>
SSymbol deviceFamily
-> Clock dom
-> Reset dom
-> Enable dom
-> Signal domDDR (BitVector n)
-> Signal dom (BitVector n, BitVector n)
altddioIn# SSymbol deviceFamily
devFam Clock dom
clk Reset dom
rst Enable dom
en) (Signal domDDR (BitVector (BitSize a))
-> Signal dom (BitVector (BitSize a), BitVector (BitSize a)))
-> (Signal domDDR a -> Signal domDDR (BitVector (BitSize a)))
-> Signal domDDR a
-> Signal dom (BitVector (BitSize a), BitVector (BitSize a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> BitVector (BitSize a))
-> Signal domDDR a -> Signal domDDR (BitVector (BitSize a))
forall a b. (a -> b) -> Signal domDDR a -> Signal domDDR b
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> BitVector (BitSize a)
forall a. BitPack a => a -> BitVector (BitSize a)
pack
altddioIn#
:: forall deviceFamily n dom domDDR
. HasCallStack
=> KnownDomain dom
=> KnownDomain domDDR
=> DomainPeriod dom ~ (2 * DomainPeriod domDDR)
=> DomainActiveEdge dom ~ 'Rising
=> KnownNat n
=> SSymbol deviceFamily
-> Clock dom
-> Reset dom
-> Enable dom
-> Signal domDDR (BitVector n)
-> Signal dom (BitVector n, BitVector n)
altddioIn# :: forall (deviceFamily :: Symbol) (n :: Nat) (dom :: Symbol)
(domDDR :: Symbol).
(HasCallStack, KnownDomain dom, KnownDomain domDDR,
DomainPeriod dom ~ (2 * DomainPeriod domDDR),
DomainActiveEdge dom ~ 'Rising, KnownNat n) =>
SSymbol deviceFamily
-> Clock dom
-> Reset dom
-> Enable dom
-> Signal domDDR (BitVector n)
-> Signal dom (BitVector n, BitVector n)
altddioIn# SSymbol deviceFamily
SSymbol Clock dom
clk Reset dom
rst Enable dom
en = (HasCallStack =>
Clock dom
-> Reset dom
-> Enable dom
-> BitVector n
-> BitVector n
-> BitVector n
-> Signal domDDR (BitVector n)
-> Signal dom (BitVector n, BitVector n))
-> Clock dom
-> Reset dom
-> Enable dom
-> BitVector n
-> BitVector n
-> BitVector n
-> Signal domDDR (BitVector n)
-> Signal dom (BitVector n, BitVector n)
forall a. HasCallStack => (HasCallStack => a) -> a
withFrozenCallStack HasCallStack =>
Clock dom
-> Reset dom
-> Enable dom
-> BitVector n
-> BitVector n
-> BitVector n
-> Signal domDDR (BitVector n)
-> Signal dom (BitVector n, BitVector n)
Clock dom
-> Reset dom
-> Enable dom
-> BitVector n
-> BitVector n
-> BitVector n
-> Signal domDDR (BitVector n)
-> Signal dom (BitVector n, BitVector n)
forall a (dom :: Symbol) (domDDR :: Symbol).
(HasCallStack, NFDataX a, KnownDomain dom, KnownDomain domDDR,
DomainPeriod dom ~ (2 * DomainPeriod domDDR)) =>
Clock dom
-> Reset dom
-> Enable dom
-> a
-> a
-> a
-> Signal domDDR a
-> Signal dom (a, a)
ddrIn# Clock dom
clk Reset dom
rst Enable dom
en BitVector n
0 BitVector n
0 BitVector n
0
{-# CLASH_OPAQUE altddioIn# #-}
{-# ANN altddioIn# hasBlackBox #-}
altddioOut
:: forall deviceFamily a dom domDDR
. HasCallStack
=> KnownDomain dom
=> KnownDomain domDDR
=> DomainPeriod dom ~ (2 * DomainPeriod domDDR)
=> DomainActiveEdge dom ~ 'Rising
=> BitPack a
=> SSymbol deviceFamily
-> Clock dom
-> Reset dom
-> Enable dom
-> Signal dom (a, a)
-> Signal domDDR a
altddioOut :: forall (deviceFamily :: Symbol) a (dom :: Symbol)
(domDDR :: Symbol).
(HasCallStack, KnownDomain dom, KnownDomain domDDR,
DomainPeriod dom ~ (2 * DomainPeriod domDDR),
DomainActiveEdge dom ~ 'Rising, BitPack a) =>
SSymbol deviceFamily
-> Clock dom
-> Reset dom
-> Enable dom
-> Signal dom (a, a)
-> Signal domDDR a
altddioOut SSymbol deviceFamily
devFam Clock dom
clk Reset dom
rst Enable dom
en =
(BitVector (BitSize a) -> a)
-> Signal domDDR (BitVector (BitSize a)) -> Signal domDDR a
forall a b. (a -> b) -> Signal domDDR a -> Signal domDDR b
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
fmap BitVector (BitSize a) -> a
forall a. BitPack a => BitVector (BitSize a) -> a
unpack (Signal domDDR (BitVector (BitSize a)) -> Signal domDDR a)
-> (Signal dom (a, a) -> Signal domDDR (BitVector (BitSize a)))
-> Signal dom (a, a)
-> Signal domDDR a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Signal dom (BitVector (BitSize a))
-> Signal dom (BitVector (BitSize a))
-> Signal domDDR (BitVector (BitSize a)))
-> (Signal dom (BitVector (BitSize a)),
Signal dom (BitVector (BitSize a)))
-> Signal domDDR (BitVector (BitSize a))
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry ((HasCallStack =>
SSymbol deviceFamily
-> Clock dom
-> Reset dom
-> Enable dom
-> Signal dom (BitVector (BitSize a))
-> Signal dom (BitVector (BitSize a))
-> Signal domDDR (BitVector (BitSize a)))
-> SSymbol deviceFamily
-> Clock dom
-> Reset dom
-> Enable dom
-> Signal dom (BitVector (BitSize a))
-> Signal dom (BitVector (BitSize a))
-> Signal domDDR (BitVector (BitSize a))
forall a. HasCallStack => (HasCallStack => a) -> a
withFrozenCallStack HasCallStack =>
SSymbol deviceFamily
-> Clock dom
-> Reset dom
-> Enable dom
-> Signal dom (BitVector (BitSize a))
-> Signal dom (BitVector (BitSize a))
-> Signal domDDR (BitVector (BitSize a))
SSymbol deviceFamily
-> Clock dom
-> Reset dom
-> Enable dom
-> Signal dom (BitVector (BitSize a))
-> Signal dom (BitVector (BitSize a))
-> Signal domDDR (BitVector (BitSize a))
forall (deviceFamily :: Symbol) (n :: Nat) (dom :: Symbol)
(domDDR :: Symbol).
(HasCallStack, KnownDomain dom, KnownDomain domDDR,
DomainPeriod dom ~ (2 * DomainPeriod domDDR),
DomainActiveEdge dom ~ 'Rising, KnownNat n) =>
SSymbol deviceFamily
-> Clock dom
-> Reset dom
-> Enable dom
-> Signal dom (BitVector n)
-> Signal dom (BitVector n)
-> Signal domDDR (BitVector n)
altddioOut# SSymbol deviceFamily
devFam Clock dom
clk Reset dom
rst Enable dom
en) ((Signal dom (BitVector (BitSize a)),
Signal dom (BitVector (BitSize a)))
-> Signal domDDR (BitVector (BitSize a)))
-> (Signal dom (a, a)
-> (Signal dom (BitVector (BitSize a)),
Signal dom (BitVector (BitSize a))))
-> Signal dom (a, a)
-> Signal domDDR (BitVector (BitSize a))
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
Signal dom (BitVector (BitSize a), BitVector (BitSize a))
-> (Signal dom (BitVector (BitSize a)),
Signal dom (BitVector (BitSize a)))
Signal dom (BitVector (BitSize a), BitVector (BitSize a))
-> Unbundled dom (BitVector (BitSize a), BitVector (BitSize a))
forall a (dom :: Symbol).
Bundle a =>
Signal dom a -> Unbundled dom a
forall (dom :: Symbol).
Signal dom (BitVector (BitSize a), BitVector (BitSize a))
-> Unbundled dom (BitVector (BitSize a), BitVector (BitSize a))
unbundle (Signal dom (BitVector (BitSize a), BitVector (BitSize a))
-> (Signal dom (BitVector (BitSize a)),
Signal dom (BitVector (BitSize a))))
-> (Signal dom (a, a)
-> Signal dom (BitVector (BitSize a), BitVector (BitSize a)))
-> Signal dom (a, a)
-> (Signal dom (BitVector (BitSize a)),
Signal dom (BitVector (BitSize a)))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((a, a) -> (BitVector (BitSize a), BitVector (BitSize a)))
-> Signal dom (a, a)
-> Signal dom (BitVector (BitSize a), BitVector (BitSize a))
forall a b. (a -> b) -> Signal dom a -> Signal dom b
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
fmap ((a -> BitVector (BitSize a))
-> (a -> BitVector (BitSize a))
-> (a, a)
-> (BitVector (BitSize a), BitVector (BitSize a))
forall a b c d. (a -> b) -> (c -> d) -> (a, c) -> (b, d)
forall (p :: Type -> Type -> Type) a b c d.
Bifunctor p =>
(a -> b) -> (c -> d) -> p a c -> p b d
bimap a -> BitVector (BitSize a)
forall a. BitPack a => a -> BitVector (BitSize a)
pack a -> BitVector (BitSize a)
forall a. BitPack a => a -> BitVector (BitSize a)
pack)
altddioOut#
:: forall deviceFamily n dom domDDR
. HasCallStack
=> KnownDomain dom
=> KnownDomain domDDR
=> DomainPeriod dom ~ (2 * DomainPeriod domDDR)
=> DomainActiveEdge dom ~ 'Rising
=> KnownNat n
=> SSymbol deviceFamily
-> Clock dom
-> Reset dom
-> Enable dom
-> Signal dom (BitVector n)
-> Signal dom (BitVector n)
-> Signal domDDR (BitVector n)
altddioOut# :: forall (deviceFamily :: Symbol) (n :: Nat) (dom :: Symbol)
(domDDR :: Symbol).
(HasCallStack, KnownDomain dom, KnownDomain domDDR,
DomainPeriod dom ~ (2 * DomainPeriod domDDR),
DomainActiveEdge dom ~ 'Rising, KnownNat n) =>
SSymbol deviceFamily
-> Clock dom
-> Reset dom
-> Enable dom
-> Signal dom (BitVector n)
-> Signal dom (BitVector n)
-> Signal domDDR (BitVector n)
altddioOut# SSymbol deviceFamily
SSymbol Clock dom
clk Reset dom
rst Enable dom
en = Clock dom
-> Reset dom
-> Enable dom
-> BitVector n
-> Signal dom (BitVector n)
-> Signal dom (BitVector n)
-> Signal domDDR (BitVector n)
forall a (dom :: Symbol) (domDDR :: Symbol).
(HasCallStack, NFDataX a, KnownDomain dom, KnownDomain domDDR,
DomainPeriod dom ~ (2 * DomainPeriod domDDR)) =>
Clock dom
-> Reset dom
-> Enable dom
-> a
-> Signal dom a
-> Signal dom a
-> Signal domDDR a
ddrOut# Clock dom
clk Reset dom
rst Enable dom
en BitVector n
0
{-# CLASH_OPAQUE altddioOut# #-}
{-# ANN altddioOut# hasBlackBox #-}