Programowanie PIC przez FPGA

9

Chciałbym wiedzieć, czy istnieje sposób na zaprogramowanie PIC po raz pierwszy (zapis we Flashu) za pomocą karty FPGA.

PIC jest już przylutowany do FPGA i nie mogę go usunąć. Na PIC nie ma bootloadera. Dlatego muszę go zaprogramować w trybie USART / SPI / I2C za pomocą programu ładującego, aby mógł odbierać dane z FPGA.

Wiem, że zwykle muszę to sprzedać, podłączyć do programisty sprzętowego, takiego jak PICKit i zaprogramować za pomocą oprogramowania na komputerze, takiego jak MPLAB, ale nie stać mnie na to.

Mogę wygenerować program ładujący za pomocą MPLAB, który jest plikiem .hex, ale jak mogę go przenieść do FPGA, a następnie do PIC poprzez piny FPGA?

Używany PIC to Microchip PIC12F1822.

Mist
źródło
2
Tylko sprawdzam: czy możesz przeprogramować FPGA (tzn. Masz wszystkie narzędzia niezbędne do tego)?
pjc50
Czy to jakaś płyta rozwojowa?
Matt Young,
Tak, mam wszystkie narzędzia niezbędne do przeprogramowania układu FPGA (jest on podłączony do komputera za pomocą standardowego USB).
Myst
1
Nie, obwiniono ich, ponieważ nie podjęli tego wysiłku. Właściwie jestem na stażu i uważam to za bardzo nieprofesjonalne. Chociaż nadal muszę rozwiązać problem. Naprawdę nie widzę sposobu na przeprogramowanie tego PIC innymi sposobami niż zewnętrzny programator, którego nie mogę użyć, ponieważ pakiet jest już gotowy.
Myst
2
Czy nie ma sposobu na przylutowanie niektórych przewodów połączeniowych do śladów lub styków na PIC, aby można je było zaprogramować za pomocą zewnętrznego programatora? Próba zrobienia tego przez FPGA brzmi jak projekt pracy dyplomowej.
horta

Odpowiedzi:

10

Nie, nie musisz, w rzeczywistości nie możesz, używać SPI, UART lub I 2 C do programowania PIC. Jedyny sposób, aby dostać nowy program w PIC, że nie posiada specjalny kod załadowany do tego celu (bootloader) jest użycie zewnętrznego interfejsu programowania sprzętu. Elektrycznie oznacza to połączenie z Vss, MCLR, PGC i PGD. Przydatne może być również podłączenie programatora do Vdd, ale nie jest to konieczne w przypadku tego układu, o ile poziom Vdd jest znany, a programator odpowiednio dostosowany.

Interfejs sprzętowy niskiego poziomu jest dość prosty. PGD ​​to linia danych, która jest próbkowana przez PIC na zboczu opadającym PGC (linia zegarowa). Aby w pierwszej kolejności ustawić PIC w tryb programowania, specjalny 32-bitowy klucz jest taktowany względem określonych zboczy w MCLR (chociaż patrz uwaga poniżej dotycząca programowania wysokiego napięcia).

Protokół wyższego poziomu staje się bardziej skomplikowany. Większość czynności odbywa się za pomocą poleceń 6-bitowych, a po niektórych z nich znajdują się 14-bitowe słowa danych. Musisz dokładnie przeczytać specyfikację programowania. Należy pamiętać, że specyfikacja programowania jest dokumentem odrębnym od arkusza danych. Przejdź do strony produktu dla konkretnego PIC na stronie Microchip, a link do specyfikacji programowania znajdziesz w sekcji dokumentów.

Dodano informacje o programowaniu wysokiego napięcia

Tego rodzaju PIC mają dwa sposoby wejścia w tryb programowania: wysokie napięcie (HVP) i niskie napięcie (LVP). Metoda wysokonapięciowa wymaga podniesienia MCLR do 8–9 woltów i utrzymania go podczas programowania. Ta metoda zawsze działa, niezależnie od ewentualnych danych zaprogramowanych w PIC.

Metoda niskiego napięcia wejścia w tryb programowania rozpoczyna się od ustawienia wysokiego poziomu MCLR, a następnie niskiego, a następnie taktowania specjalną 32-bitową sekwencją klawiszy przy użyciu normalnie PGC i PGD. Część wejdzie w tryb programowania po prawidłowej sekwencji klawiszy i pozostanie w trybie programowania, dopóki MCLR będzie utrzymywany na niskim poziomie.

Metodę niskiego napięcia można wyłączyć jednym z bitów konfiguracji. Jednak skasowany stan bitu konfiguracyjnego umożliwia programowanie przy niskim napięciu, jest on wysyłany z fabryki w ten sposób, a ten bit konfiguracyjny można ustawić tak, aby nie zezwalał na LVP, jeśli programowanie zostało wprowadzone metodą wysokonapięciową. Dlatego, aby LVP nie mógł zostać włączony, muszą być spełnione wszystkie następujące warunki:

  1. PIC został ostatnio zaprogramowany za pomocą programatora obsługującego HVP i zastosowano tryb wprowadzania programu HVP.

  2. Plik HEX zaprogramowany w PIC celowo ustawia bit LVP w słowie konfiguracyjnym 2 na stan nieskasowany.

Ponieważ wyłączenie LVP prawie wymaga celowego działania i odpowiedniego programisty, prawdopodobnie nadal jest możliwe. Jeśli został celowo wyłączony z jakiegoś dziwnego powodu, musisz podać 8–9 V na MCLR, aby wprowadzić PIC w tryb programowania przynajmniej na tyle długo, aby wykonać kasowanie masowe (które ponownie włącza LVP).

Olin Lathrop
źródło
3

Programowanie PIC wymaga wysokiego napięcia. Tak, możliwe jest przełączenie PIC w „LVP” lub tryb programowania niskiego napięcia, ale do tego potrzebny jest programator wysokiego napięcia.

Jeśli Twój PIC został już ustawiony w trybie LVP, to tak, możesz łatwo zaprogramować PIC z FPGA. Wszystkie karty danych zawierają przebiegi programowania potrzebne do zaprogramowania układu, więc byłoby to przypadkiem zbudowania własnego urządzenia programującego PIC w FPGA.

Jeśli jednak PIC nie został przełączony w tryb LVP, należy wygenerować wysokie napięcie (zwykle 10 V) i przyłożyć je do styku MCLR we właściwym czasie aby przejść do trybu programowania. Jeśli nie masz tego rodzaju sprzętu na swojej płycie, wymagałoby to dodatkowego sprzętu, który jest ostatecznie kontrolowany przez układ FPGA pod względem momentu uruchomienia.

Większość programatorów PIC zawiera mały regulator podwyższający napięcie (podwajacz napięcia), który pobiera 5 V do 10 V za pomocą PIC na pokładzie w celu zarządzania regulacją napięcia. Często używają PWM z PIC i wejścia ADC na PIC jako prosty regulator doładowania.

Powinieneś spojrzeć na publicznie dostępne schematy PICkit2.

Majenko
źródło
1
Nie, całkiem prawdopodobne, że nie jest wymagane wysokie napięcie. Większość nowszych części, w tym wszystkie z serii 12F1xxx / 16F1xxx, może korzystać z sekwencji klawiszy, aby przejść do trybu programowania. Ta sekwencja nie wymaga wysokiego napięcia. Można to wyłączyć w konfiguracji, ale część pochodzi z fabryki z włączoną metodą klucza. Chyba że ktoś celowo wyłączył tryb programu sekwencji klawiszy, powinien on być nadal dostępny. Jeśli jest wyłączone, to tak, musisz podnieść MCLR do 8-9 V, aby przejść do trybu programowania.
Olin Lathrop,
Kluczowym trybem programowania jest tryb LVP. Opiera się na LVP = 1 w konfiguracji. Wygląda na to, że domyślny układ to LVP = 1, ale CZY to jest = 1 na tym konkretnym układzie, czy też został już zaprogramowany na LVP = 0? Kto wie? Tak jak powiedziałem - JEŻELI jest w trybie LVP, nie potrzebujesz HV, w przeciwnym razie będziesz.
Majenko,
Więc aby programować w trybie LVP, muszę zaimplementować jakiś „cyfrowy” programator PIC (VHDL) w mojej FPGA? Naprawdę nie mogę wymyślić sposobu na zrobienie tego. Czy mógłbyś mi pomóc go zbudować?
Myst
Nie mogę Masz dostępne schematy dla pickit2, więc wiesz, jakie sygnały są potrzebne. Masz dostępne źródło oprogramowania układowego pickit2, więc wiesz, jak się komunikować. Masz dostępne arkusze danych programowania, więc wiesz, jakie instrukcje wysłać i jak je wysłać. Sposób, w jaki komunikujesz oprogramowanie PIC z komputera, zależy wyłącznie od Ciebie. Jakiej inteligencji potrzebujesz w swojej FPGA, a ile na PC?
Majenko,
Ok dziękuję. Po pierwsze, zamierzam zaprogramować PIC bezpośrednio za pomocą PICKIT 3. Jeśli chodzi o PICKIT (który moja firma kupiła w tym celu), boję się podłączyć go bezpośrednio do pinów PIC, ponieważ są one również podłączony do FPGA. Obawiam się, że część napięcia może przejść przez wyłączony układ FPGA i spowodować pewne uszkodzenia. Czy to uzasadniona obawa?
Myst