The figure in Stimulus Generation and Logging illustrates the program flow of the example design software. If modifying the supplied software, further program flows can be considered.
Adding One or More CCIDs or RCIDs
When adding one or more CCIDs or RCIDs to a running core using a single band, use the following sequence.
The figure assumes the software and RFSoC DFE PRACH core are active and running.
- The software confirms that the core is active and running by reading the operational status. It this returns 1, the core is operational.
- When inserting new RCIDs and CCIDs, the software must be aware of the existing
CC configuration and RC configuration. To do this, the software interrogates the
core using
XDfePrach_GetCurrentCCCfgandXDfePrach_GetCurrentRCCfgto read the current configurations the core is using. However, if the software has preserved an internal copy of the CC configuration and the RC configuration, it skips this stage. - After the current CC and RC configurations are available, the software can add
any new CCIDs or any new RCIDs to the configuration using
XDfePrach_AddCCtoCCCfgandXDfePrach_AddRCtoRCCfg. New RCIDs can have new or existing CCIDs as their "source" CCID. - After the CC and RC configurations are updated, they must be written to the core. The software sets the trigger configuration for the RACH Update and for the Frame Init. The RACH Update is configured as a single-shot trigger. The Frame Init is a Continuous Trigger. These triggers can be preserved from previous triggering activity, so this step can be optional.
-
XDfePrach_SetNextCfgwrites all of the registers for the CCID and RCID configurations. It then enables the triggers. The new configuration is activated when the following conditions are met:- Triggering conditions for the RACH Update are met
- Triggering conditions for the Frame Init are met
-
XDfePrach_SetTriggersCfgonly needs to be called one time to configure the triggers in the API. It must be called before the first trigger enabling functionXDfePrach_Activate. If it has been called previously, the Trigger configuration remains preserved in the API. Subsequent calls are optional and only required after any change is made to the Trigger configuration. If the subsequent optional call is required it should occur at the time indicated in the figure (beforeXDfePrach_SetNextCfg).
Removing One or More CCIDs or RCIDs
When removing one or more CCIDs or RCIDs from a running core, use the following sequence.
This procedure is similar to adding a CCID or RCID. Differences between the two procedures are listed below:
- RCIDs are removed before CCIDs. This is to ensure that any CCID that is removed is not listed as a "source" CCID for an active RCID. If removing a CCID, confirm that all of its RCIDs have also been removed.
- Function calls to
XDfePrach_AddCCtoCCCfgandXDfePrach_AddRCtoRCCfgare now calls toXDfePrach_RemoveCCfromCCCfgandXDfePrach_RemoveRCfromRCCfg. Removal is based on RCID and CCID number. - After updating the CCID and RCID configuration, set the RACH Update and Frame
Init triggers. Use the
XDfePrach_SetNextCfgto transfer the CCID and RCID register contents and enable the triggers in the core. -
XDfePrach_SetTriggersCfgis optional in this flow and only required if a change has been made to the Trigger Configuration.
As with addition, removal is achieved when the triggering conditions for the RACH Update are met and then the triggering conditions for the Frame Init are met.