FPGA - Kendin Yap Programlama


9

Birkaç yıldır mikrodenetleyicileri programlıyorum ve dijital tasarım dersi aldıktan sonra FPGA'ları keşfettim. Farklı FPGA'lar, geliştirme panoları, vb. Üzerinde biraz araştırma yaptıktan sonra, hala satın almakta tereddüt ediyorum çünkü nihai "ürünün" kendi versiyonunu nasıl yapacağımı bilemezdim. PIC'leri, SAM'ları, AVR'leri vs. özel PCB'lere herhangi bir sorun olmadan koydum, bu yüzden endişelenmiyorum - asıl endişem bir üretici kartı olmadan bir FPGA programlamak.

Benim özel sorum: Quartus, Vivado, iCEcube, vb. Tarafından oluşturulan bitmap dosyasını alırsam bir FPGA işlevi, 0 adresinden başlayan bir SPI flash bellek yongasına (örneğin, bir FT2232H aracılığıyla) yazdıysa ve flash belleği FPGA'nın SPI pimleri (MODE yapılandırması doğru şekilde ayarlanmışsa)?

Kısmi varsayım için özür dilerim; Tüm Lattice's Diamond Programmer'ın yaptığından oldukça eminim, ancak bu yaklaşımın farklı üreticilerin FPGA'ları için işe yarayıp yaramayacağını ya da Quartus'un yazarken belleğe ek "pencere giydirme" veya başlıklar ekleyip eklemediğini merak ettim.

Soruyu iyileştirmek / açıklığa kavuşturmak için yapabileceğim bir şey olup olmadığını veya FPGA programlama sürecinde büyük bir noktayı kaçırmamı bildirin. Teşekkürler!


"Bitmap" ile bit akışı mı demek istediniz?
Eugene Sh.

Bu soru daha önce farklı bir enkarnasyonda soruldu
Voltage Spike

1
İlk FPGA kart tasarımınızda, 2 cihaz programlama yöntemi (artı satıcının JTAG başlığı) sağlamanızı öneririm. MODE pimlerini gerektiği gibi değiştirmenize izin vermek için atlama teli konumlarını yerleştirin. Bunları karıştırmak çok kolaydır ve yedekleme planlarına sahip olmak iyidir. Ayrıca INIT ve DONE (veya Lattice'in programlama durumunu belirtmek için kullandığı her şey) için test noktaları sağladığınızdan emin olun.
Foton

2
BGA'ları, özellikle yüksek pim sayısı olanları monte etmek için gereken işlem kontrolü, QFP gibi bir şeyden daha sıkıdır. Daha fazla top olması, köprüleme veya kötü bağlantı olasılığının daha yüksek olduğu anlamına gelir ve gizlendiklerinden, olup olmadığını görmek için bir şey çalıştırmadan önce sorunları tespit edemezsiniz (bir röntgeniniz yoksa) herhangi bir sorun. Ve eğer bileşeni yeniden monte ederseniz, o zaman daha fazla ekipman gerektiren reball yapmanız gerekir. FPGA'lar aynı zamanda zarar vermek istemediğiniz pahalı yongalardır. Büyük BGA'lar PCB ön ısıtıcıları gibi şeylerin gerekli olduğu yerlerdir.
DKNguyen

1
Eskiden teknisyenlerin bütün gün yeniden işten başka bir şey yapmadığı ve sıcak hava istasyonlarının (daha sıkı sıcaklık kontrolü ve ısı tabancasından daha güvenilir) olduğu bir yerde çalışıyordum ve lehim BGA'larını güvenilir bir şekilde elde edemediler. Ben bir ön ısıtıcı vardı sanmıyorum, eğer bunu denemek için gidiyoruz, bir ön ısıtıcı almak ve ucuz bir çip kullanın (belki papatya zinciri kukla BGA paketi, böylece yapmadan önce çivilenene kadar elektrik bağlantıları doğrulayabilirsiniz gerçek bir şey).
DKNguyen

Yanıtlar:


12

Evet, iyi çalışır.

Aslında, çoğu FPGA için geliştirme araçları harici flaşı doğrudan FPGA'nın kendi JTAG bağlantısı üzerinden programlamanıza izin vererek flaş için ayrı bir programlama arabirimi ihtiyacını ortadan kaldırır.


1
Ve Lattice Mach X02 gibi bazılarında flaş var, bu yüzden Lattice programlama bölmesine bağlanmak için birkaç dirence ve 5x2 başlığa ihtiyacınız var.
Spehro Pefhany

Vivado / Quartus gibi araçlardan flaşı JTAG aracılığıyla doğrudan programlayabileceğinizin farkındaydım, umduğum şey, satıcıya özgü bir kablo satın almaya gerek kalmadan yapabilmemdi - sadece bir FT2232H kullanın ve bit akışını yazın (değil bitmap?) kendim. Çipin Quartus tarafından desteklendiğini ve Vivado tarafından açıkça desteklenmediğini düşünmüyorum (Nexys ve Basys kartlarında kullanmasına rağmen).
Blake Lucas

1
Evet, flaşı başka yollarla bit dosyasıyla programlayabilirsiniz. MCU'larınız için programcılarınızdan biri muhtemelen bunu yapabilir. Segger J-linkimin kesinlikle yapabileceğini biliyorum.
DKNguyen

@Toor: Gerçekten de satıcıya özgü bir kablo değil, ancak yine de satıcı araçlarında sabit kodlu destek var ve Segger bir FT2232H'den biraz daha pahalı.
Ben Voigt

2
Hemen hemen tüm büyük satıcılar, belirli araçlarla belirlenen yükleme bit akışlarının (hem FPGA hem de özel yapılandırma flaşları) izin vermek için mühendislik belgeleri sağlar, çünkü bazen entegre sistemlerde veya test donanımlarında istenir. Satıcının desteklenen donanımını kullanmak en basit yöntem olabilir (özellikle ilk başta), ancak yıllar boyunca birkaç kez belirli projeler için alternatifler uyguladım. Orijinal bir FPGA kurulu projesinin daha zor kısmı, FPGA'nın tahtada ihtiyaç duyduğu tüm destek olabilir - genellikle birkaç farklı voltaj için, yönlendirmek ve atlamak için birçok güç çifti.
Chris Stratton

3

"Tarafından oluşturulan [sic] bitmap [sic] dosyası" dediğinizde, doğru olanı seçtiğiniz sürece cevap Evet olur - yalnızca tek bir dosya olmadığından kesin makaleyi kullanarak küçük bir hata yaptınız .

Örneğin, Quartus SOF, POF ve JIC dosyaları üretebilir. Sonuncusu FPGA JTAG aracılığıyla dolaylı programlama için kullandığınız şeydir. Bunu SPI flaşına yazmak yararlı olmaz. SOF, FPGA'da tasarımınızı geçici olarak çalıştırmak için JTAG üzerinden yükleme içindir. POF, flaş çipine yüklemeniz gereken şeydir.

Bkz FPGA: Bitstream vs SRAM Nesne Dosyası farklı dosyalar farklı satıcılardan her birinden ne anlama konusunda yararlı bilgiler bir sürü için.


1

Flash belleği bir FPGA'nın SPI pinlerine (MODE yapılandırması doğru şekilde ayarlanmışsa) bağlarsam FPGA çalışır mı?

Sorunuzu doğru anlarsam, FPGA yapılandırmasını (örneğin, derlenmiş HDL modeliniz) bir SPI EEPROM veya SPI Flash'a yazmak istersiniz ve FPGA'nın SPI IC'deki verileri kullanarak kendisini programlamasını istersiniz.

(Dave Tweed'in cevabını doğru anlarsam, sorunuzu farklı bir şekilde anladı.)

Az sayıda SPI Flash bellek cihazlarının anda olur DEĞİL iş SPI Flash bellek IC belli dalga biçimini gerektirir çünkü veri IC okunur böylece (adres okunacak örneğin) gönderilmek üzere.

Bu dalga formu tüm Flash bellek aygıtları için aynı değildir. Yalnızca SD bellek kartlarına bakarken bile (SPI Flash bellek olarak da kullanılabilir), kart verileri okumadan önce karta farklı bir dalga formunun gönderilmesini gerektiren iki varyant buluruz.

FPGA'nın mod pinlerini doğru şekilde ayarlarken, FPGA bazı seri bellek cihazlarına veri göndermesini bildiren bir dalga formu gönderir. Bununla birlikte, farklı IC'ler farklı dalga formları gerektirdiğinden, dalga formu tüm Flash IC'leri tarafından değil, yalnızca belirli türler tarafından anlaşılacaktır.

Altera'nın FPGA'larına uygun özel Flash veya EEPROM IC'leri ürettiğini biliyorum.


Açıkçası bir SD kart çalışmaz, çünkü hiçbir FPGA (bildiklerime göre) bir yapılandırma protokolü olarak SD / MMC'yi desteklemez. Çoğu FPGA, AT24 / AT26 / AT45'e bağlıdır.
Dmitry Grigoryev

1

Resmi FPGA programlama araçları olmadan flaşa bir FPGA bit akışı yazmak istiyorsanız, büyük olasılıkla bu bit akışı dosyasını ham ikili, Intel HEX veya Motorola SREC gibi kolayca okuyabileceğiniz açık bir ikili biçime dönüştürmek istersiniz ( örnek ). Bu, bir FPGA bit akımının içerebileceği herhangi bir özel başlığı keser.

Bu şekilde, flaş üreticisinin (veya kendi araçlarınızın) araçlarını kullanarak flaşı programlayabilir veya hatta FPGA bit akışınızla önceden programlanmış flaş yongalarını sipariş edebilirsiniz.

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.