Bir FPGA “programlandığında” ne olur?


13

Anladığım kadarıyla, bir FPGA programlama süreci iki bölümden oluşur:

  1. Donanım açıklamasını FPGA'nın anlayabileceği bitlere kodlayın (örn. Bazı HDL yazma ve derleme)
  2. Derlenmiş HDL'yi FPGA üzerine yükleyin.

Sorum şu: "FPGA derlenmiş HDL ile ne yapıyor?" Şu anda, FPGA'ları tellerin ve mantık kapılarının istediğiniz her şeye kalıplanabileceği "kalıplanabilir donanım" olarak düşünüyorum. Güzel şeylerden biri, kalıplanabilirliğin kalıcı olmasıdır: FPGA'lar yeniden programlanabilir.

FPGA'lar derlenmiş HDL'yi nasıl yorumlar? Kalıcı kalıplanabilirlik nasıl sağlanır?


4
Aslında kalıcı değil - FPGA bit akışı her güç uygulandığında EEPROM'dan yeniden yüklenmelidir. CPLD'lerde bu sorun yoktur ve bazı FPGA'larda bit akımlarını her açılışta yükleyen yerleşik EEPROM vardır.
AngryEE

2
Bence "kalıplanabilirlik kalıcıdır" yani programın kendisi kalıcı değildir.
ajs410

Yanıtlar:


23

Diğer sorunuza bakılırsa, siz bir Xilinx adamısınız. Bu yüzden Xilinx çipinizin veri sayfasını almanızı ve İşlevsel Açıklama bölümüne gitmenizi önemle tavsiye ederim. Kullandığım Spartan 3 yongası için 42 sayfalık eğlenceli okuma. Bir FPGA içinde hangi bileşenlerin olduğunu tam olarak detaylandırır - IOB'ler, CLB'ler, dilimler, LUT'lar, Blok RAM, Çarpanlar, Dijital Saat Yöneticisi, Saat Ağı, Ara Bağlantı ve bazı çok temel yapılandırma bilgileri. "Derlenmiş bir HDL" nin neye benzediğini bilmek istiyorsanız bu bilgileri anlamanız gerekir.

FPGA'nızın mimarisini öğrendikten sonra, bu işlemi anlayabilirsiniz. İlk olarak, HDL tasarımınız, HDL'nizi temelde RTL'ye dönüştüren sentez motoruyla çalıştırılır. Ardından Mapper, Sentez'in sonuçlarını işler ve bunları mevcut FPGA mimarisi parçalarına "eşleştirir". Sonra Yönlendirici, bu parçaların nereye gittiğini ve nasıl bağlanacağını anlayan Yer ve Rota (PAR) yapar. Son olarak, PAR sonuçları bir BIT dosyasına dönüştürülür. Tipik olarak bu BIT dosyası bir Flash çipine yüklenebilecek şekilde bir şekilde dönüştürülür, böylece FPGA açıldığında otomatik olarak programlanabilir.

Bu bit dosyası tüm FPGA programını açıklar. Örneğin, bir Spartan 3'teki CLB'ler, sadece 16 adresli 1 bitlik SRAM'ler olan LUT'lardan oluşan dilimlerden oluşur. BIT dosyasının içereceği şeylerden biri, SRAM'nin her adresine tam olarak hangi verilerin girdiği. BIT dosyasının içerdiği başka bir şey, LUT'un her girişinin bağlantı matrisine nasıl bağlandığıdır. BIT dosyası, blok RAM'in içine giren başlangıç ​​değerlerini de içerecektir. Her dilimdeki her bir flip flopun set ve reset pimlerine neyin bağlı olduğunu açıklayacaktır. Taşıma zincirinin nasıl bağlandığını açıklayacaktır. Her IOB için mantık arabirimini (LVTTL, LVCMOS, LVDS, vb.) Tanımlayacaktır. Tüm entegre çekme veya çekme dirençlerini tarif edecektir. Temel olarak, her şey.

Xilinx için, konfigürasyon başlatıldığında FPGA'nın belleği silinir (yani PROG_B belirtilir). Bellek temizlendikten sonra, INIT_B fazın tamamlandığını göstermek için yükselir. BIT dosyası daha sonra, JTAG veya Flash çip arayüzü yoluyla yüklenir. Program yüklendikten sonra, Global Flip / Reset (GSR) atımı yapılır ve tüm flip floplar başlangıç ​​durumlarına sıfırlanır. DONE pimi, yapılandırmanın tamamlandığını göstermek için yükselir. Tam olarak bir saat çevriminden sonra, Küresel Üç Durumlu sinyal (GTS) serbest bırakılarak çıkışların sürülmesine izin verilir. Tam olarak bir saat çevriminden sonra, Global Yazma Etkinliği (GWE) serbest bırakılır ve flip flopların girdilerine yanıt olarak durum değiştirmeye başlamasına izin verir. Bu son yapılandırma işleminin bile BIT dosyasında ayarlanan bayraklara bağlı olarak biraz yeniden sıralanabileceğini unutmayın.

DÜZENLE:

FPGA programının kalıcı olmamasının sebebinin mantık dokusunun uçucu bellekten (örn. SRAM) oluşmasıdır. Böylece FPGA güç kaybettiğinde program unutulur. Bu yüzden FPGA programı için kalıcı depolama olarak Flash çiplerine ihtiyaç duyarlar, böylece cihaz her açıldığında yüklenebilir.


6

HDL'nin derlenmesi, FPGA içindeki hangi bağlantıların etkinleştirilmesi gerektiğini gösteren bir bit deseni ile sonuçlanır. FPGA'nın artık HDL'yi yorumlaması gerekmiyor. Bit kalıbı seri yükleyici Flash / EEPROM'a programlanır ve önyükleme yapıldığında bu kalıp FPGA'ya kaydırılır ve gerekli bağlantılar yapılır.


1
SENTEZ üç kelime öbeği anlamına gelir 1. Netlist üretimi 2. Kapı Seviyesi Optimizasyonu 3. Teknoloji eşlemesi.
Standart Sandun

4

Derlemenin sonucu, güç açıldıktan sonra yüklenen bir bit akışıdır (kelimenin tam anlamıyla bir bit akışıdır). Bu, bazı bellek hücrelerinde (mandallar) depolanan FPGA'da kayar. Bu hücreler çeşitli mantık varlıklarına, çoklayıcılara, arama tablolarına, RAM bloklarına, yönlendirme matrislerine bağlanır ve "yapılandırma" olarak adlandırılanları oluşturur. Bit akımı yüklendikten sonra, FPGA çalışmaya başlar - yapılandırma mandallarındaki bitler her FPGA parçasının nasıl çalışacağını "söyler".

EDIT 24 Nisan 2012: Bahsettiğim parmak arası terlik, arama tabloları veya bunların yapılandırması için değildir. @ Ajs410'un söylediği gibi, bunlar daha az transistör olan RAM'de. Flip-floplar, bu depolama alanı etkinse, verilerin LUT'un dışında depolanması içindir.


Tipik bir FPGA'daki devrenin ne kadarı gerçek mantık ve yönlendirme ve programlama desteği ne kadar?
supercat

Teknik olarak "bellek hücreleri" mandal değil, parmak arası terliktir. Yani kenar tetiklenir.
Brian Carlton

@BrianCarlton: Flip flop'lar gerçekten tüm program depolama hücreleri için kullanılıyor mu? Anladığım kadarıyla, flip flopların bit başına 12-16 MOSFET seviyesinde bir şeye ihtiyacı var; aksine, mandallama verileri için diğer tam statik teknikler sadece 5-8 gerektirir.
supercat

1
Bir LUT tipik olarak SRAM'den yapılır. Parmak arası terlik SRAM çıkışına takılır.
ajs410

1
@supercat: Bir FPGA'nın% 90'ının yöneldiğini duydum ... gerisi mantık ve yapılandırma - yine de hızlı bir referans bulamıyorum :(
Martin Thompson

1

Standart terim bir FPGA için "programlama" değil, "yapılandırma" dır. FPGA genellikle SRAM tabanlı bir cihazdır. Bir SRAM, cihazın "mantık dokusu" içinde hangi bağlantıların oluştuğunu ve kesildiğini gösteren bitleri saklar. Yapılandırma gerçekleştiğinde, FPGA'ya bu SRAM'a yazan bir bit akışı gönderilir. SRAM tabanlı FPGA açıldığında, SRAM kapalı verileri silinir ve FPGA açıldığında tekrar yapılandırılması gerekir.

Şimdi bunu biliyorum, onlar "yapılandırmak" ve FPGA çeşitli yöntemler ve bu nedenle bu "bit akışı" içeren farklı dosya formatları var. Günün sonunda, bu dosyaların yapısı ve FPGA'nın tam olarak nasıl yapılandırıldığına dair ayrıntılar üretim için tescillidir ve bu bilgiler asla paylaşılmaz. Ancak genel ilke FPGA'larda aynıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.