FPGA üzerinden PIC programlama


9

Bir FPGA kartı aracılığıyla bir PIC'yi ilk kez (Flash'a yazma) programlamanın bir yolu olup olmadığını bilmek istiyorum.

PIC zaten FPGA'ya lehimlendi ve onu kaldıramıyorum. PIC'de önyükleyici yok. Bu yüzden FPGA'dan veri alabilmesi için bir bootloader ile USART / SPI / I2C modunda programlamak gerekiyor.

Normalde onu lehimlemek, PICKit gibi bir donanım programlayıcısına bağlamak ve bilgisayardaki MPLAB gibi bir yazılımla programlamak zorunda olduğumu biliyorum, ancak bunu karşılayamıyorum.

Bootloader'ı bir .hex dosyası olan MPLAB ile oluşturabilirim, ancak FPGA pinlerine ve ardından FPGA pinleri aracılığıyla PIC'ye nasıl aktarabilirim?

Kullanılan PIC, Microchip PIC12F1822'dir.


2
Sadece kontrol etmek: FPGA'yı yeniden programlayabilir misiniz (yani bunu yapmak için gerekli tüm araçlara sahipsiniz)?
pjc50

Bu bir tür kalkınma kurulu mu?
Matt Young

Evet, FPGA'yi yeniden programlamak için gerekli tüm araçlara sahibim (bilgisayara standart usb ile bağlı).
Myst

1
Hayır, suçlandılar çünkü bu çabayı göstermediler. Aslında, bir staj yapıyorum ve çok profesyonelce buldum. Yine de sorunu düzeltmem gerekiyor. Bu PIC'yi, paket zaten yapıldığı için kullanamayacağım harici bir programcıdan başka bir yolla yeniden programlamanın bir yolunu gerçekten göremiyorum.
Myst

2
Bazı jumper kablolarını harici bir programlayıcı aracılığıyla programlamanız için PIC üzerindeki izlere veya pimlere lehimlemenin bir yolu yok mu? FPGA aracılığıyla yapmaya çalışmak, bir yüksek lisans tezi projesi gibi geliyor.
horta

Yanıtlar:


10

Hayır, aslında PIC'yi programlamak için SPI, UART veya I 2 C kullanamazsınız . Bu amaçla özel bir kod yüklenmemiş bir PIC'ye yeni bir program (bootloader) almanın tek yolu harici donanım programlama arayüzünü kullanmaktır. Elektriksel olarak bu, Vss, MCLR, PGC ve PGD'ye bağlanma anlamına gelir. Programlayıcının Vdd'ye bağlı olması da yararlı olabilir, ancak Vdd seviyesi bilindiği ve programlayıcı buna göre ayarlandığı sürece bu çip için gerekli değildir.

Düşük seviye donanım arayüzü oldukça basittir. PGD, PGC'nin (saat çizgisi) düşen kenarında PIC tarafından örneklenen veri hattıdır. PIC'yi ilk olarak programlama moduna getirmek için, MCLR'deki belirli kenarlara göre özel bir 32 bit anahtar saatlenir (yüksek voltaj programlama ile ilgili aşağıdaki nota bakın).

Üst düzey protokol daha karmaşık hale gelir. Çoğu şey 6 bitlik komutlarla yapılır, bunlardan bazılarını 14 bitlik veri sözcükleri izler. Programlama spesifikasyonunu dikkatlice okumalısınız. Programlama özelliğinin veri sayfasından ayrı bir belge olduğunu unutmayın. Microchip web sitesinde özel PIC'nizin ürün sayfasına gidin ve belgeler bölümünde programlama spesifikasyonuna bir bağlantı bulacaksınız.

Yüksek voltaj programlama hakkında eklendi

Bu tür PIC'lerin programlama moduna girmenin iki yolu vardır: yüksek voltaj (HVP) ve düşük voltaj (LVP). Yüksek voltaj yöntemi, MCLR'nin 8 ila 9 volta yükseltilmesini ve programlama sırasında orada kalmasını gerektirir. Bu yöntem, PIC'de programlanmış olası verilerden bağımsız olarak daima çalışır.

Programlama moduna girmenin düşük voltaj yöntemi, normalde PGC ve PGD kullanarak MCLR'yi önce yüksek, sonra düşük, ardından özel bir 32 bit anahtar dizisinde saatleme yaparak başlar. Parça, doğru tuş dizisi üzerine programlama moduna girecek ve MCLR düşük tutulduğu sürece programlama modunda kalacaktır.

Düşük voltaj yöntemi, yapılandırma bitlerinden biri tarafından devre dışı bırakılabilir. Bununla birlikte, yapılandırma bitinin silinmiş durumu düşük voltajlı programlamaya izin verir, fabrikadan bu şekilde gönderilir ve bu yapılandırma biti, programlama yüksek voltaj yöntemiyle girildiyse LVP'ye izin vermeyecek şekilde ayarlanabilir. Bu nedenle, LVP'nin etkinleştirilmemesi için aşağıdakilerin tümü doğru olmalıdır:

  1. PIC en son HVP özellikli bir programlayıcı ile programlandı ve HVP program giriş modu kullanıldı.

  2. PIC'de programlanan HEX dosyası, yapılandırma sözcüğü 2'deki LVP bitini kasıtlı olarak silinmemiş duruma ayarlar.

LVP'yi devre dışı bırakmak neredeyse kasıtlı bir eylem ve doğru programcı gerektirdiğinden, muhtemelen hala etkindir. Bazı tuhaf nedenlerden dolayı kasıtlı olarak devre dışı bırakılmışsa, PIC'yi toplu silme (LVP'yi yeniden etkinleştirir) gerçekleştirecek kadar uzun süre programlama moduna almak için MCLR'ye 8-9 V beslemeniz gerekir.


3

Bir PIC'nin programlanması yüksek bir voltaj gerektirir. Evet, bir PIC'yi "LVP" veya Düşük Voltaj Programlama moduna geçirmek mümkündür, ancak bunu yapmak için yüksek voltajlı bir programlayıcıya ihtiyacınız vardır.

PIC'iniz zaten LVP moduna geçirilmişse, evet, PIC'yi FPGA'dan kolayca programlayabilirsiniz. Veri sayfalarının tümü, çipi programlamak için gereken programlama dalga formlarını içerir, bu nedenle FPGA'da kendi PIC programlayıcı cihazınızı oluşturmanız gerekir.

Ancak, PIC LVP moduna geçirilmediyse, yüksek bir voltaj (tipik olarak 10V) üretmeniz ve programlama moduna girmek için doğru zamanda MCLR pinine uygulamanız gerekir . Tahtanızda bu tür bir donanım yoksa, o zaman tetiklendiğinde FPGA tarafından kontrol edilen ek donanım gerektirir.

Çoğu PIC programcısı, voltaj regülasyonunu yönetmek için yerleşik bir PIC kullanarak sağlanan 5V'yi 10V'a kadar almak için küçük bir takviye regülatörü (voltaj katlayıcı) içerir. Genellikle PIC'den PWM ve PIC'deki ADC girişini basit bir yükseltme regülatörü olarak kullanırlar.

Herkese açık PICkit2 şemalarına göz atmalısınız.


1
Hayır, büyük olasılıkla yüksek voltaj gerekmez. Tüm 12F1xxx / 16F1xxx serileri de dahil olmak üzere yeni parçaların çoğu programlama moduna girmek için bir tuş sırası kullanabilir. Bu dizi yüksek voltaj gerektirmez. Bu yapılandırmada devre dışı bırakılabilir, ancak parça fabrikadan anahtar yöntemi etkinleştirilmiş olarak gelir. Birisi anahtar dizisi program modu girişini kasıtlı olarak devre dışı bırakmadıkça, hala kullanılabilir olmalıdır. Devre dışı bırakılmışsa, evet, programlama moduna geçmek için MCLR'yi 8-9 V'ye yükseltmeniz gerekir.
Olin Lathrop

Anahtar programlama modu LVP modudur. Yapılandırmadaki LVP = 1'e dayanır. Bu çip varsayılan olarak LVP = 1'e benziyor, ancak belirli bir çipte = 1 mi, yoksa zaten LVP = 0 ile programlanmış mı? Kim bilir? Dediğim gibi - LVP modundaysa, HV'ye ihtiyacınız yoktur, aksi takdirde yaparsınız.
Majenko

LVP Modunda programlamak için FPGA'ma "dijital" PIC programlayıcı (VHDL) uygulamam gerekiyor mu? Bunu yapmanın bir yolunu gerçekten düşünemiyorum. Bunu inşa etmeme yardım eder misin?
Myst

Hayır, yapamam. Pickit2 için şemalara sahipsiniz, bu nedenle hangi sinyallerin gerekli olduğunu biliyorsunuz. Pickit2 ürün yazılımı için kaynağınız var, bu nedenle nasıl iletişim kuracağınızı biliyorsunuz. Programlama veri sayfalarına sahipsiniz, böylece hangi talimatları göndereceğinizi ve nasıl göndereceğinizi biliyorsunuz. Bellenimi bilgisayarınızdan PIC'ye nasıl ilettiğiniz tamamen size bağlıdır. FPGA'nızda ne kadar zeka istiyorsunuz ve PC'de ne kadar zeka istiyorsunuz?
Majenko

Tamam teşekkürler. İlk olarak, PIC'yi doğrudan PICKIT 3 ile programlamaya çalışacağım. PICKIT (firmamın bu amaç için satın aldığı) ile ilgili olarak, bunlar doğrudan FPGA'ya da bağlı. Bazı voltajın kapalı FPGA'dan geçip biraz hasar verebileceğinden endişeliyim. Bu haklı bir endişe mi?
Myst
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.