AFH
/ˌeɪ ɛf ˈeɪtʃ/
n. "Dynamic channel blacklist adaptation for FHSS systems avoiding interfered frequencies in real-time."
AFH, short for Adaptive Frequency Hopping, monitors channel quality during FHSS operation and removes "bad" channels from the hop sequence—Bluetooth masters classify 1/3 of 79 channels as unusable (PER>threshold) then broadcasts reduced map (20-79 channels) via baseband packet, forcing synchronized slaves to mirror avoidance. Essential for 2.4GHz ISM coexistence with WiFi, where fixed WLAN channels create interference islands amid pseudorandom hopping.
Key characteristics of AFH include: Channel Classification RSSI/PER monitoring tags channels "bad" (used/noisy) vs "good" (unused/clean); Map Exchange master broadcasts 10-octet channel map every connection event; Hop Remapping LFSR reseeds across reduced N_channels (20-79); AFH Disable backwards compatibility with legacy slaves; Channel Assessment RSSI histograms + packet error rate tracking.
Conceptual example of AFH usage:
/* Bluetooth AFH channel map exchange */
#define NUM_CHANNELS 79
#define BAD_CHANNEL_THRESHOLD 0x20 // PER > 32/128 pkts
uint8_t channel_map; // 79 bits packed
uint8_t good_channels = 79;
uint16_t bad_channel_timer[NUM_CHANNELS];
void afh_channel_assessment(uint8_t ch) {
if (packet_error_count[ch] > BAD_CHANNEL_THRESHOLD) {
channel_map[ch/8] &= ~(1 << (ch%8)); // Mark bad
good_channels--;
}
}
void afh_map_update() {
// Master → slave baseband packet every 32 slots
l2cap_afh_packet(channel_map, good_channels);
// Slave syncs map, reseeds hop selection kernel
regenerate_hop_sequence(channel_map);
// Clear assessment counters
memset(bad_channel_timer, 0, sizeof(bad_channel_timer));
}Conceptually, AFH transforms blind FHSS into interference-aware hopping—Bluetooth piconets probe packet error rates across 2.4GHz then collaboratively blacklist WiFi-occupied channels (1,6,11), shrinking hop table from 79→20 clean channels. Periodic map exchange maintains synchronization during TDMA slots; contrasts static WiFi channels by continuous adaptation, enabling robust PAN links where traditional FHSS fails amid spectrum congestion.
Time Division Multiple Access
/ˌtiː diː ɛm ˈeɪ/
n. "Multiple access technique allocating time slots to users sharing single frequency channel unlike FDMA subcarriers."
TDMA, short for Time Division Multiple Access, divides shared radio channel into sequential time slots assigned to multiple stations, enabling simultaneous voice/data transmission across single carrier via precise synchronization—base station broadcasts frame timing while mobiles adjust transmit timing based on propagation delay. Classic 2G GSM uses 8-slot TDMA frames (4.615ms) with 200kHz carriers supporting 8 simultaneous calls, contrasting FHSS constant hopping by fixed-channel slotting within each hop.
Key characteristics of TDMA include: Fixed/Virtual Slot Allocation 8 slots/frame (GSM) or dynamic OFDMA RUs (WiFi 6); Frame Synchronization via beacon/reference burst aligning mobile clocks; Guard Periods prevent slot overlap from propagation/timing errors; Burst Transmission GMSK/8PSK packets fill 156.25 bits/slot; Timing Advance compensates round-trip delay (max 68 chips GSM).
Conceptual example of TDMA usage:
/* GSM TDMA frame structure - 8 slots x 4.615ms */
#define FRAME_MS 4.615
#define SLOT_MS 0.577
#define BITS_PER_SLOT 156
#define GUARD_BITS 8.25
typedef struct {
uint8_t slot_id; // 0-7
uint16_t timing_advance; // chips (0-63)
uint8_t burst_type; // Normal/Access/SCH
} tdma_slot;
void gsm_transmit_slot(tdma_slot *s) {
// Timing advance: delay TX by 2 * propagation_distance/c
delay_us(s->timing_advance * 3.69);
// Burst format: training sequence + data + tail bits
rf_transmit_gmsk(
tail_bits,
training_seq,
data[s->slot_id],
tail_bits,
guard_period
);
// Next slot @ 577us - slot_id wraps 0-7
}Conceptually, TDMA arbitrates channel contention by time-slicing—base stations dictate frame timing while mobiles advance timing to align "in the air," enabling 8x voice capacity over analog AMPS. Modern LTE TDD combines TDMA principles with OFDMA subcarrier allocation; Bluetooth piconets use master-slave TDMA within FHSS hops, where guard times absorb T/R switching unlike continuous SerDes links requiring CTLE always-on.
TDD
/ˌtiː diː ˈdiː/
n. "Single-frequency duplexing alternating uplink/downlink time slots unlike FDD paired spectrum."
TDD, short for Time Division Duplexing, transmits uplink and downlink over identical frequency channel by partitioning time into alternating transmit/receive slots (e.g., Bluetooth 625μs master/slave slots), enabling bidirectional communication without separate bands. Contrasts FHSS constant hopping by fixed-channel TDD within each hop, with guard times preventing TX-to-RX bleed—powers asymmetric traffic like LTE TDD (3:1 DL:UL) and WiFi 6 OFDMA resource units.
Key characteristics of TDD include: Single Frequency shared UL/DL band halves spectrum needs vs FDD; Dynamic Slot Allocation adjusts UL:DL ratio (WiMAX 3:1→1:3); Guard Periods prevent TX/RX switching transients; Frame Synchronization master dictates slot timing; Asymmetric Efficiency suits web browsing (80% DL) unlike voice FDD.
Conceptual example of TDD usage:
/* Bluetooth Classic TDD master/slave slot timing */
#define SLOT_DURATION_US 625
#define GUARD_TIME_US 150 // TX→RX ramp
volatile uint32_t system_clock;
uint8_t is_master = 1;
void tdd_frame() {
// Master TX slot
if (is_master) {
rf_transmit_gfsk(tx_packet, packet_len);
delay_us(SLOT_DURATION_US - GUARD_TIME_US);
rf_switch_to_rx(); // T/R switch
delay_us(GUARD_TIME_US);
// Slave RX→TX response
if (rf_receive(rx_packet, &rx_len, 400)) {
process_rx_packet();
}
} else {
// Slave RX slot
rf_switch_to_rx();
if (rf_receive(rx_packet, &rx_len, 400)) {
rf_transmit_gfsk(tx_packet, rx_len);
}
}
system_clock += SLOT_DURATION_US;
}Conceptually, TDD slices time axis into master TX/slave RX alternation on fixed carrier—Bluetooth piconets synchronize via master's clock while LTE eNodeB broadcasts SFN (System Frame Number) dictating dynamic UL:DL via RRC signaling. Guard periods absorb PA ramp/LO settling unlike FDD duplexers; WiFi 6 TDD OFDMA assigns RUs per slot serving IoT asymmetry where PAN sensors upload sparingly versus streaming DL.
FHSS
/ˌɛf eɪtʃ ɛs ɛs/
n. "Pseudo-random carrier frequency switching spreading narrowband signal across wide spectrum for Bluetooth anti-jamming."
FHSS, short for Frequency-Hopping Spread Spectrum, transmits data bursts across rapidly changing carrier frequencies (1600 hops/sec in Bluetooth) following a PN sequence known to TX/RX, minimizing narrowband interference impact since each hop duration (~625μs) sees only fraction of total energy. Contrasts WiFi DSSS by occupying full channel briefly vs spreading chip sequence continuously, enabling multiple piconets sharing 2.4GHz ISM band with low mutual interference.
Key characteristics of FHSS include: Pseudo-Random Hop Sequence generated via LFSR across 79 x 1MHz channels (Bluetooth Classic); Fast Hop Rate 1600 hops/sec (400ms period/79 channels); Adaptive FHSS blacklists interfered channels; Short Dwell Time 625μs/classic slot limits jammer effectiveness; CDMA Capability multiple transmitters share band via unique hop patterns.
Conceptual example of FHSS usage:
/* Bluetooth Classic FHSS hop sequence generator */
#define NUM_CHANNELS 79
#define HOP_PERIOD 625 // microseconds
uint8_t hop_sequence[NUM_CHANNELS];
uint16_t clock; // 12.5ms native + 625us slots
uint8_t current_channel;
void generate_bluetooth_hop_seq(uint16_t clk_28) {
// Native clock → 5-bit channel select via permutation
uint8_t page = (clk_28 >> 7) & 0x1F; // Page hop bits
uint8_t inquiry = (clk_28 >> 3) & 0x1F; // Inquiry bits
current_channel = permute(page ^ inquiry ^ clk_28);
set_rf_channel(current_channel); // Synth tune 2402 + ch MHz
}
void transmit_slot() {
// 625us dwell: transmit GFSK packet
transmit_gfsk_packet(data_buffer, 366); // 366us max
delay_us(625); // Slot time
generate_bluetooth_hop_seq(++clock); // Next hop
}Conceptually, FHSS evades interference by transmitting brief packets across wide spectrum—Bluetooth piconets hop pseudorandomly while AFH detects/avoid busy channels, ensuring reliable PAN links amid WiFi 2.4GHz congestion. Military origins (Hedy Lamarr torpedo guidance) evolved to civilian WPANs where hop synchrony via master clock maintains TDD timing; contrasts SerDes fixed carriers requiring CTLE equalization, with spectrum analyzers revealing FHSS as impulsive wideband noise versus OFDM comb lines.