Skip to content

Yeni yazı: Sabit Nokta Aritmetik — FPU'suz Cortex-M0'da Q15 FIR Filtresi#114

Open
Mavrikant wants to merge 1 commit into
masterfrom
post/2026-06-04-sabit-nokta-cortex-m0-q15-fir
Open

Yeni yazı: Sabit Nokta Aritmetik — FPU'suz Cortex-M0'da Q15 FIR Filtresi#114
Mavrikant wants to merge 1 commit into
masterfrom
post/2026-06-04-sabit-nokta-cortex-m0-q15-fir

Conversation

@Mavrikant

Copy link
Copy Markdown
Owner

Konu

Sabit Nokta Aritmetik: FPU'suz Cortex-M0'da Q15 FIR Filtresi — Q-format
sabit nokta aritmetik, ARM Cortex-M0/M3/M4 ISA farkları, ve 32-tap FIR
filtresinin Q15 ile soft-float karşılaştırması.

Dosya: _posts/2026-06-04-sabit-nokta-cortex-m0-q15-fir.md (~3100 kelime)
Araştırma notu: agent/research/2026-06-04-sabit-nokta-cortex-m0-q15-fir.md

Neden bu konu seçildi (Bölüm 6)

  • İlgili: Gömülü sistem mühendisliği, DSP — yazarın çalışma alanı içinde.
  • İlgi çekici: Çarpıcı bir kanca var — soft-float ve Q15 arasında ~100x
    fark, hiçbir Türkçe kaynakta bu somutlukla ölçülmüş değil.
  • İşlenmemiş: Yayında ve açık PR'larda Q-format/sabit nokta DSP yok.
    Mevcut Expand denormalize numbers and FTZ/DAZ section in float post #50 (Float FTZ/DAZ) IEEE 754 davranışı, Yeni yazı: volatile Yetmediğinde — Zynq-7000 Üzerinde C11 _Atomic, SCU ve Bellek Bariyerleri #100 (volatile/_Atomic)
    eşzamanlılık — Q15 saf integer DSP, ayrı alt-alan.
  • Değerli: Cortex-M0 ile çalışan herkesin bir noktada karşılaşacağı bir
    problem; doğru çözüm pratik mühendislik faydası sağlar.
  • Kalıcı: ARM Cortex-M0 ISA sabit; Q-format konvansiyonu 30+ yıllık.
  • Gizlilik-güvenli: Tüm bilgiler kamuya açık ARM dokümanları ve Apache 2.0
    CMSIS-DSP kaynağından.

Derinlik öğesi (Bölüm 7)

Assembly inspection + cycle benchmark.

  • Aynı Q15 MAC C kodu Cortex-M0 (Armv6-M), M3 (Armv7-M), M4 (Armv7E-M DSP)
    için arm-none-eabi-gcc ile derlenip gerçek assembly çıktısı gösterildi.
  • 32-tap FIR için cycle hesabı: M0'da ~12 cycle/tap (LDR maliyeti dahil),
    soft-float'ta ~300 cycle/MAC.
  • 48 kHz örnekleme @ 48 MHz Cortex-M0 için CPU yüzdesi karşılaştırması.

Bu konu neden internette zor bulunuyor? (Bölüm 8)

  • Türkçe boşluk: Q-format hakkında Türkçe pratik kaynak neredeyse yok.
  • İngilizce kaynaklar dağınık: TI SLAA329 (2007), CMSIS-DSP başlık
    dosyaları, ARM blogları — sentezlenmiş tek bir referans yok.
  • Cortex-M0'a özgü kısıt analizi yok: SSAT/SMLABB/SMLAL'ın yokluğunun
    pratik sonuçları (yazılım saturasyonu, MULS'un düşük 32 bit kısıtı) tek
    bir yazıda hiçbir yerde ele alınmamış.
  • "3 cycle vs 300 cycle" benchmark'ı tek bir yerde ölçülmemiş.

Kullanılan kaynaklar

  1. ARM, Cortex-M0 Devices Generic User Guide (DUI 0497A).
  2. ARM, Cortex-M0 Technical Reference Manual (DDI 0432) — multiplier seçenekleri.
  3. ARM, Cortex-M4 Devices Generic User Guide (DUI 0553B).
  4. ARM, Armv7-M Architecture Reference Manual (DDI 0403E).
  5. TI, Fixed-Point Arithmetic Application Report SLAA329.
  6. ARM, CMSIS-DSP Library Documentation + GitHub (Apache 2.0).
  7. Wikipedia, "Q (number format)".
  8. ARM Community Blog, Fixed-Point Math in Embedded Software.
  9. GCC gcc-arm-none-eabi belgeleri, libgcc soft-float rutinleri.

Öz-eleştiri özeti (Bölüm 13)

  • ✅ Hiçbir yazı veya açık PR ile içerik/anlam çakışması yok.
  • ✅ Son 4 yazıdan farklı alt-alan (önceki: navigasyon, sistem, RF-DSP teorisi,
    gömülü/SoC). Bu yazı: gömülü/DSP-implementation.
  • ✅ Bölüm 8'in "neden zor bulunuyor" testi tatmin edici şekilde yanıtlandı.
  • ✅ Derinlik öğesi somut (gerçek arm-none-eabi-gcc assembly çıktısı,
    cycle hesabı dökümante edildi).
  • ✅ Her olgusal iddia doğrulanabilir (ISA seviyeleri, MULS cycle sayısı,
    Cortex-M3 SSAT, Cortex-M4 DSP eklentisi).
  • ✅ Kaynaklar gerçek, erişilebilir, gerçekten kullanıldı.
  • ✅ Hiçbir proje-spesifik / proprietary / ITAR/EAR bilgi yok.
  • ✅ Ön bilgi bloğu mevcut yazılarla aynı şemada (Kalman, Bandpass postlarıyla
    birebir).
  • ✅ Türkçe + İngilizce alt-başlık var; ton birinci tekil şahıs sahadan.
  • ✅ Anti-pattern yok; AI klişeleri ("delve", "günümüzün hızla değişen
    dünyasında" vb.) yok.

Critic fazında yapılan düzeltmeler

  1. "Cortex-M0+ small multiplier" yanlış iddiası düzeltildi — small multiplier
    yalnızca M0'ın sentez zamanı seçeneği, M0+ daima 1-cycle multiplier.
  2. C-derlenmiş FIR'in cycle/tap tahmini düzeltildi: M0 LDR 2 cycle olduğundan
    ~9 değil ~12 cycle/tap; toplam ~360 değil ~450 cycle/örnek; CPU yükü
    %36 değil %45.

İnsan inceleyicinin dikkatine


Bu PR otomatik bir ajan tarafından açılmıştır. Merge kararı yalnızca insana
aittir. Ajan kendi PR'ını merge/onay/close etmez.

🤖 Generated with Claude Code

Konu: Q-format (Q15/Q31) sabit nokta aritmetik ve FPU'suz Cortex-M0 üzerinde
gerçekleştirilen 32-tap FIR filtresi.

Derinlik öğesi (CLAUDE-task Bölüm 7): assembly inspection + cycle benchmark.
Aynı Q15 MAC kodu Cortex-M0 (Armv6-M), M3 (Armv7-M) ve M4 (Armv7E-M, DSP) için
arm-none-eabi-gcc ile derlenip gerçek assembly çıktıları yan yana gösteriliyor.
Sonra 32-tap FIR için Q15 vs libgcc soft-float cycle karşılaştırması yapılıyor
(~3 cycle/MAC vs ~300 cycle/MAC, ~100x oran).

Bölümler:
- Q-format notasyonu (Qm.n, Q15 LSB ≈ 30.5 µ)
- Q15 × Q15 = Q2.30 anatomisi
- Cortex-M0 MULS sınırları (32×32→32 düşük; SSAT/SMLABB/SMLAL yok)
- M3/M4 karşılaştırma (barrel shifter, DSP eklentisi)
- Soft-float maliyeti analizi
- Saturasyon (−1 × −1 köşesi)
- Yuvarlama biası (round-to-nearest: +(1<<14))
- Headroom ve accumulator (L1 norm)
- 32-tap FIR tam örnek (Python coefficient generator + C kodu + assembly)
- CMSIS-DSP SMLALD karşılaştırması
- Pratik tavsiyeler ve WCET

Novelty (Bölüm 8): Q-format Türkçe içerikte boş; Cortex-M0 özelinde "MAC 3
cycle vs soft-float ~300 cycle" tek bir benchmark olarak hiçbir yerde
ölçülmemiş. TI SLAA329 ve CMSIS-DSP başlık dosyalarına dağınık halde gömülü.

Kaynaklar: ARM DUI 0497 (M0), DUI 0553 (M4), DDI 0432 (M0 TRM), DDI 0403
(Armv7-M ARM), TI SLAA329, CMSIS-DSP dokümantasyon ve GitHub kaynağı,
Wikipedia Q (number format), gcc-arm-none-eabi.

Gizlilik (Bölüm 11): tüm bilgiler kamuya açık ARM dokümanları ve Apache 2.0
CMSIS-DSP'den. Proje/müşteri/iç süreç referansı yok.

Defteri (agent/topics.md) güncellendi: yayınlanan 4 yeni post, 17 açık PR,
seçim gerekçesi ve "neden bu konu az bulunuyor" notları eklendi.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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