kansas-lava-cores-0.1.2.2: FPGA Cores Written in Kansas Lava.

Safe HaskellNone
LanguageHaskell2010

Hardware.KansasLava.Chunker

Synopsis

Documentation

waitForIt Source

Arguments

:: (Clock c, sig ~ Signal c, Rep a, b ~ Unsigned x, Size x, Size t) 
=> b

The maximum size of chunk

-> Witness t

2^t is the timeout time between elements

-> Patch (sig (Enabled a)) (sig (Enabled b)) (sig Ack) (sig Ack) 

chunkCounter :: forall c sig x y. (Clock c, sig ~ Signal c, Size x, Num x, Rep x, Size y, Rep y, Num y) => Witness x -> Patch (sig (Enabled (Unsigned y))) (sig (Enabled Bool)) (sig Ack) (sig Ack) Source

Count a (fixed-sized) header with 1's, and a payload with 0's. The fixed sized header counting is done before reading the payload size.

chunkJoinHeader :: forall c sig x y a. (Clock c, sig ~ Signal c, Rep a, Rep x, Size x, Num x, Enum x, Rep y, Size y, Num y) => (forall comb. Signal comb (Matrix x a) -> Signal comb (Unsigned y)) -> Patch (sig (Enabled (Matrix x a)) :> sig (Enabled a)) (sig (Enabled a)) (sig Ack :> sig Ack) (sig Ack) Source

chunkSplitHeader :: forall c sig x y a. (Clock c, sig ~ Signal c, Rep a, Rep x, Size x, Num x, Enum x, Rep y, Size y, Num y) => (forall comb. Signal comb (Matrix x a) -> Signal comb (Unsigned y)) -> Patch (sig (Enabled a)) (sig (Enabled (Matrix x a)) :> sig (Enabled a)) (sig Ack) (sig Ack :> sig Ack) Source

chunker :: forall c sig t w. (Size t, Clock c, sig ~ Signal c) => Unsigned X8 -> Witness t -> (forall comb. Signal comb (Matrix X1 U8) -> Signal comb U8) -> (forall comb. Signal comb (Unsigned X8) -> Signal comb (Matrix X1 U8)) -> Patch (sig (Enabled U8)) (sig (Enabled U8)) (sig Ack) (sig Ack) Source

mkByteHeader :: forall comb. Signal comb U8 -> Signal comb (Matrix X1 U8) Source