FPGA-SoC'de PS ve PL Mimarisi

/ Ecem Uçar / FPGA Tasarım Mühendisi
#FPGA#SoC#ZynqUltraScale+#AXI#DMA#DDR
FPGA-SoC'de PS ve PL Mimarisi

FPGA-SoC platformlarında bir işi işlemcinin mi yoksa FPGA’in mi yapması bir tercih değil, mimari kararıdır. Çünkü elinizdeki çip yalnızca bir FPGA değil: bir ARM işlemci sistemi (PS) ile programlanabilir mantık (PL) aynı silikonda oturuyor ve aralarındaki veri yolunu siz kuruyorsunuz.

Kağıt üzerinde bölüşüm kolay görünüyor: “hızlı olan PL’e, kolay olan PS’e”. Gerçek projede ise bu ayrım gecikmeyi, bant genişliğini, CPU yükünü ve sistemin ne kadar büyüyebileceğini doğrudan belirliyor. Yanlış tarafta duran tek bir blok bütün zinciri yavaşlatabiliyor.

Bu yazıda FPGA üzerinde geliştirdiğimiz radar odaklı mimariyi örnek alarak üç şeyi anlatıyoruz: işi hangi kurala göre böldük, veriyi ADC’den DDR4’e nasıl taşıdık ve hangi AXI arabirimini neden seçtik.

FPGA-SoC klasik FPGA’den farklı mıdır?

Klasik bir FPGA tasarımında her şey mantık üzerinde kurulur. Kullanıcı arayüzü, ağ haberleşmesi veya dosya sistemi gerekiyorsa hepsini RTL ile yazmanız gerekir. Bu, “çıktıyı Ethernet üzerinden gönder” gibi bir işi haftalara yayabilir.

FPGA-SoC’de denklem değişir. PS tarafında Linux çalışır: TCP/IP yığını, SSH, dosya sistemi, sürücü altyapısı ve C/C++ uygulama katmanı hazır gelir. PL tarafı ise kendi güçlü olduğu işe odaklanır: paralel hesaplama, deterministik zamanlama, yüksek hızlı arayüzler, saat hassasiyetinde veri işleme.

Gerçek hayatta sonuç, aynı işlevi iki farklı maliyetle yazabiliyorsunuz. Radar çıktısını ağa göndermek PS tarafında birkaç yüz satır soket kodu aynı işi PL’de MAC ve TCP FSM ile kurmak başlı başına bir alt proje oluyor. Buna karşılık gelen her örneğe sabit gecikmeyle windowing uygulamak PL’de doğal, PS’te ise işletim sistemi kesintileri yüzünden garanti edilemez.

Klasik FPGA vs FPGA SoC Klasik FPGA vs FPGA SoC

PS ve PL Arasındaki İş Bölümü

Radar uygulamalarında sensörlerden gelen veri akışı oldukça yüksektir. Bu nedenle tüm işlemleri yalnızca ARM işlemciler üzerinde gerçekleştirmek verimli bir yaklaşım değildir. FPGA-SoC mimarisinin en önemli avantajlarından biri, görevleri Processing System (PS) ve Programmable Logic (PL) arasında doğru şekilde dağıtabilmesidir.

Radar projemizde görev paylaşımını aşağıdaki şekilde planladık:

Processing System (PS)Programmable Logic (PL)
YOCTO tabanlı işletim sistemi ve sistem servisleriRadar akışının gerçek zamanlı, örnek başına işlenmesi
PL bitstream’inin yüklenmesi ve konfigürasyonuAXI4-Stream tabanlı sinyal işleme zinciri
Ethernet / TCP-IP ve diğer haberleşme arayüzleriAXI DMA ile DDR4’e yüksek hızlı transfer
C/C++ kullanıcı uygulaması (iz çıkarma, raporlama)FIFO’lar ile akış tamponlama ve hız uyumu
Bellek yönetimi, sürücüler, uzaktan güncellemeÖzel donanım hızlandırıcılar (Custom IP)
Donanım bloklarının AXI4-Lite ile kontrolüDeterministik zamanlama ve paralel işlem

Kararı verirken tek bir kural uyguladık:

Bir iş zamanlama garantisi gerektiriyorsa veya örnek başına çalışıyorsa PL’de kalır.
Karar veriyorsa, yönetiyorsa ya da dış dünyayla konuşuyorsa PS’e taşınır.

Veri Akışı Nasıl Tasarlandı?

Projede temel hedeflerden biri yüksek hızlı radar verisini mümkün olduğunca CPU’ya yük bindirmeden belleğe aktarabilmekti. İzlenen veri yolu aşağıdaki gibiydi:

Radar Veri Akışı Radar Veri Akışı

Bu mimaride kritik nokta, verinin mümkün olduğunca PL içerisinde işlenmesi ve yalnızca gerekli olduğunda PS tarafına aktarılmasıdır.

Böylece ARM çekirdekleri sürekli veri taşımak yerine daha yüksek seviyeli görevlerle ilgilenebilir.

AXI Neden Bu Kadar Önemli?

PS ile PL arasındaki haberleşmenin büyük bölümü AXI protokolü üzerinden gerçekleşir.

FPGA tabanlı sistemlerde tüm veri yolları aynı amaç için kullanılmaz. Tasarladığınız uygulamanın ihtiyaçlarına göre farklı AXI arabirimlerinden yararlanabilirsiniz.

AXI4-Lite: Kontrol ve Konfigürasyon

AXI4-Lite, düşük bant genişliği gerektiren kontrol işlemleri için kullanılır. Genellikle işlemci ile FPGA içerisindeki IP blokları arasındaki register erişimlerini sağlar. IP bloklarını başlatmak ve durdurmak, çalışma modunu ve eşik değerlerini güncellemek, status register’larını okumak için kullanılır.

Kısacası, “kontrol etmek” istediğiniz her yerde AXI4-Lite doğru tercihtir.

AXI4-Stream: Kesintisiz Veri Akışı

AXI4-Stream, adres bilgisi taşımadan sürekli veri aktarımı yapmak için tasarlanmıştır. Özellikle yüksek hızlı veri işleme uygulamalarında en çok tercih edilen AXI arabirimidir.

Radar verileri, kamera/video akışları, DSP algoritmaları, FPGA içerisindeki IP blokları arasında veri aktarımı hep buradan olur.

Veri paketleri sürekli aktığı için yüksek bant genişliği ve düşük gecikme sağlar.

AXI4 Memory-Mapped: Bellek Erişimi

AXI4 Memory-Mapped arabirimi, adreslenebilir belleklere erişim gerektiğinde kullanılır. İşlemci, DDR bellek ve DMA denetleyicileri arasındaki veri transferlerinin temelini oluşturur. DDR belleğe veri yazma ve okuma, AXI DMA ile yüksek hızlı veri transferi, işlemcinin FPGA üzerindeki bellek bölgelerine erişmesi, büyük veri bloklarının depolanması bu arabirim üzerinden yürür.

Yüksek hacimli verilerin belleğe aktarılması gereken uygulamalarda en uygun çözümdür.

AXI arabirimleri AXI arabirimleri

Üçünü tek cümlede toplarsak: Lite kontrol eder, Stream taşır, Memory-Mapped depolar.

DMA Kullanmanın Avantajı

Veriyi CPU üzerinden taşımak istediğinizde küçük veri miktarlarında belki çalışabilir. Ancak radar uygulamalarında veri sürekli aktığı için işlemci gerçek zamanlı veri işleme gereksinimlerini tek başına karşılamakta yetersiz kalıyor. Bu nedenle mimaride AXI DMA tercih ettik. DMA veriyi doğrudan DDR belleğe yazıp CPU yükünü azaltıyor, yüksek veri hızlarını desteklediğinden gerçek zamanlı çalışmayı kolaylaştırıyor.

İşlemci yalnızca DMA’nın tamamlandığını öğreniyor ve bellekteki veriyi işlemeye başlıyor.

DMA vs CPU DMA vs CPU

Linux Neden PS Tarafında Çalışıyor?

Birçok kullanıcı FPGA içerisinde neden Linux çalıştırıldığını merak ediyor. Bunun temel nedeni geliştirme kolaylığıdır. Linux sayesinde TCP/IP haberleşmesi, SSH erişimi, dosya sistemi, uygulama geliştirme, uzaktan güncelleme, sürücü yönetimi çok daha kolay hale geliyor. Örneğin radar çıktısını Ethernet üzerinden başka bir bilgisayara göndermek, Linux üzerinde standart soket programlama ile gerçekleştirilebilir. Aynı işlemi tamamen FPGA mantığında yapmak ise çok daha karmaşık olur.


FPGA-SoC platformlarının en büyük avantajı yalnızca FPGA ile işlemciyi aynı çipte bulundurması değildir. Asıl güç, bu iki yapının doğru şekilde görev paylaşımı yapabilmesidir. Bizim radar projemizde de temel yaklaşım buydu.

Yüksek hızlı veri işleme PL tarafında gerçekleştirilirken Linux çalışan PS tarafı sistem kontrolü, haberleşme ve uygulama yönetimini üstlendi. Böylece her bileşen kendi güçlü olduğu işi yaptı ve sistem mimarisi daha modüler, sürdürülebilir ve geliştirilebilir hale geldi.

Verinin sistem içerisinde nereden gelip nereye gittiği doğru planlandığında PS ve PL arasındaki görev paylaşımı büyük ölçüde kendiliğinden şekillenir.

Bizimle İletişime Geçin: info@run-x.com | www.run-x.com

Bu makaleyi paylaş: