Skip to content

Conversation

KrxGu
Copy link

@KrxGu KrxGu commented Aug 15, 2025

Kickoff: GR3 → GR4 Digital

First slice adds LFSR kernels using the processOne() + start()/stop() pattern (no heavy classes, no custom ctors). Design follows KISS / C++23 STL.


Proposed layout (feedback welcome)

blocks/digital/include/digital/
  core/       # Lfsr, Crc, Scrambler, Constellation (data+strategy), Enums
  mapping/    # chunks→symbols, constellation enc/soft-dec, diff, slicers, map
  timing/     # MM clock, symbol sync, Costas/FLL/PFB
  measure/    # SNR/EVM/probes
  equalizer/  # CMA/LMS/NLMS + LE/DFE
  ofdm/       # CP, serializer, alloc, eq, chan-est, sync
  packet/     # header formats, hdr gen/parse, sink, demux
  misc/       # correlators, burst shaper, protocol/HDLC
  compat/     # 3.x shims + using-aliases

Rationale

  • Single surface: verify kernels by testing processOne() directly.
  • Small headers, STL-first: easy to reason about; easy to SIMD/bulk-extend later.
  • No inheritance/vtables: lowers per-sample overhead.

KrxGu and others added 7 commits August 9, 2025 02:02
- Unified LFSR implementation supporting both Fibonacci and Galois variants
- Merges GNU Radio 3.x lfsr.h and glfsr.h into modern C++20 template
- Supports scramble/descramble operations for multiplicative scrambling
- Complete unit test suite with Boost.UT
- Backward compatible type aliases for GR 3.x compatibility
- Constexpr support for compile-time evaluation
- Part of P0 Foundation wave for digital block porting

Signed-off-by: Krish Gupta <[email protected]>
…Galois scrambler/descrambler; tests

Signed-off-by: KrxGu <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant