|
SUPPORT
FAQs
Baudrate-Calculation
PCI 
Calculation of Baudrates on VScom PCI-Cards
VScom
110H,200H,210H,400H,410H,800H, 100L,110L,200L,210L,400L,800L PCI
Wechsel zur deutschsprachigen Version ...
Problem:
One question asked again and again is about supported baudrates. In most
cases the customer wants to know, if a special baudrate is supported, which
is required by certain devices. Since there are more than 60000 baudrates
supported, there is no use in enumerating them in a list. Instead here are
instructions to calculate the required parameters for realisation. If such a
configuration can be found, the requested baudrate is supported. Otherwise
the baudrate can not be realised.
To make things easy, there is a Program
for DOS. This also operates in DOS-boxes of all Windows Versions as
well as in OS/2. Even not tested, it should also operate correct in the
DOS-Emulations of various operating systems. Just enter the requested
baudrate, and the result is the best matching configuration. If the achieved
baudrate deviation is less than 2%, a reliable data transmission is assured.
Calculation:
Maximum speed:
The maximum speed with PCI-cards from VScom normally is 921600 Baud.
On most cards this can be reduced to the standard value 115200 Baud, by
setting a jumper. Some of the cards offer more intermediate values as
460800 Baud or 230400 Baud. By the way, this also applies to
ISA-cards from VScom.
This maximum speed is a hardware option. the only way to change it is by
Hardware (jumper block). There is no option in the driver to change the
maximum speed. This value is based on the crystal frequency, divided by 16.
Special case of H-Series:
The UARTs of type 16C950 on the VScom H-Series cards offer a programmable
prescaler. This divides the basic maximum speed by a value from 1 to
32, in steps/parts of one eight. More precise, the range is from 1.0 to
31.875 in steps of 0.125, these are 248 possible settings. The basic maximum
speed is divided by this value, the result is the basis for all following
calculations. The driver automatically selects the optimal value. It is not
required to set a certain configuration manually.
Since the UARTs of type 16C550 on VScom L-Series and other cards do not
have this prescaler, for calculation purposes a value of 1 is used in all
cases.
Configuration by Division:
In all UARTs the available maximum Baudrate is reduced by a Divider. I.e.
the value is divided by a number ranging from 1 to 65535 (a value of
16-bit). The result is the achieved Baudrate in reality. So this explains
the more than 60000 possible Baudrates of the top paragraph. In the
following calculations the maximum Baudrate is named B
(for Base), the target speed is T, the divisor is D
and the realised speed is named as S.
To check, if a certain Baudrate is technically possible, one must find
the required configuration for that speed. In the first step B
is divided by T, yielding the Divisor D.
In many situations D is not an integer number. It is required to round it up
and down, yielding divisors D1 and D2.
The next step in calculation is to divide the maximum speed B by D
(or D1 and D2). This results in the
achievable speed S (S1 and S2).
These results have to be compared with T. If the deviation
of one of the results is less than 2%, T is a possible
configuration.
D = B / T |
|
(calculate the divisor) |
S = B / D |
|
(calculate the speed) |
E = 100 * (S - T) / T |
|
(deviation in percent) |
In the case of the UARTs type 16C950 (on H-series cards) the calculation
must be done for all possible prescaler values from 1 to 32..
Of course the driver performs all of these calculations. And also the
check for the optimum value for D. The Program SPEED-H+L
performs the same calculations, including the display of the deviation
(absolute and relative).
Fictitious calculation example:
Maximum speed is 921600 Baud. The target speed is
33600 Baud.
D = B / T |
|
D = 921600 / 33600 = 27,43 |
|
Rounding required. D1 = 27, D2 = 28 |
S1 = B / D1 |
|
S1 = 921600 / 27 = 34133,33 |
|
|
S2 = B / D2 |
|
S2 = 921600 / 28 = 32914,29 |
|
|
E1 = 100 * (S1 - T) / T |
|
E1 = 100 * (34133,33 - 33600) / 33600 = 1,59% |
|
Result acceptable |
E2 = 100 * (S2 - T) / T |
|
E2 = 100 * (32914,29 - 33600) / 33600 = -2,04% |
|
Result not acceptable |
33600 Baud can be realised. The deviation in speed of 1,6%
does not prevent a successful transmission.
|