Portföyümüzde +1 500 000 ürün
Her gün 7000 parsel gönderiyoruz
150 ülkeden +300 000 müşteri
Yayın tarihi: 18-11-2025 🕒 9 okuma süresi
FPGA cihazları uzun yıllardır ticari olarak mevcut, ancak birçok avantajına rağmen uygulamalarda popüler olduğu söylenemez. Bunun başlıca nedenleri, çözümün yüksek maliyeti ve uygulamalar hakkında bilgi eksikliğidir. Bu özelliklerden ilki, bileşenlerle ilgili tasarımcı veya diğer karar vericileri olumsuz etkilerken, ikincisi en çok nesne yönelimli dillerde yetkin olan programcı veya gömülü sistem tasarımcısını etkilemektedir; bu kişiler donanım tanım dili konusunda bilgi sahibi değildir. Bu metinde, FPGA cihazlarının seçilmiş pratik özelliklerini inceleyecek ve bunları çok daha iyi bilinen ve kabul gören mikrodenetleyicilerle karşılaştıracağız. Ayrıca, FPGA kullanımının zorunlu olduğu uygulamaları ve "aşırı" hale geldiği durumları da belirteceğiz.
FPGA, Field-Programmable Gate Array kelimelerinin ilk harflerinden türetilmiş bir grup entegre devrenin adıdır. Bu cihazlar üretimden sonra programlanabilir. FPGA'nın programlama sürecine konfigürasyon denir; çünkü bu süreç, yapı içinde mevcut olan hazır işlevsel bloklar arasında bağlantılar kurmayı içerir. Sabit işlevselliğe sahip tipik dijital entegre devrelerin (kapılar, kayıtlar, flip-floplar, sayaçlar vb.) aksine, FPGA'lar tekrar tekrar programlanabilir, bu da farklı uygulamaların tasarımında ve test edilmesinde esneklik sağlar.
FPGA'lar, programlanabilir mantık blokları ve bunlar arasındaki programlanabilir bağlantılardan oluşur. Bu cihazlar yalnızca dijital bloklar değil, aynı zamanda analogdan dijitale dönüştürücüler, dijitalden analoğa dönüştürücüler, işlemci çekirdekleri (genel amaçlı veya DSP), harici cihazlarla işbirliğini sağlayan arayüz blokları veya Network-on-Chip (NoC) aracılığıyla bağlanan AI destek birimleri de içerebilir; bu, cihazın blokları ve bileşenleri arasında veri paketlerini ileten yerleşik bir bağlantı ağıdır. Zengin özellikler ve esnek bağlantılar sayesinde, FPGA cihazları çeşitli işlevleri yerine getirmek üzere yapılandırılabilir; örneğin, sinyal işleme, gömülü sistem kontrolü veya veri işleme hızlandırması gibi.
FPGA'nın en önemli avantajlarından biri hesaplama hızıdır. Bu cihazlar, bir mikroişlemci gibi talimatları sırayla alıp yürütmekten farklı çalışır. FPGA'da, işleme sonucu "hemen" görünebilir; yalnızca küçük bir yayılma süresi ile gecikme yaşanır. Ayrıca, birçok işlemin paralel olarak gerçekleştirilebilmesi de önemlidir; bu, mikrodenetleyicide nadiren birden fazla talimatın eşzamanlı yürütülmesini destekler.
Her FPGA cihazı üç bileşen grubundan oluşur:
Şekil 1. FPGA cihazının yapısını gösteren basitleştirilmiş blok diyagramı
CPLD cihazları (Complex Programmable Logic Device), FPGA cihazlarının öncüleridir ve (daha az işlevselliğe sahip olmalarına rağmen) günümüzde daha az karmaşık uygulamalar için sunulmaktadır. Çoğu büyük tedarikçi, belirli bir mantıksal işlevi yerine getirmek üzere tasarlanmış programlanabilir elemanlar ve sabit parçalardan oluşan PAL olarak adlandırılan en basit versiyonlardan başlayarak geniş bir yelpazede ürün sunmaktadır. Bu, birkaç mantık işlevi yerine bir entegre devre kullanmayı sağlar, ancak uygulamalar için büyük bir esneklik sunmaz.
PAL'a kıyasla, CPLD cihazları daha karmaşıktır. Daha fazla kapı içerir, kalıcı bellek ve RAM ile donatılmıştır, bu da onları daha karmaşık uygulamalar için uygun hale getirir. Örneğin, Intel®, tüm girişlerin her hücreye erişilebilir olduğu tek bir, birleşik devre paketinde birçok PAL bloğu olan makro hücreler yerleştirmiştir ve her makro hücre herhangi bir çıkışı kontrol edebilir. Bağlantı yapısı, FPGA'daki gibi elektrikle programlanabilir bellek olarak adlandırılan konfigürasyon belleğinde saklanır. Dolayısıyla, CPLD'ler makro hücrelere, programlanabilir bir bağlantı veriyoluna ve konfigürasyon belleğine sahip olduğunda, FPGA'lardan nasıl farklıdırlar?
FPGA'lara kıyasla, CPLD'ler önemli ölçüde daha az mantık elemanı içerir ve LUT dizileri (look up tables) yoktur. Daha entegre bir mimariye sahiptirler, çok daha az sayıda mantık bloğuna sahiptirler ve her blokta daha karmaşık mantık işlevlerini uygularlar. CPLD'deki bloklar arasındaki birçok bağlantı, üretim sürecinde önceden tanımlanmıştır ve cihaz konfigürasyonu sırasında değiştirilemez. Daha karmaşık uygulamalar oluşturmak için kullanılmazlar; FPGA'lar milyonlarca mantık işlevi içerebilir. Örneğin, bir FPGA bir işlemci çekirdek modelleyebilirken, bir CPLD, onunla işbirliği yapan bir adres kodlayıcısını uygulamak için yararlıdır.
Şekil 2. MAX7000 serisi cihazın makro hücresi (kaynak: üretici belgeleri)
Çoğu FPGA cihazında, konfigürasyon harici bellekte saklanır ve genellikle seri bir arayüz aracılığıyla bağlanır. Konfigürasyon verileri, her güç açıldığında veya sert sıfırlama yapıldığında FPGA'nın RAM'ine kopyalanır. Bu, daha karmaşık FPGA'lar için daha büyük bir gecikme yaratarak cihazın başlatılmasında bir gecikme oluşturur; bu, yerleşik EEPROM belleği olan CPLD'lerde böyle değildir.
CPLD'ye kıyasla FPGA'nın bir dezavantajı, daha yüksek uygulama maliyetidir.
Tablo 1. FPGA ve CPLD cihazlarının seçilmiş parametrelerinin karşılaştırması
| Özellik/parametre | CPLD | FPGA |
|---|---|---|
| Uygulama esnekliği | Düşük | Yüksek |
| Fiyat | Düşük | Yüksek veya çok yüksek |
| Uygulama güvenliği | Yüksek | Yetkisiz erişime karşı hassas |
| Çalışma hızı | Yüksek | Yüksek |
| Kapasite/uygulama boyutu | Düşük | Yüksek veya çok yüksek |
| Donanım uygulaması | Basit | Karmaşık veya çok karmaşık |
| Programlama | Donanım konfigürasyon dilleri veya işlevsel şemalarla | |
FPGA'ya entegre edilmiş işlevsel bloklar, özellikle A/D dönüştürücüler, D/A dönüştürücüler veya harici cihazlar için arayüz modülleri, bir mikrodenetleyici çekirdeğinin çevresini andırabilir. Bir FPGA, yerleşik RAM ve kalıcı Flash belleği olabilir, ancak bu benzerlik yanıltıcıdır.
Modern, gelişmiş FPGA cihazları, gelişmiş, karmaşık mikrodenetleyicilerden işlevsel olarak daha karmaşıktır. Örneğin, FPGA içindeki işlevsel blokların bağlantısı, entegre devre yapısı içinde veri paketlerinin, yerleşik anahtarlar tarafından yönetilen veriyolları aracılığıyla iletildiği NoC (Network on Chip) teknolojisini kullanabilir. Bu, sinyal işleme ve koşullandırma ile makine öğrenimi ve yapay zeka kullanan algoritmalar için faydalıdır.
FPGA'nın bir mikrodenetleyiciye kıyasla çalışma hızı gerçekten şaşırtıcıdır. Bunun nedeni, tipik bir mikrodenetleyici çekirdeğinin talimatları birer birer alıp yürütmesidir. Veri işleme hızını artırmak için bazı işlemleri çevresel birimlere (örneğin, belleğe veri iletimi ve bellekten veri alımı için DMA aracılığıyla) devreder, ancak bu, çalışma ritmini değiştirmez. FPGA'larda, konfigürasyona bağlı olarak, FPGA genellikle verileri aldıktan hemen sonra yanıtı iletir ve ayrıca birçok iş parçacığını aynı anda yürütebilir. Örneğin, bir sinyalin değerlendirilmesi, bir örnek almayı ve ardından bir sonraki adımda değerlendirmeyi içermediğini, bunun yerine bağlı mantık işlevleri ağının mevcut olduğu belirli bir değerlendirme şemasına atıfta bulunduğunu unutmayın; bu, cihazın yayılma süresine kadar hassasiyetle mevcut olabilir.
Bir mikrodenetleyici, bir işlemci çekirdeği, RAM, ROM, Flash ve çevresel birimler gibi giriş/çıkış portları, zamanlayıcılar, A/D ve D/A dönüştürücüler içeren tek bir entegre devreden oluşur. Belirli görevleri yerine getirmek üzere tasarlanmıştır. Bazı modüller güç tasarrufu sağlamak için etkinleştirilebilir/devre dışı bırakılabilir, ancak işlevselliği yeniden tanımlanamaz. Üretim sırasında sabit olan blokların çalışması ve bağlantısı da dahil olmak üzere, bu sabittir. Bir mikrodenetleyici, tek bir pakette yer alan küçük bir baskılı devre kartı üzerine monte edilmiş bir mikro bilgisayar gibidir. Konfigürasyonunu değiştirmek, kartı, devre izlerini, bileşen yerleşimini ve bunların bağlantılarını değiştirmeyi gerektirir.
Bir FPGA cihazı, programlanabilir mantık bloklarından ve yapılandırılabilir bağlantılarla birbirine bağlıdır. İşlevler, farklı mantıksal işlemleri gerçekleştirebilen çeşitli işlevsel bloklar halinde birleştirilebilir ve modern gelişmiş FPGA cihazları, NoC gibi çok gelişmiş bağlantı teknolojilerini kullanır.
FPGA (ve CPLD) programlama, mantıksal bağlantıları ve işlevleri tanımlamaktan oluşur ve bu, VHDL veya Verilog gibi donanım tanım dilleri (HDL) kullanılarak yapılır. Konfigürasyon, özellikle daha basit cihazlar için, tipik mantık bileşenlerini yerleştirip bağlayarak bir mantık şeması kullanılarak da yapılabilir. FPGA'yı yapılandırmak, dijital devre tasarımı bilgisi gerektirir. Bir mikrodenetleyiciyi programlamak, yapısal veya nesne yönelimli programlama dilleri kullanarak yapılır. Günümüzde, çoğu uygulama, düşük seviyeli montaj dilinden yüksek seviyeli diller olan C, C++, Java ve diğerlerine doğru kaymaktadır. Mikrodenetleyici programlama, "büyük" bilgisayarları programlamaya benzer; bu, çoğu programcı için daha kolaydır; çünkü genellikle mantık bloklarının çalışması ve optimizasyonu hakkında bilgi sahibi değildirler. FPGA program belleği konfigürasyonu saklarken, mikrodenetleyici belleği komutları ve parametreleri saklar.
Tablo 2. Mikrodenetleyiciler ve FPGA'nın seçilmiş parametrelerinin karşılaştırması
| Özellik/parametre | Mikrodenetleyici | FPGA |
|---|---|---|
| Uygulama esnekliği | Yüksek | Yüksek |
| Fiyat | Düşük veya orta | Yüksek veya çok yüksek |
| Uygulama güvenliği | Yetkisiz erişime karşı hassas | Yetkisiz erişime karşı hassas |
| Çalışma hızı | FPGA'ya kıyasla düşük | Yüksek |
| Bellek kapasitesi / uygulama boyutu | Çok küçükten çok büyüğe kadar | Yüksek veya çok yüksek |
| Donanım uygulaması | Basit | Karmaşık veya çok karmaşık |
| Analog çalışma olasılığı | Yok veya sınırlı | |
| Programlama | Montaj dilinde veya yüksek seviyeli dillerde | Donanım konfigürasyon dillerinde |
ASIC cihazlarının en önemli özelliği, adından da anlaşılacağı gibi, belirli bir görevi yerine getirmek üzere tasarlanmış olmalarıdır. Bu, örneğin bir radyo sinyalini alma ve çözme, belirli bir ekran modelini kontrol etme veya diğerleri olabilir. ASIC'in mutlaka programlanabilir olması gerekmez; ancak, uygulamaların oluşturulabileceği bir işlemci çekirdeği içeren ticari olarak mevcut olanlar vardır.
Tipik bir entegre devre ile bir ASIC cihazı arasındaki sınır çok incedir. Bunlar esasen üretim hacmi ile ayrılır; ASIC'ler, seri üretim yapılan entegre devrelere kıyasla daha az sayıda üretilir. Birçok üretici, entegre devreleri, bunların seri üretim yapılıp yapılmadığını belirtmeden sunmaktadır.
Bir ASIC'in mimarisi tasarımcı tarafından tanımlanır ve üretimden sonra değiştirilemez. Genellikle, ASIC'ler bir işlemci çekirdeğine sahipse, program geliştirilmesine gerek yoktur; yalnızca bazı belirli parametrelerin ayarlanması gerekir. Benzer şekilde, çevre ile iletişim türü ve veri formatları tasarım sırasında tanımlanır ve farklı türler arasında geçiş yapmak mümkün olsa bile, değişiklikler yapılamaz.
FPGA'yı yapılandırmaya kıyasla, ASIC tasarım süreci daha karmaşık ve maliyetlidir; bu, dijital devre tasarımının ötesinde uzmanlık bilgisi gerektirebilir, ancak nihai ürün belirli uygulamalar, performans ve enerji verimliliği için daha optimize edilmiştir.
ASIC'ler, düşük güç tüketimi ve küçük boyut gerektiren uygulamalarda kullanılır. Uzmanlaşma, mükemmel pratik parametreler sunmalarını sağlar. Ayrıca, ASIC'ler genellikle lehimlendikten veya bir sokete yerleştirildikten hemen sonra kullanılmaya hazırdır ve harici bellekten konfigürasyon yüklemeye ihtiyaç duymazlar. Ayrıca, karmaşık işlevselliğe sahip olabilirler veya tamamen analog olabilirler. Bu, FPGA'ların sağladığı, dijital verilerin paralel işlenmesi yoluyla çok yüksek performans sunma yeteneği ile mümkün değildir; bu, analogdan dijitale ve tersine dönüşümden sonra gerçekleşir.
Kullanıma hazır ASIC'ler, FPGA'lardan çok daha ucuz olabilir. Tasarımı çok daha pahalı ve zaman alıcıdır, ancak bu maliyetler genellikle büyük hacimlerde amorti edilir. Bu, yeniden yapılandırma yeteneğinin olmaması pahasına gelir, ancak bu her zaman gerekli değildir. Mikrodenetleyicilere benzer şekilde, FPGA'lar ASIC'leri prototiplemek için kullanılabilir, ancak ASIC'ler FPGA'nın çalışmasını modelleyemez. Elbette burada, FPGA için yararlı bir konfigürasyon kaydını mümkün kılan modellemeden bahsediyoruz; yalnızca benzer işlevselliği elde etmekten değil.
Tablo 3. ASIC ve FPGA'nın seçilmiş parametrelerinin karşılaştırması
| Özellik/parametre | ASIC | FPGA |
|---|---|---|
| Uygulama esnekliği | Çok düşük | Yüksek |
| Fiyat | Düşük veya orta | Yüksek veya çok yüksek |
| Uygulama güvenliği | Yüksek | Yetkisiz erişime karşı hassas |
| Çalışma hızı | Yüksek | Yüksek |
| Kapasite/uygulama boyutu | Düşük veya yok | Yüksek veya çok yüksek |
| Donanım uygulaması | Basit | Karmaşık veya çok karmaşık |
| Analog çalışma olasılığı | Tasarımına bağlı | Yok veya sınırlı |
| Programlama | Sınırlı yetenek veya gereksiz | Donanım konfigürasyon dillerinde |
Kaynakça:
Transfer Multisort Elektronik (TME), elektronik bileşenler, elektroteknik parçalar, atölye ekipmanları ve endüstriyel otomasyonun dünyanın en büyük küresel distribütörlerinden biridir. Katalogda 1.300 lider üreticiden 1.500.000’dan fazla ürün bulunmaktadır. Łódź ve Rzgów’daki (Polonya) TME’nin modern lojistik merkezleri, toplamda 40.000 m²’den fazla alanıyla, her gün yaklaşık 6.000 paketi 150’den fazla ülkedeki müşterilere göndermektedir.
TME ayrıca TME Education projesi aracılığıyla genç mühendislerin ve elektronik meraklılarının bilgi ve becerilerinin geliştirilmesine yatırım yapmakta ve TechMasterEvent serisini düzenleyerek teknoloji topluluğunu desteklemekte, yeniliği ve deneyim paylaşımını teşvik etmektedir.