Copyright | (C) 2015-2016 University of Twente 2017 Google Inc. 2019 Myrtle Software Ltd 2021-2022 QBayLogic B.V. |
---|---|
License | BSD2 (see the file LICENSE) |
Maintainer | QBayLogic B.V. <devops@qbaylogic.com> |
Safe Haskell | Trustworthy |
Language | Haskell2010 |
Extensions |
|
RAM primitives with a combinational read port.
Synopsis
- asyncRam :: (Enum addr, HasCallStack, KnownDomain wdom, KnownDomain rdom, NFDataX a) => Clock wdom -> Clock rdom -> Enable wdom -> SNat n -> Signal rdom addr -> Signal wdom (Maybe (addr, a)) -> Signal rdom a
- asyncRamPow2 :: forall wdom rdom n a. (KnownNat n, HasCallStack, KnownDomain wdom, KnownDomain rdom, NFDataX a) => Clock wdom -> Clock rdom -> Enable wdom -> Signal rdom (Unsigned n) -> Signal wdom (Maybe (Unsigned n, a)) -> Signal rdom a
- asyncRam# :: forall wdom rdom n a. (HasCallStack, KnownDomain wdom, KnownDomain rdom, NFDataX a) => Clock wdom -> Clock rdom -> Enable wdom -> SNat n -> Signal rdom Int -> Signal wdom Bool -> Signal wdom Int -> Signal wdom a -> Signal rdom a
RAM synchronized to an arbitrary clock
:: (Enum addr, HasCallStack, KnownDomain wdom, KnownDomain rdom, NFDataX a) | |
=> Clock wdom |
|
-> Clock rdom |
|
-> Enable wdom | Global enable |
-> SNat n | Size |
-> Signal rdom addr | Read address |
-> Signal wdom (Maybe (addr, a)) | (write address |
-> Signal rdom a | Value of the |
Create a RAM with space for n
elements
- NB: Initial content of the RAM is undefined, reading it will throw an
XException
Additional helpful information:
- See Clash.Explicit.BlockRam for more information on how to use a RAM.
:: forall wdom rdom n a. (KnownNat n, HasCallStack, KnownDomain wdom, KnownDomain rdom, NFDataX a) | |
=> Clock wdom |
|
-> Clock rdom |
|
-> Enable wdom | Global enable |
-> Signal rdom (Unsigned n) | Read address |
-> Signal wdom (Maybe (Unsigned n, a)) | (write address |
-> Signal rdom a | Value of the |
Create a RAM with space for 2^n
elements
- NB: Initial content of the RAM is undefined, reading it will throw an
XException
Additional helpful information:
- See Clash.Prelude.BlockRam for more information on how to use a RAM.
Internal
:: forall wdom rdom n a. (HasCallStack, KnownDomain wdom, KnownDomain rdom, NFDataX a) | |
=> Clock wdom |
|
-> Clock rdom |
|
-> Enable wdom | Global enable |
-> SNat n | Size |
-> Signal rdom Int | Read address |
-> Signal wdom Bool | Write enable |
-> Signal wdom Int | Write address |
-> Signal wdom a | Value to write (at address |
-> Signal rdom a | Value of the |
RAM primitive