Generate a programmable time delay.
Module RB8514 is a programmable delay time generator.
It has a clock input, a trigger input, two delay outputs, a gate and a gate-not output, and a Rulbus interrupt output.
The module's front-panel looks as follows.
+-----------+ | DELAY | | | | | | | | (o) CLOCK| | (o) TRIG | | (o) OUT1 | | (o) OUT2 | | (o) GATE | | (o)/GATE | | | | | | | | RULBUS | +-----------+
The delay is made with a 24-bit down counter that counts a programmable number of clock-pulses, when started by a trigger-pulse on the trigger input. See setClockFrequency(), setIntrinsicDelayTime(), setDelayTime(), setDelayCount(), isBusy().
The trigger input can be made positive or negative edge sensitive. Besides triggering the delay with the trigger-input, it is also possible to trigger the delay with a software command. See setSignalDirection() and trigger().
Each of the two delay outputs (1 and 2) can be programmed to generate a short pulse (15 ns) at the start of the delay, at the end of it, both or to generate no pulse at all. See enableSignal().
The level of the start- and end-pulses of output 1 and 2 can be made positive or negative. The restriction is that both outputs have the same polarity for the same pulse. See setSignalDirection().
An additional restriction with negative pulses is, that only the start- or the end-pulse may be enabled on an output.
The gate and gate-not outputs generate a pulse from the start of the delay time upto the end of it. The gate-output is active high, the gate-not output is active low.
The RB8514 delay module has no attributes that are configured at production time.
rb8515_delay "name"
{
address = 0xC4
}
When the Rulbus configuration file is read, delay modules are initialized as follows:
Among others, there are functions to specify the delay module's clock frequency and signal polarities and signal enable-states and to specify the module's delay time.
int32 handle; rb8514_delay_open( &handle, "delay" ); rb8514_delay_setClockFrequency( handle, 10e6 ); rb8514_delay_enableSignal ( handle, "s1", 1 ); rb8514_delay_enableSignal ( handle, "e1", 0 ); rb8514_delay_enableSignal ( handle, "s2", 0 ); rb8514_delay_enableSignal ( handle, "e2", 1 ); rb8514_delay_setDelayTime ( handle, 1e-3 ); rb8514_delay_close( handle )
Open and close | |
| EXPORT int32 RDL_API | rb8514_delay_open (int32 *pHandle, CCstr name) |
| open a delay module. | |
| EXPORT int32 RDL_API | rb8514_delay_close (int32 handle) |
| close a delay module . | |
Clock frequency | |
| EXPORT int32 RDL_API | rb8514_delay_getClockFrequency (int32 handle, float32 *pFrequency) |
| get the current clock frequency. | |
| EXPORT int32 RDL_API | rb8514_delay_setClockFrequency (int32 handle, float32 frequency) |
| set clock frequency. | |
Delay | |
| EXPORT int32 RDL_API | rb8514_delay_getIntrinsicDelayTime (int32 handle, float32 *pTime) |
| get the current intrinsic delay time (the time subtracted from requested delay time). | |
| EXPORT int32 RDL_API | rb8514_delay_setIntrinsicDelayTime (int32 handle, float32 time) |
| set intrinsic delay time (will be subtracted from requested delay time). | |
| EXPORT int32 RDL_API | rb8514_delay_getDelayTime (int32 handle, float32 *pTime) |
| get the current delay time. | |
| EXPORT int32 RDL_API | rb8514_delay_setDelayTime (int32 handle, float32 time) |
| set new delay time. | |
| EXPORT int32 RDL_API | rb8514_delay_getDelayCount (int32 handle, int32 *pCount) |
| get the current delay count. | |
| EXPORT int32 RDL_API | rb8514_delay_setDelayCount (int32 handle, int32 count) |
| set new delay count. | |
Signals | |
| EXPORT int32 RDL_API | rb8514_delay_getSignalDirection (int32 handle, CCstr signal, int32 *pDir) |
| get the current signal direction: signal in [t s1 s2 e1 e2], result: [p n]. | |
| EXPORT int32 RDL_API | rb8514_delay_setSignalDirection (int32 handle, CCstr signal, int32 dir) |
| set new signal direction: signal in [t s1 s2 e1 e2], dir in [p n i] for positive, negative and invert. | |
| EXPORT int32 RDL_API | rb8514_delay_isEnabledSignal (int32 handle, CCstr signal, bool32 *pEnabled) |
| get the current signal enable-state: signal in [i s1 s2 e1 e2]. | |
| EXPORT int32 RDL_API | rb8514_delay_enableSignal (int32 handle, CCstr signal, bool32 enable) |
| enable signal: signal in [i s1 s2 e1 e2], i for interrupt. | |
Timing | |
| EXPORT int32 RDL_API | rb8514_delay_trigger (int32 handle) |
| software trigger: start delay. | |
| EXPORT int32 RDL_API | rb8514_delay_isBusy (int32 handle, bool32 *pBusy) |
| true if timing a delay. | |