|
Information |
Sound Blaster 128
vendor |
Creative Labs
|
product |
Sound Blaster 128, SB128 |
interface |
PCI |
duplex |
full |
channels |
2 |
resolution |
16 bits |
max rate |
48 Ksample/sec |
chipset |
ES1371 CT5880 rev 2 |
codec |
SigmaTel STAC9721,23
|
operating system |
Fedora core3 Linux x86 2.6.11-1 |
driver |
ens1371 ALSA 1.0.9rc2 |
buffer size |
input 64 KB, output 64 KB |
test date |
Aug 28 2005 |
notes |
The card has 2 ADCs and 4 DACs.
With an external mixer program do both of the following:
Mute the IEC958 option or the left channel will have an incredible amount of
noise. Set the "Vol" mixer slider to the maximum value for optimal
distortion measurements.
Set the Tone Generator's digital gain to -5 or -7 dB for 0.34 bits more of ENOB.
|
This card is part of the Full Duplex DAQ comparison
survey.
|
|
|
Sample Rate |
The sample rate on DAQ cards is not a fixed absolute constant. Like time,
it fluctuates, and it is difficult to measure accurately. Sometimes there
are relationships between the input and output sample rates that can reveal
interesting details about the inner working machinery.
The following table of measurements use a technique described in the
sample rate stability application
note. The rate column is the sample rate value that the collection
hardware is programmed to. The in/out rate and in/out error
columns are absolute measurements of the ADC / DAC clock. The
loop error column uses a tone generator loopback method for a high
accuracy measurement of the relative difference between the ADC and the DAC
clocks. The three error
PPM columns are theoretically
related by the formula: "in_error - out_error = loop_error"
rate |
in rate |
out rate |
in error |
out error |
loop error |
4000 |
4000.2531 |
4000.2535 |
+63.2750 PPM |
+63.3750 PPM |
-487.313 PPM |
5510 |
5510.3515 |
5510.3560 |
+63.7931 PPM |
+64.6098 PPM |
-0.8580 PPM |
8000 |
8000.5110 |
8000.5106 |
+63.8750 PPM |
+63.8250 PPM |
-486.176 PPM |
11025 |
11025.735 |
11025.667 |
+66.6667 PPM |
+60.4989 PPM |
+6.1350 PPM |
12000 |
12000.769 |
12000.769 |
+64.0833 PPM |
+64.0833 PPM |
+0.0000 PPM |
16000 |
16001.027 |
16001.027 |
+64.1875 PPM |
+64.1875 PPM |
-488.054 PPM |
22050 |
22051.639 |
22051.438 |
+74.3311 PPM |
+65.2154 PPM |
+8.9920 PPM |
24000 |
24001.538 |
24001.538 |
+64.0833 PPM |
+64.0833 PPM |
+0.0000 PPM |
32000 |
32002.078 |
32002.044 |
+64.9375 PPM |
+63.8750 PPM |
+0.9510 PPM |
44100 |
44103.923 |
44102.906 |
+88.9569 PPM |
+65.8957 PPM |
+23.0156 PPM |
48000 |
48003.136 |
48003.136 |
+65.3333 PPM |
+65.3333 PPM |
+0.0000 PPM |
The 12000, 24000, and 48000 sample rates all have a +0.0000 PPM
loop error measurement. This means that the ADC and DAC clocks
are in lockstep at those particular sample rates.
The 4000, 8000, and 16000 sample rates all have a -488 PPM loop error
measurement. This is a lot of error and it indicates that a common
error mechanism is at work for all three of those rates. It is
interesting that the in error and the out error measurements are
equal which suggests a locked fragment clock. This is in conflict with
the -488 PPM loop error measurement. The significance of this will
be analyzed below.
The { -0.8580 +6.1350 +8.9920 +23.0156 } PPM progression for the 5510,
11025, 22050, and 44100 sample rates is unusual. The difference between
the in error and the out error are almost exactly equal to the
loop error measurement. This means that the resampling circuitry
is driving the fragment clocks but the input and output sides are not
symmetrical. The significance of this is unknown. Below is the
44100 rate plot that shows two parallel trajectories.
|
|
|
Frequency Domain
|
The sound card's input and output jacks are connected with a short external
cable and run in full duplex mode. This is a loopback test and baudline's
tone generator is the signal source. Distortion, noise floor, filter
response, and inter channel crosstalk are the frequency domain measurements of
interest in this section.
The signal test sources are a pure sine wave, a linear sine sweep, and
WGN. The sine wave is
used for the distortions and crosstalk measurements. The linear sine
sweep and WGN are used for the filter characterization measurement.
Both are an application of the
swept sine vs. WGN technique
and are equivalent measures of the frequency response.
Since spectral performance is a function of sample rate, each of the sound
card's native rates will be tested. The highest sample rate is usually
the cleanest and this is advantageous because it allows the isolated testing
of the ADC and the
DAC. The matched,
source, and sink sample rate combinations are described below.
matched
The input and output sample rates are the same. This combination tests
the performance of both the ADC and the DAC in a matched mode of
operation. The linear sine sweep signal in the left spectrogram display
and the WGN (orange) in the Average window characterize the in-band filter
response. The sine wave (green) in the Average window is used for
distortion and crosstalk measurements. The sine leakage (purple) is used
for crosstalk measurement
source
The sample rate of the input (sink) is the card's highest clean rate.
This combination tests the performance of the DAC. The linear sine sweep
signal in the middle spectrogram display characterizes the DAC filter
response. The position of the pass-band and the stop-band filter
transition is defined by the Nyquist frequency of the DAC. The noise
floor (purple) is the Average collection of a silent channel.
sink
The sample rate of the output (source) is the card's highest clean rate.
This combination tests the performance of the ADC. The linear sine sweep
signal in the rightmost spectrogram display and the orange curve in the Average
window below it characterize the ADC filter response. The position of
both the pass-band and the stop-band filter transition is defined by time in
the spectrogram and by folded frequency in the Average window. The orange Average curve represents the pass-band while the cyan curve is a folded
representation of the stop-band ADC filter response. The noise floor
(purple) is the Average collection of a silent channel.
The naming convention for the columns below is (DAC -> ADC) where DAC
represents the source sample rate and ADC represents the sink sample
rate.
matched
|
source (DAC)
|
sink (ADC)
|
4000 -> 4000
|
4000 -> 48000
|
48000 -> 4000
|
|
|
|
|
|
|
The wideband pulses in both the 4000 matched and source spectrogram sweeps
have a 0.512 second period (2048 samples).
5510 -> 5510
|
5510 -> 48000
|
48000 -> 5510
|
|
|
|
|
|
|
8000 -> 8000
|
8000 -> 48000
|
48000 -> 8000
|
|
|
|
|
|
|
The wideband pulses in both the 8000 matched and source spectrogram sweeps
have a 0.256 second period (2048 samples).
11025 -> 11025
|
11025 -> 48000
|
48000 -> 11025
|
|
|
|
|
|
|
12000 -> 12000
|
12000 -> 48000
|
48000 -> 12000
|
|
|
|
|
|
|
16000 -> 16000
|
16000 -> 48000
|
48000 -> 16000
|
|
|
|
|
|
|
The wideband pulses in both the 16000 matched and source spectrogram sweeps
have a 0.128 second period (2048 samples).
22050 -> 22050
|
22050 -> 48000
|
48000 -> 22050
|
|
|
|
|
|
|
24000 -> 24000
|
24000 -> 48000
|
48000 -> 24000
|
|
|
|
|
|
|
32000 -> 32000
|
32000 -> 48000
|
48000 -> 32000
|
|
|
|
|
|
|
44100 -> 44100
|
44100 -> 48000
|
48000 -> 44100
|
|
|
|
|
|
|
The 48000 filter response has a 2 dB peak-to-peak ripple. The
propagation of this ripple is visible in the filter response in many of the
standard sample rates.
distortion
The following table of measurements were made using the technique described in
the sine distortion application
note. It is a full duplex test that uses a loopback of the tone generator
to measure the various distortion parameters. The stereo crosstalk
column is a measure of channel leakage that uses a sine wave channel and a
silent channel as the signal sources.
rate |
SNR |
THD |
SINAD |
ENOB |
SFDR |
crosstalk |
|
4000 |
+72.48 dB |
-77.64 dB |
+71.32 dB |
+11.554 bits |
+74.42 dB |
-82.70 dB |
* |
5510 |
+88.21 dB |
-85.13 dB |
+83.39 dB |
+13.558 bits |
+85.89 dB |
-83.13 dB |
8000 |
+90.55 dB |
-inf.00 dB |
+90.55 dB |
+14.747 bits |
+90.55 dB |
-83.44 dB |
* |
11025 |
+64.19 dB |
-84.20 dB |
+64.15 dB |
+10.363 bits |
+64.88 dB |
-82.98 dB |
12000 |
+88.21 dB |
-85.90 dB |
+83.89 dB |
+13.642 bits |
+87.36 dB |
-82.84 dB |
16000 |
+81.33 dB |
-inf.00 dB |
+81.33 dB |
+13.217 bits |
+81.33 dB |
-82.50 dB |
* |
22050 |
+78.41 dB |
-86.54 dB |
+77.79 dB |
+12.628 bits |
+84.70 dB |
-81.04 dB |
24000 |
+86.14 dB |
-85.76 dB |
+82.93 dB |
+13.482 bits |
+88.89 dB |
-80.88 dB |
32000 |
+52.13 dB |
-85.01 dB |
+52.13 dB |
+8.365 bits |
+52.13 dB |
-79.59 dB |
44100 |
+74.75 dB |
-80.01 dB |
+73.62 dB |
+11.935 bits |
+80.78 dB |
-78.19 dB |
48000 |
+78.88 dB |
-80.66 dB |
+76.67 dB |
+12.442 bits |
+87.61 dB |
-77.51 dB |
The "*" symbol signifies the distortion metrics for that particular sample rate
are invalid due to spectral damage caused by wideband noise pulses.
The spectral performance of the Sound Blaster 128 card can be reduced into
four distinct groups of common behavior. Three of the groupings are
sample rate multiples.
4000, 8000, 16000
There is something seriously wrong with the 4000, 8000, and 16000 sample
rates. The wideband pulses in both the matched and source
spectrogram sweeps of all three of those rates have a 2048 sample
periodicity. The -inf.000 dB THD measurement is a sign that something is
wrong. This spectral damage makes all of the distortion measurements
invalid. The sink (ADC) spectrogram sweep is free of these wideband
pulses so the problem is with the source (DAC).
5510, 11025, 22050, 44100
The spectrogram sweep of the 5510, 11025, 22050, 44100 sample rates show strong
crosshatch aliasing distortion. The aliased harmonics are a function of
frequency and look like they are being reflected off of the spectrogram
edges. This sampling flaw hurts the ENOB measurement by a couple bits and
it indicates a decimation filter or a buffer index problem. All four
sample rates have good DAC side filters but the 5510 and 11025 rates suffer
from shallow ADC side filters. The 22050 and 44100 rates have better
signal quality than the 5510 and 11025 rates but the distortion measurements do
not accurately represent this. While the crosshatch aliasing is very
dramatic in appearance it's effect is not as bad as the folded aliasing due to
poor filter roll-off.
32000
The spectrogram sweep of the 32000 sample rate has a distinct symmetrical X
shape. The noise floor is very clean except for the mirror image of the
fundamental. The X pattern aliasing is stronger on the sink side likely
due to the very interesting ADC filter response shape. This a filter or
buffer index problem and it probably is related to the 48000 / 32000 = 1.5
decimation ratio.
12000, 24000, 48000
The 12000, 24000, and 48000 sample rates have very clean looking spectrogram
sweeps. The harmonic distortion is very minimal and are less than the
distortion metrics portray. The sink ADC filters of the 12000 and 24000
sample rates have shallow filters and folded aliasing is a problem. The
playback performance side for all three rates is quite good.
observation
The 44100 and 48000 sample rates have almost identical distortion values yet
the 44100 spectrogram sweep suffers from folded crosshatch artifacts.
This example demonstrates the fact that a static tone doesn't not excite all of
the distortion modes. It makes the case that SNR and THD should be looked
at and plotted as function of frequency.
|
|
|
Quantization |
A white Gaussian noise signal source was generated and captured in full
duplex loopback fashion at each of the standard sample rates. The
Histogram plots below
show a unique sample distribution that is dependent on sample rate.
4000, 5510, 8000, 12000, 24000
spur cadence = { none }
11025
spur cadence = { 1, 2, ... }
16000
spur cadence = { 1, 4, ... }
22050
spur cadence = { 1, 3, 1, 2, ...}
32000
spur cadence = { 1, 1, 2, 1, ... }
44100
spur cadence = { 1, 6, ... }
48000
spur cadence = { 1, 1, ... }
Quantization errors cause spectral noise and harmonics. The relationship
between the quantization spurs and the distortion metrics will be analyzed
below. The periodicity column is calculated from the spur cadence.
The amp column is the amplitude of the spur above the base curve at the 0x0000
sample.
rate |
spur cadence |
periodicity |
amp |
ENOB |
loop error |
4000 |
{ none } |
0 |
0% |
invalid |
-487.313 PPM |
5510 |
{ none } |
0 |
0% |
+13.558 bits |
-0.8580 PPM |
8000 |
{ none } |
0 |
0% |
invalid |
-486.176 PPM |
11025 |
{ 1, 2, ... } |
3 |
16% |
+10.363 bits |
+6.1350 PPM |
12000 |
{ none } |
0 |
0% |
+13.642 bits |
+0.0000 PPM |
16000 |
{ 1, 4, ... } |
5 |
25% |
invalid |
-488.054 PPM |
22050 |
{ 1, 3, 1, 2, ... } |
3, 4, and 7 |
35% |
+12.628 bits |
+8.9920 PPM |
24000 |
{ none } |
0 |
0% |
+13.482 bits |
+0.0000 PPM |
32000 |
{ 1, 1, 2, 1, ... } |
2, 3, and 5 |
50% |
+8.365 bits |
+0.9510 PPM |
44100 |
{ 1, 6, ... } |
7 |
50% |
+11.935 bits |
+23.0156 PPM |
48000 |
{ 1, 1, ... } |
2 |
5% |
+12.442 bits |
+0.0000 PPM |
There is a loose correlation at the 5510, 12000, and 24000 sample rates.
Those rates happen to have the three best ENOB measurements, no cadence spurs,
and low or zero PPM loop error values. Unfortunately this is not a
definitive result because two of the invalid ENOB measurements also have no
cadence spurs. From looking at the data it does seem clear that having a
smooth histogram coupled with a low PPM loop error helps the ENOB value.
The cause of these histogram spurs is probably due to numeric rounding
errors inside the ES1371 chipset. Either: there are not
enough mathematical bits of precision, the rounding logic is faulty, or
integer truncation is being done instead of rounding.
|
|
|
Channel Delay |
A sine wave signal was generated and captured in full duplex loopback
mode. The time domain response was observed with the
Waveform window where
the green curve represents the left channel and the purple curve represents
the right channel. A magnified view makes the spacing easier to
see. Two different sample delay behaviors are shown below but the actual
transition is gradual. Almost zero delay at the 4000 sample rate which
slowly increases to about half a sample delay at 48000.
Slightly more that zero sample delay between the channels.
A half sample delay between the channels.
This inter channel delay will cause minor timing problems with stereo
signals. Errors will be encountered while decoding
quadrature
signals for example. For the most part this delay will be imperceptible.
|
|
|
Analysis |
The 4000, 8000, and 16000 sample rates suffer from severe wideband noise
bursts that cause a great deal of spectral distortion. This damage to
the spectrum invalidates all of the distortion measurements. The
periodicity helper bars
were used to make very accurate measurements of the duration between the
wideband noise pulses. For all three sample rates the period of spectral
pulse repetition works out to be 2048 samples (2^11). All three sample
rates also have a loop error measurement of approximately -488
PPM. An interesting mathematical observation is that 2048 / 2049 =
-488.04295 PPM. This looks like a 1 sample slip and it indicates a
problem with the buffer index logic. So, when using the Sound Blaster 128
card it is best to avoid the 4000, 8000, and 16000 sample rates.
More than half of the sample rates with the SB128 card have a unique
sample quantization signature. Histogram smoothness was seen to have a
strong influence on ENOB quality but a lack of spurs by itself is not a
guarantee of quality.
The SB128 card has a very minimal inter channel sample delay. This delay
decreases as the sample rate decreases. The delay likely is generated
high in the processing chain and propagates down since it is strongest at 48000.
|
|
|
Conclusion |
Recording is clean at all of the standard sample rates but only the 16000,
22050, 44100, and 48000 rates have reasonable ADC filter rejection
curves. The higher input error PPM measurements along with the crosshatch
aliasing at 22050 and 44100 may make recording at these sample rates
undesirable.
Playback at all of the standard rates except 4000, 8000, and 16000 is fairly
clean. The strong crosshatch and X aliasing at 5510, 11025, 22050, 32000,
and 44100 may be undesirable. Only audio playback at 12000, 24000, and
48000 is recommended.
For clean full duplex recording and playback with the Sound Blaster 128 card
only the 48000 sample rate is recommended.
The performance of the SB128 very similar to the
Sound Blaster 16 PCI. Both cards use
the Creative Labs ES1371 chipset. The SB128 has slightly better
performance (+0.32 bits) that is likely due to a different codec chip with
slightly better 48000 filter ripple. The SB16 PCI also has a two sample
inter channel delay.
|
|
|
|
|