The synchronous/asynchronous control pins and attributes determine how modules containing flip-flops should be initialized after power-up or set or reset during operation.
LogiBLOX modules allow both types of control to be specified on the same module with different values for each type of control. This means that LogiBLOX allows you to set an entire register asynchronously to one value or synchronously to a different value. These values are constants specified by the ASYNC_VAL and SYNC_VAL attributes on the LogiBLOX modules and are independent of each other.
The modules that have synchronous (SYNC_CTRL) and asynchronous (ASYNC_CTRL) control pins include the following.
You can specify the SYNC_VAL or ASYNC_VAL attribute values on all the above modules except the Clock Dividers module and LFSR Counters, which use the SYNC_COUNT/ASYNC_COUNT attributes. Refer to the Clock Dividers module and LFSR Counter sections for a description of the SYNC_COUNT and ASYNC_COUNT attributes.
ASYNC_VAL may also be applied to some registered I/O modules.
The values are loaded into the registers and counters under the control of the ASYNC_CTRL and SYNC_CTRL inputs of the module.
For Accumulator and Adder/Subtracter modules, which contain C_OUT and OVFL outputs, the values of the C_OUT and OVFL registers can also be specified for the case when ASYNC_CTRL or SYNC_CTRL is asserted. The values are specified in the ASYNC_VAL and SYNC_VAL fields in conjunction with the value of the accumulator register. Use the keyword REG to specify the Accumulator or Sum register value (this is optional), C_OUT to specify the asynchronous or synchronous control value of the C_OUT register, and OVFL to specify the value of the Overflow register. Each data register type value is preceded by a colon, and separated from other data types with a . (period) symbol.
For example, given an accumulator with the ASYNC_VAL or SYNC_VAL field set to either 1101.C_OUT:0.OVFL:1 or REG:1101.C_OUT:0.OVFL:1, the registers are set as follows.
The ASYNC_VAL constant is loaded immediately upon asserting the module's ASYNC_CTRL pin.
This load has priority over any clock-activated load.
The SYNC_VAL constant is loaded into the module if the module's SYNC_CTRL pin is High during the rising edge of the clock and the clock is enabled. SYNC_CTRL normally has priority over other synchronous functions on the same module. If the ASYNC_CTRL and SYNC_CTRL inputs are not connected, these functions are not synthesized.
You can also use the ASYNC_VAL attribute to define a constant that is loaded at power-up or on assertion of the device's global reset net. If you do not specify the ASYNC_VAL attribute, all registers and counters except Linear-Feedback-Shift-Register counters (LFSR) and one-hot counters are set to zero at power-up. LFSR counters are set to their initial count state at power-up. One-hot counters start up with a value of one.
I/O modules can optionally take input and output registers. I/O modules with registers can be given an ASYNC_VAL attribute to define their power-up states.
When the Global Set Reset (GSR) is activated, the register-based modules, including Accumulators, Counters, Data Registers, and Shift Registers, are loaded with the setting given by the ASYNC_VAL attribute. The same is true for the Global Reset (GR) in the XC3000A and XC5200 devices.