LM-LZS-D, FPGA ve SoC tasarımları için kayıpsız bir açma (decompression) bloğudur.
Motor, LZ4 ve Snappy stream'lerini donanımda açar; 64 kB geçmiş penceresi ve saat başına sekiz bayta kadar açılmış veri üreten bir veri yolu vardır. LZ4 frame formatının tamamını, Snappy ham stream formatını ve chunk başına maskelenmiş CRC-32C'siyle Snappy framing formatını kabul eder. Format tespiti otomatiktir.
Blok, üreticiden bağımsız SystemVerilog olarak teslim edilir ve AMD, Altera ve Efinix cihazlarında aynı kaynaktan derlenir. AMBA AXI arayüzleri ve bir register haritası içerir; hedef platforma hızlı entegrasyon için ANSI C sürücüleri sağlanır.
Ölçülmüş FPGA sonuçları
Ürün top'ı, bağlam dışı (out of context) ve hedef saatte kısıtlanmış olarak. AMD ve Efinix LUT, Altera ALM raporlar; ikisi hiçbir zaman birleştirilmez.
| Cihaz | Konfigürasyon | Mantık | FF | Bellek | DSP | Fmax |
|---|---|---|---|---|---|---|
| Altera Agilex 3A3CW135BM16AE6S · quartus-pro 26.1.1 | DP_W=64, LZ4_EN=1, SNAPPY_EN=1 | 4.527 ALM | 2.905 | 512 Kb M20K | 0 | 165,1 MHzhedef 165 |
| AMD Kintex UltraScale+xcku3p-ffva676-1-e · vivado 2026.1 | DP_W=64, LZ4_EN=1, SNAPPY_EN=1 | 6.309 LUT | 2.024 | 16 BRAM | 0 | 254,2 MHzhedef 250 |
| AMD Kintex UltraScale+xcku3p-ffva676-1-e · vivado 2026.1 | DP_W=64, LZ4_EN=1, SNAPPY_EN=1, SNAPPY_FRAMING_EN=1 | 7.208 LUT | 2.139 | 16 BRAM | 0 | 250,7 MHzhedef 250 |
| Efinix Titanium Ti375Ti375N1156 · efinity 2026.1 | DP_W=64, LZ4_EN=1, SNAPPY_EN=1 | 12.646 LUT | 5.540 | 64 RAM | 1 | 232,1 MHzhedef 220 |
Özellikler
Formatlar
- LZ4 frame formatı: magic, descriptor, blok boyutları, isteğe bağlı içerik boyutu, başlık ve içerik checksum'ları, EndMark, atlanabilir ve legacy frame'ler
- Snappy ham stream: giriş varint'i, literal ve copy elemanları
- Snappy framing: stream tanımlayıcısı, dört ayrılmış aralığın tamamı dahil chunk tablosunun tamamı ve chunk başına maskelenmiş CRC-32C
- Otomatik format tespiti ya da register ile tek bir formata sabitleme
Checksum'lar
- LZ4 başlık, blok ve içerik checksum'ları için xxHash-32
- Snappy framing chunk'ları için maskelenmiş CRC-32C
Motor
- Saat başına 8 bayta kadar açılmış veri üreten yapılandırılabilir veri yolu
- Hizasız kopyaları tam hızda yapmak için bayt bazında bank'lanmış, 64 kB'a kadar geçmiş penceresi
- Geçmiş penceresinde isteğe bağlı SECDED hata düzeltme
Hata raporlama
- Hatalar bir sınıf ve bir kod taşır: yalnızca bir denetimin başarısız olduğunu değil, hangisinin olduğunu söyler
- Hata bayrağı register'ın yanı sıra çıkış stream'inde de taşınır
- Sözlüklü bir frame, olmayan bir sözlükle çözülmek yerine adıyla reddedilir
Entegrasyon
- AMBA AXI4-Lite kontrol, AXI4-Stream giriş ve çıkış
- Birbirinden bağımsız giriş ve çıkış genişlikleri
- İki teslim top'ı: eksiksiz AXI ürünü ya da kendi yapınız için yalın açıcı
- ANSI C sürücüsü, UVM RAL, IP-XACT, SystemRDL register tanımı
Uygulamalar
- Depolama ve dosya sistemi açma işlemini donanıma aktarma
- Ağ ve RPC payload açma
- Log ve telemetri verisi alımı
- Firmware ve konfigürasyon imajı açma
- Veritabanı sayfa ve sütun açma
Blok diyagramı
Arayüzler
| Arayüz | Tür | Genişlik | Taşıdığı |
|---|---|---|---|
s_axil | AXI4-Lite slave | 32 bit veri, 7 bit adres | yetenekler, kontrol, komut, durum, hata çifti, sayaçlar |
s_axis | AXI4-Stream sink | IN_W, tkeep, tlast | sıkıştırılmış stream |
m_axis | AXI4-Stream source | OUT_W, tkeep, tlast | açılmış stream |
m_axis_tuser[0] | source | 1 bit | veriyle birlikte taşınan hata bayrağı |
irq | seviye | 1 bit | tamamlanma ve hata olayları |
Hata bayrağı çıkış stream'inde taşınır. Bozuk bir stream tespit eden bir açıcı
genellikle onun bir kısmını çoktan çıkışa vermiştir; yalnızca bir register okuyan bir
tüketici, az önce aldığı baytların doğru olup olmadığını bilmek için vuruşlar arasında
polling yapmak zorunda kalırdı. tuser[0], alıcının başarısız bir stream'i bus
erişimine gerek kalmadan ve yarış koşulu olmadan atmasını sağlar.
Hata raporlama
Hatalar bir sınıf ve bir kod taşır; böylece bir log satırı başarısız olan denetimi adıyla söyler:
| Sınıf | Kodlar arasında |
|---|---|
| coding | tanınan bir stream değil, hatalı sürüm, ayrılmış alan dolu, hatalı Snappy girişi, fazladan baytlar |
| size | bildirilen boyut imkânsız, blok boyutu uyuşmazlığı, içerik boyutu uyuşmazlığı |
| crc | LZ4 başlık / blok / içerik checksum'ı, Snappy framing chunk CRC-32C'si |
| truncation | stream bir elemanın ortasında bitti |
| unsupported | sözlük istendi |
Bant genişliği
throughput = DP_W bytes x f_clk for copy-dominated streams
DP_W saat başına 8 bayta kadar yapılandırılabilir. Ulaşılan hız, stream'deki literal
ve eşleşme karışımına bağlıdır; cnt_in, cnt_out ve cnt_cycles sayesinde host,
datasheet'teki bir değere güvenmek yerine hızı kendi trafiği üzerinde ölçebilir.
Konfigürasyon
| Parametre | Tür | Etkisi |
|---|---|---|
DP_W | elaboration | saat başına açılmış bayt, 8'e kadar |
IN_W, OUT_W | elaboration | birbirinden bağımsız stream genişlikleri |
HIST_KB | elaboration | 64 kB'a kadar geçmiş penceresi boyutu |
LZ4_EN, SNAPPY_EN | elaboration | derlenen formatlar |
SNAPPY_FRAMING_EN | elaboration | Snappy framing katmanı |
CHECKSUM_EN, ECC_EN | elaboration | checksum doğrulama, pencere SECDED |
| format seçimi | çalışma zamanı | otomatik ya da sabitlenmiş |
Kaynaklar ve performans
Her hedef cihaz için kaynak kullanımı ve maksimum saat frekansı bağlam dışında (out of context) ölçülür ve bu sayfadaki ölçülmüş sonuçlarda hedef bazında yayımlanır. AMD ve Efinix satırları LUT, Altera satırları ALM raporlar; ikisi hiçbir zaman birleştirilmez.
Teslimat içeriği
| Öğe | İçerik |
|---|---|
| RTL | parametrik, üreticiden bağımsız SystemVerilog |
| Model | bit doğruluğunda C++ modeli |
| Register'lar | SystemRDL kaynağı ve üretilmiş altı dışa aktarım |
| Doğrulama | UVM RAL, formal property wrapper'ları, derlem ve vektör sürücüleri |
| Yazılım | üretilmiş başlık dosyası ve JSON ile ANSI C referans sürücüsü |
| Paketleme | IP-XACT, IEEE 1685-2022 |
| Gerçekleme | her FPGA üreticisi için çalıştırılabilir akış script'i, dosya listesi, SDC |
| Dokümantasyon | entegrasyon kılavuzu |