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.
A CFC class is a property of the processing chain, not of the transducer. The same accelerometer can legitimately be reported as CFC 60 for a sled pulse and CFC 600 for a head channel — provided the raw data were sampled fast enough and the filter is documented. Never infer the class from the sensor model alone.

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.

Forward–backward filtering squares the magnitude response, so a "CFC 600" channel processed this way has an effective −3 dB point near 600 Hz only if the single-pass design is compensated. Many toolchains apply the four-pole design twice and report the result as CFC 600; the peak will be slightly lower than a single-pass result. State the convention in the data report — this is the single most common source of disagreement between two analysts processing the same raw file.

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).

Transducer accelerometer Digitizer fs ≥ 10·fc CFC class table SAE J211 / ISO 6487 channel → class 4-pole Butterworth zero-phase apply fc = class number Reported metric HIC, chest a, pulse peak, displacement verify vs tolerance Magnitude tolerance (illustrative) 0 dB f / fc Permitted classes (common assignments) CFC 60 CFC 180 CFC 600 CFC 1000 1800+ body / sled · chest · head HIC · high-band · special

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.