mirror of
https://github.com/YosysHQ/yosys
synced 2025-08-02 09:20:23 +00:00
intel_alm: Documentation improvements
This commit is contained in:
parent
02f1c7b9af
commit
16a3048308
3 changed files with 127 additions and 14 deletions
|
@ -1,3 +1,47 @@
|
|||
// The four D flip-flops (DFFs) in a Cyclone V/10GX Adaptive Logic Module (ALM)
|
||||
// act as one-bit memory cells that can be placed very flexibly (wherever there's
|
||||
// an ALM); each flop is represented by a MISTRAL_FF cell.
|
||||
//
|
||||
// The flops in these chips are rather flexible in some ways, but in practice
|
||||
// quite crippled by FPGA standards.
|
||||
//
|
||||
// What the flops can do
|
||||
// ---------------------
|
||||
// The core flop acts as a single-bit memory that initialises to zero at chip
|
||||
// reset. It takes in data on the rising edge of CLK if ENA is high,
|
||||
// and outputs it to Q. The ENA (clock enable) pin can therefore be used to
|
||||
// capture the input only if a condition is true.
|
||||
//
|
||||
// The data itself is zero if SCLR (synchronous clear) is high, else it comes
|
||||
// from SDATA (synchronous data) if SLOAD (synchronous load) is high, or DATAIN
|
||||
// if SLOAD is low.
|
||||
//
|
||||
// If ACLR (asynchronous clear) is low then Q is forced to zero, regardless of
|
||||
// the synchronous inputs or CLK edge. This is most often used for an FPGA-wide
|
||||
// power-on reset.
|
||||
//
|
||||
// An asynchronous set that sets Q to one can be emulated by inverting the input
|
||||
// and output of the flop, resulting in ACLR forcing Q to zero, which then gets
|
||||
// inverted to produce one. Likewise, logic can operate on the falling edge of
|
||||
// CLK if CLK is inverted before being passed as an input.
|
||||
//
|
||||
// What the flops *can't* do
|
||||
// -------------------------
|
||||
// The trickiest part of the above capabilities is the lack of configurable
|
||||
// initialisation state. For example, it isn't possible to implement a flop with
|
||||
// asynchronous clear that initialises to one, because the hardware initialises
|
||||
// to zero. Likewise, you can't emulate a flop with asynchronous set that
|
||||
// initialises to zero, because the inverters mean the flop initialises to one.
|
||||
//
|
||||
// If the input design requires one of these cells (which appears to be rare
|
||||
// in practice) then synth_intel_alm will fail to synthesize the design where
|
||||
// other Yosys synthesis scripts might succeed.
|
||||
//
|
||||
// This stands in notable contrast to e.g. Xilinx flip-flops, which have
|
||||
// configurable initialisation state and native synchronous/asynchronous
|
||||
// set/clear (although not at the same time), which means they can generally
|
||||
// implement a much wider variety of logic.
|
||||
|
||||
// DATAIN: synchronous data input
|
||||
// CLK: clock input (positive edge)
|
||||
// ACLR: asynchronous clear (negative-true)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue