1 puan yazan GN⁺ 2025-10-05 | 1 yorum | WhatsApp'ta paylaş
  • Kintex UltraScale+ FPGA kartını 200 dolara satın alıp geliştirme platformu olarak kullanmaya yönelik bir deney tanıtılıyor
  • Bu kart resmi dokümantasyon veya garanti olmadan satıldığından JTAG hata ayıklama ve ilk kurulumda zorluklar bulunuyor
  • OpenOCD ve Segger JLink kullanılarak bağımsız biçimde FPGA yapılandırma ve hata ayıklama ortamı kurma olasılığı araştırılıyor
  • Deneyin hedefleri arasında ikinci el FPGA'nın PCIe/Ethernet arayüzlerinin doğrulanması, pin diziliminin tespiti ve sistem izleme yer alıyor
  • Başlatma ve JTAG bağlantısı, scan chain'in anlaşılması, sıcaklık/voltaj izleme aşamalarına kadar adım adım süreçler ve sorun giderme deneyimleri derleniyor

Giriş

  • Yazar, büyük ölçekli projelerin prototiplenmesi için güçlü bir FPGA, özellikle de Xilinx Virtex ailesinden bir UltraScale+ istiyordu; ancak maliyet ve Vivado enterprise lisans yükü nedeniyle seçimini WebPack destekli Kintex UltraScale+ çiplerine (XCKU3P, XCKU5P) daralttı
  • Bu çipler de hobi düzeyini aşan LUT sayısı ve GTY transceiver'lar gibi yüksek özellikler sunuyor
  • En az 2 adet SFP+ ya da 1 adet QSFP, JTAG ve PCIe x8 veya üstü koşullarını sağlayan bir geliştirme kartı gerekiyordu; kendi tasarımını yapmak, Alinx ürünü satın almak ve ikinci el pazarı araştırmak arasında Ebay'de 200 dolara bir Alibaba Cloud hızlandırıcı FPGA kartı satın aldı
  • Satın alınan kart için hiçbir doküman desteği yoktu ve düzgün çalışıp çalışmadığı da bilinmiyordu; ancak düşük fiyata bir Kintex UltraScale+ kartını hackleme fikri cazip geldi

Hata Ayıklayıcı Zorlukları

  • Xilinx'in UG908 dokümanına göre FPGA'yı yapılandırmak/hata ayıklamak için önerilen JTAG probunun kullanılması yaygın olsa da, pahalı resmi prob yerine açık kaynak alternatifler (OpenOCD vb.) deneniyor
  • Xilinx'in resmi toolchain'inden (ILA vb.) vazgeçme karşılığında, JTAG USER register tabanlı kendi hata ayıklama mantığı geliştirilebiliyor
  • OpenOCD ağırlıklı olarak ARM/RISC-V için kullanılsa da, geniş probe desteği, JTAG işlemlerinde ayrıntılı kontrol ve SVF formatı desteği sayesinde FPGA'lar için de kullanılabiliyor
  • UltraScale+ serisi desteğine ilişkin dokümantasyon az olsa da, JTAG ve SVF standartları ile scan yapısı geçerliliğini koruyor

Genel Plan

  • Ebay'den ucuza alınan ikinci el FPGA kartını resmi destek olmadan açık kaynak/gayriresmî problarla (OpenOCD, JLink vb.) yapılandırıp geliştirme platformu olarak kullanmaya yönelik adım adım deney planı anlatılıyor
  • Her aşama, kartın çalıştığını doğrulama → JTAG hata ayıklayıcı bağlama → pin dizilimini bulma → bitstream aktarımı sırasıyla ilerliyor

1. Aşama - Kartın Çalıştığını Doğrulama

  • Flash bellek silinmemişse, önceki kullanıcının bitstream'i üzerinden PCIe endpoint tanımlaması veya SFP PHY Ethernet sinyali varlığıyla ilk işlev kontrolü yapılabiliyor

2. Aşama - JTAG Hata Ayıklayıcı Bağlantısı

  • JTAG arayüzü pin konumlarının, bağlı aygıt sayısının ve daisy chain durumunun belirlenmesi gerekiyor
  • FPGA'nın JTAG sistem register'ları (özellikle SYSMON) üzerinden sıcaklık/voltajın gerçek zamanlı izlenmesi de kullanılabiliyor; OpenOCD desteğinin genişlemesi umuluyor

3. Aşama - Pin Dizilimini Belirleme

  • Harici clock kaynağının türü/frekansı/bağlı olduğu pinler ile SFP ve PCIe'ye bağlı transceiver bilgileri gibi unsurların fiziksel devre analiziyle incelenmesi gerekiyor

4. Aşama - Bitstream Yazma

  • JTAG üzerinden geçici yapılandırma (Flash'ı by-pass ederek), OpenOCD virtex2 + pld sürücüsü veya Vivado'da üretilen SVF'nin yeniden oynatılması yöntemlerinin kullanılması planlanıyor
  • Vivado → SVF dönüşümünün tüm akışı da otomatikleştirilecek

Kartın Teslim Alınması ve İlk Testler

  • Alibaba Cloud hızlandırıcı kökenli Kintex UltraScale+ FPGA (XCKU3P-FFVB676) kartı ile SFP28 25G Huawei transceiver, OS2 patch kablosu gibi birlikte gelen parçalar teslim alındı
  • Kart biraz kullanılmış görünse de bileşenler ile PCIe/SFP durumu iyi

Bağımsız Güç Kontrolü

  • PCIe-USB adaptörüyle basit şekilde güç verilerek LED'ler ve donanım ısınması üzerinden ilk güç kontrolü yapıldı

PCIe Arayüzü Deneyi

  • Raspberry Pi 5'in PCIe Gen2.0 x1 harici arayüzü kullanılarak FPGA'nın (Gen3.0, x8 destekli) test edilmesi durumunda, geriye dönük uyumluluk sayesinde düzgün tanınması bekleniyor
  • Linux dmesg loglarında kart PCIe Bridge ve endpoint (Ethernet türü) olarak tanınıyor; özel vendor/device id tanımıyla işletim sistemi çakışmaları önleniyor
  • lspci -vvv komutuyla tüm PCIe aygıt durumu incelendiğinde, bu kartın Gen3.0 x8 desteği açıkça görünse de Pi ile gerçek bağlantıda bant genişliği/hızın Gen2.0 x1'e düştüğü görülüyor (Bridge sınırlaması ve fiziksel bağlantı kısıtları nedeniyle)
  • Böylece FPGA kartının PCIe arayüzünün düzgün çalıştığı doğrulanıyor

JTAG Arayüzü

  • Xilinx FPGA'lar JTAG ile dahili CMOS Configuration Latch (CCL) içeriğini SRAM tarzında güncelleyip yükleyebiliyor
  • Fiziksel kart üzerindeki JTAG arayüzü standart 4 hatlı (TCK/TMS/TDI/TDO) yapı ile güç/toprak sinyallerinden oluşuyor; reset ise Xilinx FSM üzerinden uygulanabiliyor
  • Gerçek pin dizilimi standarttan farklı olduğundan ayrı kablolama gerekiyor

Segger JLink Kullanımı

  • AMD'nin resmi JTAG programlayıcısı olmadan Segger JLink, OpenOCD ile birlikte kullanılıyor
  • JTAG yalnızca 4 GPIO ile kurulabildiği için doğaçlama deneyler için uygun
  • JLink → FPGA kartı arasındaki kablolama şeması veriliyor; breadboard jumper'ları ve uzun sinyal gecikmeleri dikkate alınarak TCK (clock) hızı 1~10MHz ile sınırlandırılıyor

OpenOCD Ortamı

  • OpenOCD, çeşitli probe ve kartları destekleyen açık kaynak bir on-chip hata ayıklayıcıdır
  • Standart SVF formatını destekler (Vivado ile entegre çalışabilir) ve devre yapısının açık kaynak olması sayesinde sorun çıktığında doğrudan analiz/patch yapmayı kolaylaştırır
  • En güncel OpenOCD (0.12.0+dev) ve JLink kütüphanesi doğrudan derlenerek kullanıldı

JTAG Scan Chain Doğrulaması ve IDCODE Kontrolü

  • Kart şeması bilinmezken OpenOCD'nin otomatik tarama işleviyle JTAG chain içindeki aygıtlar ve IDCODE'lar araştırıldı
  • Bu kartın Xilinx KU3P IDCODE'u (0x04a63093) ile eşleştiği doğrulandı
  • IR uzunluğu (komut register uzunluğu 6 bit) manuel olarak belirtilince de doğru algılama sağlandı
  • Sonuçta kartın JTAG scan chain yapısı çıkarıldı

SYSMON Sistem Monitörü

  • Xilinx'in eski nesillerinde XADC, UltraScale+ ailesinde ise sıcaklık/voltaj ölçümü için yerleşik SYSMON4 bulunuyor
  • OpenOCD varsayılan olarak SYSMON ile JTAG entegrasyonunu desteklemiyor, bu yüzden doğrudan ekleme yapılması gerekiyor
  • SYSMON (DRP) komut iletimi ve status register üzerinden sıcaklık/voltajı gerçek zamanlı okuma işlevi script ile hacklenebiliyor

Bu süreçlerin sonunda, resmi desteği olmayan eski bir Alibaba Cloud FPGA hızlandırıcı kartını düşük maliyetle edinip yalnızca açık kaynak araçlarla hata ayıklama ve kullanıma hazırlama temelinin (PCIe/JTAG arayüzü, sistem izleme) nasıl kurulduğuna dair deneyim kayda geçiriliyor

1 yorum

 
GN⁺ 2025-10-05
Hacker News görüşleri
  • Raspberry-PI V ile Lattice Certus-Pro NX "Versa" kartının PCIe arayüzünü test etmeyi denedim, gerçekten çok kullanışlı geldi Raspberry-PI V, en yeni masaüstü yazılımlarını (Microsoft Teams bile!) çalıştıracak kadar hızlı FPGA tasarımını canlı olarak demo edebildim ve konferans görüşmesi sırasında masaüstü ekranını paylaşabildim Tek üzücü nokta Broadcom'un SoC dokümantasyonunun yetersiz olması Intel ise NDA sürecinden geçince tüm çip dokümanlarını veriyordu; bu sayede Xeon Ivy Bridge üzerinde harika bir FPGA PCIe ortamı kurabilmiştim PCI yapılandırma register'larını kaydedip ardından FPGA'yı yeniden yapılandırıp register'ları tekrar programlayınca, sunucuyu yeniden başlatmadan ya da yeniden tarama (re-enumerate) yapmadan çip veri yolunda görünüyordu; bu çok rahattı İşin püf noktası, yeniden yapılandırma sırasında root complex bitlerini geçici olarak ayarlayarak PCIe hata algılamasını devre dışı bırakmaktı (O zamanlar Altera Stratix-IIgx kullanıyordum) Başka bir yöntem de olabilir diye bir referans bırakıyorum: Stack Overflow bağlantısı Genel olarak dokümantasyon iyi olduğunda, PCIe başlatma sürecindeki hata raporlaması çok faydalı oluyor

    • Gerçekten harika bir numara gibi görünüyor Benim durumumda Linux'ta PCIe ayarlarıyla uğraşırken defalarca sorun yaşamıştım Biz en sonunda Partial Reconfiguration kullandık; böylece PCIe kısmını olduğu gibi bırakıp yalnızca diğer kısımları yeniden yüklüyorduk Düzen ve alan rezervasyonu açısından bunun belirgin ödünleşmeleri vardı
  • Eğer FT2232H adaptörünüz varsa (ya da yoksa bir tane almanızı tavsiye ederim), bu adaptör Vivado ile kolayca uyumlu olacak şekilde flash'lanabiliyor Referans: Vivado FTDI Device Programming kılavuzu

    • Bizim şirkette FT2232H'den her zaman 20-30 adet stokta tutuluyor GPIO, I2C, SPI, parallel FIFO gibi çeşitli protokolleri desteklediği için gerçekten çok kullanışlı Ayrıca pyFTDI Python kütüphanesi de mükemmel

    • Bu adaptör başka bir projeden elimde kaldı ama FPGA tarafında hiç kullanmadım Vivado ile uyumlu olmasının pratikte tam olarak ne anlama geldiğini merak ediyorum AMD FPGA'ları yapılandırabiliyor mu, yoksa başka bir şey mi kastediliyor?

  • Alibaba'nın veritabanı alanında FPGA kümesiyle LSM compaction işini özel bir MySQL depolama motorunda ele aldığı yenilikçi çalışmayı hatırladım Referans: ilgili makale PDF RocksDB'ye kıyasla throughput ve gecikme büyük ölçüde iyileşmişti ve bazı iş yüklerinde bir seviye yukarı çıkıyordu Bu teknolojiyi hizmet olarak da sunmuşlardı ama sonunda geri çektiler Hâlâ kendi içlerinde kullanıp kullanmadıklarını bilmiyorum ama tekrarlayan veritabanı işleri için donanım hızlandırmadan yararlanan yerlerin bu kadar az olması bana şaşırtıcı gelmişti

    • AWS de birkaç yıl önce Redshift'te kendi donanım sorgu hızlandırıcısını kullanıyordu Referans: Redshift AQUA tanıtımı Son dönemde AWS'nin P&L tarafına daha çok odaklandığını görüyorum; bu yüzden bunun görünürlüğü ya da performans artışına etkisi hakkında pek bilgim yok
  • FPGA PCIe ya da PCI kartlarıyla ilgileniyorsanız, ikinci el Gidel kartlarından epey fazla var ProcSpark/ProcStar gibi çeşitli seriler mevcut Resmî yazılım proprietary ve FPGA sayısı fazla olduğu için Quartus'ta doğrudan kullanmak isterseniz pinout bulma süreci gerekiyor Ben devasa bir Stratix IV takılı bir kart edinmiştim Kintel UltraScale+ kartı gerçekten çok cezbedici; bu yüzden bu yazı beni oldukça etkiledi

    • Gidel'in HawkEye 20G-48'i için en üst seviye Verilog modülü ile Vivado .xdc dosyasını (pin map, timing constraint vb.) edindim Gidel'in SDK'sı yoktu Uzun vadeli projelerimden biri, iki tanesini 10 GbE ile bağlayıp PCIe TLP sniffer/middleman/device emulator yapmak Kalan 10 GbE portları ise host PC'ye snifflenmiş ve enjekte edilmiş TLP'leri taşımak için kullanılacak Aria 10 FPGA PCIe hard IP, hem root hem endpoint modunu destekliyor; bu yüzden Quartus IP modülü olmadan tamamen şeffaf yapmak gerekiyor 10 gigabit link üzerinden hızlı bir cihazın PCIe TLP'lerini geçirmek nasıl olur emin değilim ama fail0verflow 115200 baud UART ile bile TLP proxy yapmayı başarmıştı Gidel HawkEye 20G-48 referans bağlantısı fail0verflow sunum slaytları
  • Çin'deyseniz aynı ürün idlefish'te 480 yuan'a (yaklaşık 68 dolar) satılıyor İnanması zor derecede ucuz; ben de bizzat denemeyi düşünüyorum

  • Arka taraftaki SFP konektörünün pinout bilgisinin hâlâ çıkarılıp çıkarılmadığını bilmiyorum Eğer bu kısım dokümante edilirse ve PCI-e hatları da doğrulanırsa, bununla özel optik ağ ekipmanı yapmak eğlenceli olabilir diye düşünüyorum SFP transceiver'lar sadece girdiyi alıp çıktıya aktardığı için, PCIe backplane üzerinde ya da bağımsız olarak da ilginç özel optik sinyal cihazları yapılabilir

    • SFP konektörünün pinout bilgisi zaten pinout bölümünde var
  • FPGA'lerle sinir ağları ya da başka connectionist mimariler gerçekleştirilmiş örnekler bilen var mı? FPGA'lerin en ilginç yanı, "özel" çiplerin üniversiteler ya da bireyler için de ulaşılabilir olması Yapay zekanın LLM'lere odaklandığı bu dönemde, küçük grupların ya da bireylerin FPGA'lerle hayvan-benzeri bottom-up yapay zeka yaklaşımlarını denemesi için fırsat olduğunu düşünüyorum

    • FNAL'de LHC/CMS yüksek enerji fiziği deneylerinin sonuçları üzerinde çıkarım yapmak için FPGA tabanlı sinir ağları kullanılıyor Dinamik sistemleri mikrosaniye düzeyinde kontrol ettikleri örnekler de var Referanslar: HLS4ML CERN IRIS-HEP sunum slaytları PDF Deploying tinyML on FPGAs Whitepaper NeurIPS ML4PhysicalSciences örnek PDF

    • "FPGA'lerle sinir ağı gerçekleştirmek" derken kastedilen şeyin, donanım hızlandırıcı olarak çıkarım çalıştırmak mı yoksa tüm ağı (ağırlıklar dâhil) doğrudan FPGA mimarisine sentezlemek mi olduğunu merak ediyorum Her durumda da FPGA tamamen keyfi mantık uygulamaz; yazılım sentezinin sonucu olarak sınırlı bloklardan yararlanan bir yapıdır LLM'ler gibi yüksek kapasiteli, yüksek bant genişlikli bellek gerektiren işler için uygun değil FPGA'ye yüksek hızlı bellek bağlamak mümkün olsa da, bugün bu kullanım için GPU'lar çok daha üstün

    • differentiable logic gate networks'e bakmak ilginç olabilir

    • Referans makale: arXiv:2404.10076

    • Neden bu kadar çok downvote aldığını merak ediyorum Benim anladığım kadarıyla yapay zeka için çok fazla RAM ve hızlı RAM gerekiyor; bu yüzden FPGA pek uygun değil FPGA'lere hızlı RAM bağlayacak pinler var ama kart tasarımı ve katman izleri çok karmaşık hâle geliyor Bu yüzden ekran kartları çok daha uygun

  • Bu yapay zeka çılgınlığına bakınca şahsen şunu düşünüyorum

    • uzun vadede çıkarım donanımında giriş engelinin çok büyük olmayacağını düşünüyorum (eğitim tarafı için emin değilim)
    • modelin kendisi kolayca ikame edilebilen bir commodity
    • ürünlerin piyasaya çıkış hızı beklediğimden daha yavaş; ChatGPT'nin çıkışından bu yana 3 yıl geçti ama hâlâ istediğim hizmeti bulamadım (belge yükleyip soru-cevap yapma)
    • Belge yükleyip soru sorabilmekten tam olarak ne kastettiğini merak ediyorum Gemini'nin NotebookLM'i ya da Gem gibi servisler zaten bunu desteklemiyor mu? (diğer sağlayıcıların alternatiflerini çok bilmiyorum)
  • eBay'de hâlâ çok sayıda stok var eBay bağlantısı GPIO'ların header vb. şeklinde dışarı alınmadığı anlaşılıyor; kullanışlı proje fikri olan varsa öneri duymak isterim

    • Gerçekten çok iyi haber Covid döneminde bu tür ucuz donanımlar tamamen ortadan kaybolmuştu; şimdi yeniden 200 dolara Kintex alınabiliyor Küçüklüğümden beri bu tür kartlara çok ilgiliydim ve 2x SFP ile PCIe bana NetFPGA projesini hatırlatıyor Bu kart o kullanım için mükemmel görünüyor
  • "Kartla birlikte bir seyahat çantası geliyor" kısmı dikkatimi çekti Neden öyle olduğunu merak ediyorum; veri merkezinde bu kartı sık sık çıkarıp taşıyorlar mı, yoksa eBay satıcısı koruma amaçlı mı ekledi?

    • Sahaya götürülsün diye konmuş Çünkü bu bir Field Programmable Gate Array, yani sahada programlanabilir (şaka)