Bir FPGA böyle bir proje için uygun mudur?


12

Şu anda bir ekran görüntüleme projesi olan Super OSD üzerinde çalışıyorum. http://code.google.com/p/super-osd tüm ayrıntılara sahiptir.

Şu anda işi yapmak için bir dsPIC MCU kullanıyorum. Bu çok güçlü bir DSP (80 MHz'de 40 MIPS, üç kayıtlı tek çevrim işlemleri ve bir MAC ünitesi) ve daha da önemlisi, bir DIP paketinde geliyor (çünkü prototiplemek için bir breadboard kullanıyorum.) m OSD'yi çalıştıran son performansın her bitini gerçekten çıkarıyorum - çip çıkış aşamasında piksel başına yaklaşık 200ns veya 10 döngü var, bu nedenle kodun bu kısımda çok optimize edilmesi gerekiyor (bu nedenle her zaman yazılacak düzeneği.)

Şimdi bunun için bir FPGA kullanmayı düşünüyordum çünkü böyle bir çipin paralel mimarisi nedeniyle OSD'yi çalıştıran basit bir mantık programına sahip olmak mümkün. Çizim çizgileri ve algoritmik kod gibi şeyler bir MCU tarafından işlenir, ancak gerçek çıktı bir FPGA ile yapılır. Ve pikselleri ayarlamak veya yatay ve dikey çizgiler çizmek gibi bazı basit şeyleri, hızı artırmak için FPGA'ya entegre etmek istiyorum.

Birkaç sorum var:

  1. Çok daha pahalıya mal olacak mı? Bulduğum en ucuz FPGA's her biri £ 5 ve dsPIC her biri £ 3. Yani daha pahalıya mal olacak, ama ne kadar?
  2. DsPIC bir SO28 paketine uygundur. SO28 veya TQFP44'ten daha büyük olmak istemiyorum. Gördüğüm çoğu FPGA, kesme boyutu ve bunları kendim lehimlemenin zorluğu nedeniyle şu anda bir seçenek olmayan BGA veya TQFP> 100 paketlerinde geliyor.
  3. Bir FPGA tarafından ne kadar akım kullanılır? DsPIC çözümü şu anda yaklaşık 55mA +/- 10mA tüketiyor ve şu anda iyi. Bir FPGA az çok tüketir mi? Değişken mi, yoksa dsPIC gibi oldukça statik mi?
  4. OSD grafiklerini saklamak için en az 12KB grafik belleğine ihtiyacım var. FPGA'larda çipte bu tür bir bellek var mı, yoksa bu sadece harici yongalarla kullanılabilir mi?

Yanıtlar:


7

Prensipte bu FPGA tabanlı tasarım için iyi bir adaydır. İhtiyaçlarınızla ilgili:

ad 1. FPGA büyük olasılıkla seçtiğiniz cihaza bağlı olarak daha pahalı olacaktır. İlk bakışta Xilinx'ten (XC3S50AN) en küçük Spartan 3 bu görev için yeterli olacaktır (Farnell'den ~ 10 £). Bu maliyet için üst sınır olduğunu varsayabiliriz (içinde 56kB RAM var, bu yüzden daha sonra ihtiyacınız). Xilinx ürününden veya rakiplerinden Altera ve Lattice'den daha ucuz bir cihaz bulabilirsiniz.

ad 2. Paket zor bir konudur, FPGA'yı daha az yer kaplamasıyla da görmedim. Bununla birlikte, CPLD cihazını (CPLD'lerin küçük FPGA'lar olduğu argümanı için) daha küçük pakette (PLCC veya QFN) kullanabilirsiniz. Artı tarafta, negatif tarafta daha ucuz (hatta tek $) olacaklar, büyük olasılıkla içinde RAM olmayacak. CPLD ile muhtemelen harici SRAM çipine ihtiyacınız olacaktır.

ad 3. FPGA'lar ve CPLD akım tüketimi büyük ölçüde programlanan tasarıma bağlıdır. Bununla birlikte, FPGA ve özellikle CPLD tasarımının mevcut çözümünüzden daha az tüketme şansı vardır.

ad 4. FPGA bu tür bir bellek var, CPLD kesinlikle yok. Bu, harici sram çipi (veya iki) ile çözülebilir. Örneğin:

| SRAM 1 | <--> | CPLD | <--> | uC |
| SRAM 2 | <->

UC, SRAM 1'e yazarken bu düzenlemede CPLD, SRAM 2'den veri görüntüleyecektir. CPLD, her iki görevi aynı anda gerçekleştirebilmelidir.

Elbette bunu başka şekillerde de çözebilirsiniz:
1) daha hızlı uController (örneğin ARM
) kullanın 2) bazı programlanabilir kumaş ve uC içinde cihaz kullanın (örneğin Atmel'den FPSLIC, ancak bu tür cihazları hiç kullanmadım ve çok biliyorum) bunlar hakkında çok az şey)

Standart feragatname -> tasarımlar açık problemler olduğundan, yukarıda yazdıklarımın çoğu kısıtlaması ve olası çözümü ile sizin durumunuz için doğru olmayabilir. Yine de, bu seçeneği kontrol etmeye değer olduğuna inanıyorum.


4

Altera MAX II parçalarından biri gibi FPGA yerine CPLD kullanabilirsiniz. FPGA'ların aksine QFP44 paketlerinde bulunurlar. Aslında küçük FPGA'lar, ancak Altera bu yönü oynuyor. CPLD'lerin çip üstü yapılandırma belleğine sahip olmaları nedeniyle çoğu FPGA'ya göre bir avantajı vardır, FPGA'lar genellikle harici bir flaş çipi gerektirir. Elbette başka CPLD'ler de var, ama MAX II'yi seviyorum.

Saat hızlarına ve gerçekte kullanılan mantık miktarına bağlı olduğundan, mevcut tüketimin ne olacağını söylemek mümkün değildir.

FPGA'lar genellikle kullanabileceğiniz sınırlı miktarda yonga üstü belleğe sahiptir, ancak bir CPLD ile harici belleğe ihtiyacınız olacaktır.

Başka bir seçenek bir XMOS yongası olabilir, ancak en küçük olanı (XS1-L1) bir QFP64 paketindedir. Çok sayıda çip üzerinde RAM var - 64k.


2

1) Evet, FPGA daha pahalı olacak. Sadece çipin kendisi daha pahalı değil, aynı zamanda programlamayı saklamak için Flash belleğe de ihtiyacınız olacak. FPGA + Flash muhtemelen sadece dsPIC'in 3 katıdır ... küçük bir FPGA için yaklaşık 10 $ ve küçük Flash için 3 $.

2) Var olabilirler, ancak yüzey montajı olmayan herhangi bir FPGA'nın gerçekten farkında değilim. Çoğu muhtemelen QFP veya BGA'dır.

3) FPGA muhtemelen dsPIC'in yaptığı akımın yaklaşık 3 katını çekecektir, ancak bu, kullandığınız özelliklere bağlı olarak yukarı veya aşağı gidebilir. FPGA'ların güç tüketimini artırabilecek birçok özelliği vardır. Ancak en az 150 mA bekleyin.

4) FPGA'ların içinde genellikle blok RAM bulunur. En küçük FPGA'lar dışında hepsi bu kadar belleğe sahip olmalıdır.

Diğerleri ise CPLD'lerden bahsediyor. Tasarımınızı dikkatli bir şekilde bölümlere ayırırsanız, bazı küçük ama pahalı işlemleri CPLD'ye taşıyabilirsiniz. Mini bir işlemci gibi olurdu.


2

En düşük öğrenme eğrisine sahip en ucuz çözüm, büyük olasılıkla daha yüksek güçlü bir işlemciye, ARM'ye geçmek olacaktır.

VHDL / Verilog'da bir FPGA / CPLD programlamak, birçok insan için C'den gelen oldukça dik bir öğrenme eğrisidir. Ayrıca aşırı ucuz parçalar da değildir.

Yeterince yetenekli bir ARM kullanmak belki bir LPC1769? (cortex-M3) tasarımınızdaki PIC18'i de değiştirebilirsiniz.

Açık delik sorununa gelince, SoC'yi açık bir pin QFP tipi pakette alabildiğiniz sürece , prototiplemeniz için gerekli pin çıkışı için bu adaptörlerden bazılarını alın.


PIC18 değil, dsPIC kullanıyor.
Leon Heller

2
her ikisini de kullanıyor, bağladığı belgelerdeki şemalara bakın. PIC18, düğmeleri / arayüzü çalıştırıyor ve I2C üzerinden dsPIC ile konuşuyor. DsPIC sadece video işlemeyi yapar.
Mark

1

Eğilimim, işlemci ve ekran arasındaki zamanlamayı arabelleğe almak için bir şey kullanmak olacaktır. İşlemci müdahalesi olmadan tüm bir video karesini gösterebilecek donanıma sahip olmak güzel olabilir, ancak belki de aşırı olabilir. Donanım ve yazılım karmaşıklığı arasındaki en iyi uzlaşmanın muhtemelen iki veya üç bağımsız 1024 bit kaydırma yazmacı (siyah, beyaz, gri veya şeffaf olmasını sağlamak için piksel başına iki bit) ve bir araç yapmak olduğunu düşünüyorum. aralarında geçiş yapma. PIC'nin bir kaydırma yazmacını yüklemesini sağlayın ve ardından donanımın bir bayrak koyarken PIC'nin bir sonrakini yükleyebilmesi için bunu kaydırmaya başlamasını sağlayın. İki vardiya yazmacı ile PIC, bir vardiya kaydının mevcut olduğu ve tüm verinin kaydırılması gereken zaman arasında 64us'a sahip olacaktır. Üç vardiya kaydıyla,

1024-bit FIFO'nun iki 1024-bit kaydırma yazmacı kadar iyi olmasına rağmen ve bir CPLD'de bir FIFO'nun diğer bit mantık türlerinde çoğu bit mantık için sadece bit başına bir makro hücresi ve bazı kontrol mantığı maliyeti vardır. bir bit FIFO'dan daha ucuz olacak.

Alternatif bir yaklaşım, bir CPLD'yi bir SRAM'a bağlamak ve bununla basit bir video alt sistemi oluşturmak olacaktır. Estetik olarak, anında video üretimini seviyorum ve eğer birisi güzel ucuz 1024-bit shift-kayıt yongaları yaptıysa, bu benim tercih ettiğim yaklaşımdır, ancak harici bir SRAM kullanmak, yeterli kaynaklara sahip bir FPGA kullanmaktan daha ucuz olabilir birden çok 1024 bit kaydırma yazmacı oluşturun. Çıktı çözünürlüğünüz için, verileri 12M piksel / sn veya 3 MBytes / sn hıza düşürmeniz gerekecektir. Bellek döngülerini harmanlayarak çok fazla zorluk çekmeden verilerin 10 mbps'ye kadar hızda zamanlanmasına izin verecek şeyleri düzenlemek mümkün olmalıdır; en büyük hile, bir senkronizasyon darbesi beklenen kesin zamanda gelmezse veri bozulmasını önlemek olacaktı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.