THUNDER BOARD DRIVER

Last update 5-22-99


CONFIGURATION PARAMETERS:


PARAMETER OVERVIEW:

This driver allows you to specify certain parameters on the THUNDER.ADC line, which will be the second line of the DQA.CFG file. Each parameter is given as a letter and colon, followed immediately by a value. Use a space to separate parameters. For example:
    THUNDER.ADC    A:h220 I:5
The order of the parameters is not important.

Daqarta will read the BLASTER environment string, if it is present, and use that to set the base Address and IRQ Setting an A: or I: value on the THUNDER.ADC line will cause that value to be used in preference to the equivalent BLASTER value.

You may need to override the BLASTER settings if there is more than one sound card in your system, since there will be only one BLASTER string in the environment. You can view the BLASTER string by entering SET at the DOS prompt.

Daqarta will exit with an error message if it finds a problem in the THUNDER.ADC parameters. Once Daqarta is running, you can check to see which parameters have been set by the BLASTER string, configuration line, or default, by checking the board information summary available via the ALT-H Plug-In Help system.

Daqarta ignores any non-Daqarta drivers that may have been installed for your board, whether Windows or DOS.

You can check to see which parameters have been set, either via the configuration line or by default, by checking the board information summary available via the ALT-H Plug-In Help system.


A: ADDRESS:

Use this to tell Daqarta the base I/O address for your board. This should match the value selected by the jumpers on the card, either 210h, 220h, 230h, 240, 250h, or 260h.

You only need to give the A: parameter if the BLASTER string in your DOS environment is not correct. This normally appears as a SET BLASTER= line in AUTOEXEC.BAT. (You can view all the strings in the environment by entering SET at the DOS prompt.)

The most likely reason for the BLASTER string being wrong is that you have more than one sound card installed, and the single BLASTER string is for another card. There is also the possibility that the jumpers on the card don't match the BLASTER value.

If you do need to give the A: parameter here, note that all Daqarta parameters require a colon, and that you should use an 'h' prefix before hexadecimal values, as in:

    THUNDER.ADC    A:h240

Compare this to the BLASTER format, which would be just A240. The default address for is hex 220, which will be used if there is no BLASTER string and no A: parameter.

Consult the documentation that came with your board for information on how to change this with the AD2, AD1, and AD0 switches. Basically, these are used to signify a binary number from 1 to 6 by setting a switch OFF where a 1 bit should be. So to set '2' for 220, you would have:

    AD2     AD1     AD0
    ON      OFF     ON

The value you enter is not validated against any standard list, allowing other boards with different address options to be used. Daqarta then checks the address given, and if it does not find a valid Thunder Board-compatible board there it exits with a message giving the address it tried:

    Thunder Board not found at 0240h.
The only exception is if you set A:0 to allow viewing of this board Help system without having a board installed or properly configured.

If it finds a board at the given address, Daqarta checks the DSP version number. The DSP is the Digital Signal Processing chip that controls the sampling process, and different chips have different capabilities. Different DSP version numbers also signify other differences between board models, such as which mixer or FM synthesizer chip is present. This driver requires DSP version 2.xx, and if anything else is found Daqarta will exit with a message telling you what was found and what was needed, as in:

    Board found with DSP version 03.02.
    Requires Thunder Board or equivalent,
        version 2.xx.

F: HELP FILE OMIT:

This driver normally attempts to load this associated Help file on start-up, and exits with an error message if it can't find it. Setting F:0 on the ADC configuration line tells the driver not to look for the file. You would probably only want to use this option if you are really short of DOS memory, since loading the Help file only increases memory use by a few hundred bytes for its separate link stack and directory. (The file itself shares the text buffer of the Main Help file.)

Note that ALL Help files, including main, can be omitted via an F:0 parameter on the INIT line (first line) of the DQA.CFG file. If this is present, no individual module Help will be loaded.


G: GAIN CALIBRATION:

This allows the calibration of the input to be preset to to a user-specified full-scale value. Note that this does NOT actually change the sensitivity of the input, assumed to be maximum... below the AGC threshold. Instead, the G: parameter allows you to compensate for externally-applied Gain from a preamp or attenuator, for example.

The G: parameter is similar to the main User Unit/V Factor control, but allows presetting from the configuration file. It does not, however, affect the displayed units name, which you can change via the main User Units Name control.

The G: parameter must be followed by a full-scale sensitivity value, which may be either a normal decimal value or may use "European" notation, with the units prefix replacing the decimal. The prefix character must be one of the standard scientific prefixes recognized by Daqarta, which also allows 'u' instead of 'µ' and 'K' instead of 'k'. Otherwise, this is case-sensitive: 'm' is 'milli' and 'M' is 'Mega', for instance.

Neither the integer nor fraction part of the entry may exceed 65535. If no integer part is desired, you MUST include a leading 0 as a placeholder, as in 'G:M0m12345'. If no fraction part is desired, it may be omitted completely. The following are all valid entries:

  THUNDER.ADC     G:m12u345   ; 12.345 microVolts
  THUNDER.ADC     G:L123.45   ; 123.45 Volts
  THUNDER.ADC     G:r10       ; 10 Volts

See the Calibration section for details on determining the proper G: value.


I: IRQ:

This THUNDER.ADC driver uses DMA for data acquisition. The DMA level on the Thunder Board is hard-wired to level 1, and thus does not need to be given as a parameter. However, DMA operation also generates interrupts, so the I: parameter specifies the Interrupt Request level (IRQ) used when servicing them.

The need for this interrupt should not be confused with interrupt-driven sampling used for RTime operation on some "basic" laboratory- type boards, where an interrupt request is generated for each sample acquired. Here the IRQ is used only in conjunction with DMA sampling, to signify the completion of an entire buffer full of data. It does NOT require the special DDISK13 driver that interrupt-driven boards may need for DDisk operation.

The Thunder Board allows selection of IRQ 2, 3, 5, or 7 via marked jumpers on the card. To specify the IRQ to Daqarta, use the I: parameter as in:

    THUNDER.ADC     I:5
IRQ 5 is the default. IRQ 2 is really the same as IRQ 9 on AT-class machines, and Daqarta will accept I:9 instead of I:2.

Usually, Daqarta can read the I value directly from your BLASTER environment. Although forcing a value via the D: parameter on the THUNDER.ADC line will overrule the BLASTER setting, it does not actually change the value used by the card, which is set via the jumpers.

Note that IRQ 2 uses the second interrupt controller on AT-class machines (286 processor and above), and hence uses a second End Of Interrupt (EOI) command that is not needed when using 3, 5, or 7. Although the time to give this extra command is unlikely to ever be a problem, you might want to use 5 or 7 if there is no other conflict. (IRQ 3 is usually unavailable these machines.)


L: LPT PRINTER PORT I/O:

This is a powerful option that gives digital I/O capabilities to your Thunder Board by utilizing a conventional printer port. If you specify L:1 on the ADC configuration line, for example, LPT1 will be used to provide optional external triggering, stimulus pulse output, Averager remote control, and DDisk remote control.

The DB25 pin assignments for these (all standard TTL) are:

    Stimulus Pulse       OUT      2
    DDisk Remote         IN      12
    Averager Remote      IN      13
    External Trigger     IN      15

If the LPT number is not in the range of 1 to 4, Daqarta will exit immediately with:

    'LPT value out of range.'

Most computer systems come with a single standard printer port, and if you need more than that you will have to install a separate board. All DOS systems can support ports LPT1 through LPT3 "naturally", without special software. The system BIOS keeps a record of the location of each LPT that it recognizes, and that record is consulted to validate the LPT value that you use here. If there is no entry for the LPT number you give (L:3 in this example), Daqarta exits with a message like:

 'LPT3 not recognized by BIOS.'
 'BIOS recognizes only LPT1 to LPT2.'
where the message will reflect actual LPT availability.

Problems may be due to adding a new printer port board and getting the jumpers or switches wrong. Most boards allow designation as LPT1 or LPT2. If you need to add LPT3, be sure the board allows it before you buy. Some boards allow LPT4 use, but not all systems support this. For example, IBM PS/2 systems use the LPT4 location in the BIOS data area for other purposes.

You can use the LTEST.EXE utility supplied with Daqarta to see the port addresses corresponding to each LPT, as read from the BIOS data area just like this driver does. A typical display would be:

       Printer Port assignments:
          LPT1: 0378h
          LPT2: 0000h
          LPT3: 0000h
          LPT4: 9FC0h
In this example, only LPT1 is installed, at address 378h. LPT2 and LPT3 are available, but LPT4 is clearly in use for something else. LPT ports are always assigned consecutively by the BIOS, so this can't be a hidden port. It's also beyond the highest possible port address of 3FFh.

Even if LTEST shows that the LPT4 location is available to install a new port, you may need to run special software (supplied with your port board) to make use of it... not all BIOSes will assign this automatically on start-up.


INPUT:

INPUT SOURCE:

The Thunder Board has only a single input, designated for microphone. This is the lower input jack, nearest the multi-pin MIDI / joystick connector. (The upper one near the thumbwheel is the output.) If you plug one of the standard mini-plug-to-dual phono cables into the input, only the white (Left) phono connector is connected to the input.


SENSITIVITY and AGC OPERATION:

The Thunder Board input has Automatic Gain Control (AGC) that can't be disabled. If an input signal rises above the AGC action threshold level, the AGC tries to reduce the signal down to that level. When this happens, there is thus no effective sensitivity calibration. The calibration factor for this driver assumes that input signals will be kept below the AGC action threshold.

CAUTION:

There is no indication when AGC threshold has been exceeded. Consult the table below and familiarize yourself with where this level appears on the screen at the relevant trace magnifications. It is only about one-third of the default full-scale magnification or less.
   AGC THRESHOLD TABLE:
   RMS          0-peak      peak-peak
   1.0 mV       1.4 mV      2.8 mV

The AGC can handle inputs up to 25 mV RMS, above which serious distortion begins.

The AGC action is not instantaneous. If the level suddenly increases after a long period at a low level, the AGC will take about 15 or 20 msec to reduce the gain. The initial part of the signal will thus be grossly distorted until the AGC catches up. The "release" from AGC action is much slower.

If you want to see the AGC action for yourself, connect one of the synthesizer outputs back to the Mic input. Set up a tone burst that lasts most of the trace... say 400 samples if you are using N = 512 samples. Set the thumbwheel so that the trace is as large as it can go without distortion.

If you want to see the AGC action for yourself, turn the thumbwheel way down (or use an external attenuator) and connect the OPL2 synthesizer output back to the input. Set up a tone burst that lasts most of the trace... say 400 samples if you are using N = 512 samples. Turn up the thumbwheel so that the trace is as large as it can go without distortion.

Now adjust the Level control and watch what happens. If you start off at a high level and suddenly reduce it, the trace will reduce and then slowly grow back up to the original size. Keep reducing the level until you no longer see the growth action. You might suppose that this is the AGC action threshold, but in reality the repeating tone bursts keep nudging the AGC so that it never really reaches maximum gain.

Next, hit the S-key to activate the Single Sweep option. The trace should look almost identical. After the sweep, the system will be in Pause mode, so there will be no tone bursts going to the input and the AGC will start to increase its gain as much as possible in a futile attempt to maintain its target level. Wait about 10 seconds and take another Single Sweep. Now you should see the first part of the tone burst at a higher level, maybe even distorted, then smoothly fading down to the prior level.

The action threshold is the level below which there is no change between a live trace and a sweep taken after many seconds, after the AGC has supplied all the gain that it can.

If, under some unusual circumstance you need to actually use the AGC to maintain a certain level when the signal varies, there is a way that may allow a measurement or at least an estimate of the true input signal level: If there is some low-level component of the signal that is NOT variable, such as background noise, it will also be affected by the AGC as it operates on the higher-level signal. So if the "constant" background appears larger, it means more gain has been used to bring the overall signal to the AGC level. You can thus use the background as an indication of the AGC gain. If you are going to set up an experiment specifically to use this idea, you could deliberately add a low level tone for this purpose. The tone should stand out clearly on a spectrum display.


COMPRESSION:

Even below the AGC threshold, the Thunder Board has a response which is compressive: Increasing or decreasing the input produces a lesser increase or decrease in the output. For example, if you start with a signal at the nominal AGC threshold of 1 mV RMS and cut it in half, you might expect that the trace will show a 50% reduction... but in fact it is only reduced by 40%, to 0.6 mV RMS. This compression becomes less with lower input levels, being nearly absent at about 50 microvolts.


INPUT CALIBRATION:

Note that you can use the G: parameter to provide custom calibration to allow for external gain or attenuation of the input signal before it gets to the signal input.

The simplest way to do this is to apply a calibration signal of known amplitude to the desired input on the desired range. A sine wave of 500 to 1000 Hz is best, since you can use FFT mode to view its magnitude directly on a cursor readout. (Very high or low frequencies run the risk of being unduly affected by the frequency response of the board.) You can use the built-in synthesizer to generate the sine wave, and measure its output with an external voltmeter that is accurate enough to serve as the calibration reference.

Adjust the sine frequency or the sample rate to get minimum spectral leakage "skirts". If you are simultaneously reading the sine amplitude with an external AC voltmeter, use the Daqarta RMS magnitude mode for direct comparison without calculations. Most meters are calibrated to read in RMS Volts with a sine wave input, even if they do not use true RMS for correct results with complex waveforms.

(This method only works with sine waves. If you must use a different waveform, you will need to measure peak-to-peak or zero-to-peak values while viewing the waveform directly. You can use the ZeroP option to read zero-to-peak from a single cursor readout without subtraction. Of course, you will also need a way to know the peak value by independent means. Remember that there may be waveform changes due to the frequency response of the board.)

Now divide the true (voltmeter) value by the cursor readout to find the factor that must be multiplied by the full-scale internal default values to make the readout match the meter:

 Default =  5.3411 mV Full-Scale
The product is the value to set via the G: parameter.


INPUT FREQUENCY RESPONSE:

The input is AC-coupled, which means it does not pass DC levels. The following measurements were made with an input signal of 1 mV RMS, with the reported values normalized to the 500 Hz reponse:
     Freq       Response
      20 Hz     -8.62 dB
      50        -7.47
     100        -2.04
     200        -0.04
     500         0.00 (REF)
    1000        -0.91
    2000        -2.04
    5000        -1.96 (Note slight peak)
    10000       -3.93
    12000       -5.14

Above the AGC action threshold, that circuit works to maintain a constant signal level to the board even in the event of falling frequency response. This makes it difficult to measure the true frequency response at high levels, but it is most likely the same. Of course, you will probably want to avoid levels where the AGC is working, since then there is no effective sensitivity calibration.


MEASURING INPUT FREQUENCY RESPONSE:

You will need a separate "known flat" sine wave oscillator, since the OPL3 synthesizer has its own response fall-off at low and high frequencies. Use the Y-log (Power Spectrum) mode to read dB directly. Set the Spectrum Averager to Peak mode, and set Sweeps to Continuous (1 or less).

For best frequency resolution, you may want to measure the low-frequency response separately. Use the lowest sample rate the board allows (3906 Hz) for low frequencies. Start with the input frequency at about 500 Hz. Now slowly adjust it down to zero and a low-frequency response curve will appear. If you move the frequency too quickly, you will get dips in the response curve. Just go back and fill them in by moving more slowly... the ability to do this is one of the advantages of Peak mode.

To plot the high frequency response, simply repeat the above frequency adjustment for the higher input frequencies. Be sure to set a higher sample rate after the above tests... select a rate typical of your anticipated use.


INPUT IMPEDANCE:

The input impedance varies with signal level from about 6800 ohms at levels below the AGC action threshold, to over 10000 ohms at much higher levels.


GO:

Questions? Comments? Contact us!

We respond to ALL inquiries, typically within 24 hrs.
INTERSTELLAR RESEARCH: Over 20 Years of Innovative Instrumentation
© Copyright 1999 - 2001 by Interstellar Research - tech@daqarta.com