4. CFC (Channel Frequency Class) standards overview
Crash signals are inherently wideband: a frontal accelerometer pulse contains the low-frequency vehicle deceleration ramp (roughly 0–50 Hz), the structural ringing of the body-in-white (100–400 Hz), and sensor or bracket resonance that can extend well past 1 kHz. Before any injury criterion, occupant displacement, or pulse-shape metric can be computed, the analyst must decide which part of that spectrum is physically meaningful for the quantity being reported. Channel Frequency Class (CFC) is the standardized answer to that question. A CFC code does not describe the sensor; it describes the low-pass filter that must be applied to the digitized channel before the data are used.
Two documents define the practice in almost all crash laboratories: SAE J211 (Recommended Practice, parts 1 and 2) and ISO 6487 (Road vehicles — Measurement techniques in impact tests — Instrumentation). They are technically aligned on filter class definitions and differ mainly in scope, editorial detail, and the phase-correction guidance they provide. Understanding what each standard actually specifies — and what it deliberately leaves to the test engineer — is the prerequisite for selecting a CFC defensibly.
What a CFC class actually specifies
A CFC class is a four-pole (two-stage, each stage second-order) Butterworth low-pass filter defined by its −3 dB cutoff frequency fc. The class number equals the cutoff in hertz: CFC 60 has fc = 60 Hz, CFC 180 has fc = 180 Hz, and so on. The standards fix three things for each class:
- Magnitude response tolerance — the filter's gain must lie inside a defined band around the ideal Butterworth curve across a specified frequency range, typically verified at discrete points such as 0.1·fc, 0.5·fc, fc, 2·fc, and 5·fc.
- Phase response tolerance — the phase lag must match the ideal four-pole Butterworth phase within a stated tolerance, which is what makes the filter's time-domain distortion predictable.
- Channel class data — the permitted amplitude and phase error envelope, plus the requirement that the filter be applied in a way that does not introduce a net time shift in the reported signal.
The practical consequence of the four-pole Butterworth choice is a moderate roll-off (24 dB/octave) with a maximally flat passband and no ripple. It is gentle enough that the filtered pulse keeps its shape, and steep enough that content well above fc is suppressed. The standards also define the CFC class table — the set of permitted classes — which is where most selection decisions are actually made.
The permitted CFC classes and their typical assignments
Both SAE J211 and ISO 6487 recognize the same family of classes. The table below summarizes the classes in common use and the measurement channels to which they are conventionally applied. The assignments are conventions, not mandates; the governing test procedure or the customer's data-requirements document always takes precedence.
| CFC class | −3 dB cutoff | Typical channel assignment | Rationale |
|---|---|---|---|
| CFC 60 | 60 Hz | Vehicle body / sled acceleration, occupant compartment pulse | Preserves the rigid-body deceleration ramp; rejects structural ringing above ~60 Hz. |
| CFC 180 | 180 Hz | Chest acceleration, pelvis acceleration, some head channels | Retains the higher-frequency content that drives chest deflection and viscous criteria. |
| CFC 600 | 600 Hz | Head acceleration (HIC), knee, femur, Hybrid III head CG | HIC is sensitive to short-duration peaks; 600 Hz preserves them without sensor noise. |
| CFC 1000 | 1000 Hz | High-bandwidth head and component channels, some pedestrian impacts | Used where the test procedure demands the full sensor bandwidth. |
| CFC 1800 / 3000 | 1800 / 3000 Hz | Special studies, component-level or high-rate instrumentation | Rarely used for injury criteria; requires sampling well above 2·fc. |
Two constraints follow directly from the class definitions and are frequently violated in practice. First, the sampling rate must be high enough that the digital implementation of the analog prototype is faithful — a working rule is at least 10× fc, and the standards' tolerance verification implicitly assumes adequate oversampling. Second, the filter must be applied without a net time shift: the standards require that the reported signal not be delayed relative to the physical event, which is why phase correction (forward–backward filtering) is the normal implementation rather than a single causal pass.
SAE J211 versus ISO 6487: what differs in practice
The two documents are harmonized on the filter mathematics and the class table, so a CFC 180 filter built to one is acceptable under the other. The differences that matter to an engineer are organizational:
- Scope. SAE J211 is written as a recommended practice for impact testing generally and is split into Part 1 (instrumentation) and Part 2 (data processing). ISO 6487 is a road-vehicle standard and is typically invoked through a test procedure (ECE R94/R95, Euro NCAP, FMVSS 208 protocols) that names the CFC per channel.
- Phase correction. SAE J211 explicitly discusses zero-phase (forward–backward) filtering and the resulting effective magnitude response being the square of the single-pass response. ISO 6487 addresses phase in terms of the permitted phase error envelope. In both cases the analyst must document whether the reported channel is single-pass or zero-phase, because the two produce different peak values.
- Verification. Both require the filter to be verified against the tolerance envelope, but the acceptance points and the way the envelope is tabulated differ slightly; a filter validated to one standard's table should be re-checked against the other if the test report must cite both.
Selecting and applying a CFC in a processing chain
The selection workflow is short but must be explicit. Start from the governing procedure: identify the channel (e.g., "Hybrid III head CG resultant acceleration") and read the CFC it mandates. If the procedure is silent, fall back to the conventional assignment in the table above and record the justification. Then confirm the raw data support the class: check the sample rate against the 10× rule and inspect the raw spectrum for content near fc that would be attenuated. Finally, implement the filter as a four-pole Butterworth and apply it zero-phase.
A reproducible implementation in Python, using the standard second-order-section form, looks like this:
import numpy as np
from scipy import signal
def cfc_filter(x, fs, fc, zero_phase=True):
# Four-pole Butterworth = two cascaded 2nd-order sections
sos = signal.butter(4, fc, btype='low', fs=fs, output='sos')
if zero_phase:
# forward-backward: effective magnitude is |H|^2, net phase = 0
y = signal.sosfiltfilt(sos, x)
else:
y = signal.sosfilt(sos, x)
return y
# Example: head CG resultant, CFC 600, sampled at 10 kHz
fs = 10000.0
fc = 600.0
a_filt = cfc_filter(a_raw, fs, fc, zero_phase=True)
peak_g = np.max(np.abs(a_filt)) / 9.80665
Three verification checks should accompany any such run. First, confirm the filter's magnitude at fc is −3 dB within tolerance by feeding a swept sine or white noise and comparing to the ideal Butterworth curve. Second, confirm zero net delay by filtering a known asymmetric pulse and checking that the peak time is unchanged relative to the raw peak. Third, confirm the reported peak is stable under a modest change in sample rate (e.g., decimating to 5 kHz and re-filtering); a large shift indicates the class is too close to the sampling limit.
How the classes relate across the processing chain
The figure below places the CFC decision inside the full channel chain, from transducer through digitizer, class selection, filter implementation, and the reported metric. It makes visible the two points where the standard actually constrains the engineer: the class table (which class is permitted for which channel) and the filter tolerance envelope (whether the implemented filter is acceptable).
The chain view clarifies a subtle but important point: the CFC class is chosen before the filter is implemented, and the filter is then verified against the tolerance envelope. If verification fails — for example, because the sample rate was too low and the digital filter's response deviates near fc — the correct remedy is to re-acquire or re-sample the data, not to relax the class. Downgrading from CFC 600 to CFC 180 to "make the filter pass" changes the reported HIC and is not a valid processing decision.
Documentation and common pitfalls
Because the standards constrain the filter but not the analyst's bookkeeping, most CFC-related disputes are traceability failures rather than mathematics failures. A defensible data report states, for each channel: the CFC class and the document that mandated it; the sample rate of the raw data; the filter order and type (four-pole Butterworth); whether the application was single-pass or zero-phase; and the verification result against the tolerance envelope. Where SAE J211 and ISO 6487 are both cited, note which tolerance table was used.
The recurring pitfalls are worth naming explicitly. Applying a CFC class lower than the procedure requires silently removes real signal content and biases injury metrics low. Applying a higher class than required admits sensor resonance and biases peaks high. Using a causal single-pass filter introduces a time lag that shifts peak timing and can corrupt time-alignment between channels. And re-filtering already-filtered data compounds the attenuation — always filter from the raw, unfiltered channel. Each of these is detectable by the verification checks described above, which is why the checks belong in the routine processing script rather than in an after-the-fact review.
With the class definitions, the permitted assignments, and the verification obligations established, the next decision — which class is appropriate for a specific channel and test type — can be made on documented grounds rather than by convention alone.