| Copyright | (C) 2017 Google Inc 2025 QBayLogic B.V. |
|---|---|
| License | BSD2 (see the file LICENSE) |
| Maintainer | QBayLogic B.V. <devops@qbaylogic.com> |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
Clash.Xilinx.DDR
Description
DDR primitives for Xilinx FPGAs
For general information about DDR primitives see Clash.Explicit.DDR.
For more information about the Xilinx DDR primitives see:
- Vivado Design Suite 7 Series FPGA and Zynq-7000 All Programmable SoC Libraries Guide, UG953 (v2022.2) October 19, 2022, p369-371, p477-479, https://www.xilinx.com/content/dam/xilinx/support/documents/sw_manuals/xilinx2022_2/ug953-vivado-7series-libraries.pdf
Synopsis
- iddr :: forall fast fPeriod edge reset init polarity slow m. (HasCallStack, KnownConfiguration fast ('DomainConfiguration fast fPeriod edge reset init polarity), KnownConfiguration slow ('DomainConfiguration slow (2 * fPeriod) edge reset init polarity), KnownNat m) => Clock slow -> Reset slow -> Enable slow -> Signal fast (BitVector m) -> Signal slow (BitVector m, BitVector m)
- oddr :: forall fast fPeriod edge reset init polarity slow m. (KnownConfiguration fast ('DomainConfiguration fast fPeriod edge reset init polarity), KnownConfiguration slow ('DomainConfiguration slow (2 * fPeriod) edge reset init polarity), KnownNat m) => Clock slow -> Reset slow -> Enable slow -> Signal slow (BitVector m, BitVector m) -> Signal fast (BitVector m)
Documentation
Arguments
| :: forall fast fPeriod edge reset init polarity slow m. (HasCallStack, KnownConfiguration fast ('DomainConfiguration fast fPeriod edge reset init polarity), KnownConfiguration slow ('DomainConfiguration slow (2 * fPeriod) edge reset init polarity), KnownNat m) | |
| => Clock slow | |
| -> Reset slow | |
| -> Enable slow | |
| -> Signal fast (BitVector m) | DDR input signal |
| -> Signal slow (BitVector m, BitVector m) | Normal speed output pair |
Xilinx specific variant of ddrIn implemented using the Xilinx IDDR
primitive in SAME_EDGE mode.
Reset values are 0
Of the output pair (o0, o1), o0 is the data clocked in on the falling
edge and o1 is the data clocked in on the rising edge, and o0 comes
before o1 in time.
NB: This primitive only supports rising edges as the active edge. Trying to instantiate this function in a domain where falling edges are the active edge will lead to a HDL generation or Haskell simulation error.
Arguments
| :: forall fast fPeriod edge reset init polarity slow m. (KnownConfiguration fast ('DomainConfiguration fast fPeriod edge reset init polarity), KnownConfiguration slow ('DomainConfiguration slow (2 * fPeriod) edge reset init polarity), KnownNat m) | |
| => Clock slow | |
| -> Reset slow | |
| -> Enable slow | |
| -> Signal slow (BitVector m, BitVector m) | Normal speed input pair |
| -> Signal fast (BitVector m) | DDR output signal |
Xilinx specific variant of ddrOut implemented using the Xilinx ODDR
primitive in SAME_EDGE mode.
Reset value is 0
Of the input pair (i0, i1), i0 is the data clocked out on the rising
edge and i1 is the data clocked out on the falling edge, and i0 comes
before i1 in time.
NB: This primitive only supports rising edges as the active edge. Trying to instantiate this function in a domain where falling edges are the active edge will lead to a HDL generation or Haskell simulation error.