FPGA okiem początkującego.

szeroko rozumiane , od Altery po Xilinx, a także Actel, Cypress, Lattice Semiconductor, QuickLogic.
ODPOWIEDZ
Awatar użytkownika
xbary
Użytkownik
Posty: 120
Rejestracja: 08 paź 2017, 19:59

FPGA okiem początkującego.

Post autor: xbary »

Jestem z tych co czytają książki techniczne od końca, podobne podejście mam do poznawania urządzeń , nie nie nie oglądam płytek od drugiej strony. Po prostu zawsze trzymam się zasady - najpierw wymyśl sobie cel, następnie go realizuj przy pomocy narzędzia kompletnie ci nieznanego. W przypadku elektroniki cyfrowej ten sposób nauki fajnie się sprawdza.

Obrazek

Tak wyglądało budowanie prototypu pierwszej Amigi, to było dopiero trudne, a ile czasu takie projekty pochłaniały. Przypuszczam że z naszej młodej gwardii inżynierów poległby nie jeden mając do dyspozycji płytki uniwersalne, kabelki i worek bramek rejestrów buforów bez jakiś wyrafinowanych narzędzi projektowych.

Dziś prototyp takiego komputera wyglądałby w ten sposób:

Obrazek

Taką płytkę właśnie dostałem od Mikołaja ;)
Docelowo mam zamiar uruchomić na niej komputer Amiga 1200 , później C64. Twórcy Amigi niestety nie mieli internetu żeby można było poszukać informacji w wyszukiwarce. Natomiast ja nie mam książki co byłaby jakąś podstawą wiedzy o FPGA ale postęp cywilizacyjny mamy taki że nawet stolarz będzie w stanie pomigać ledem na FPGA. Oczywiście jasnowidzem nie jestem i trzeba było zajrzeć do internetu tu i tam i jeszcze tam żeby w ogóle zacząć programować FPGA. Fascynujące jest w FPGA to jak wykonuje zadane mu zadania :)
Mikrokontrolery, procesory mają zawsze jakiś rejestr w którym jest zawarty adres pamięci, pod którym znajduje się instrukcja zwana kodem maszynowym do wykonania, są dostępne różne kody zmieniające np zawartość jego wewnętrznych rejestrów czy adres następnego kodu do wykonania. A kolejne kroki kody wykonywane przez uC są tyknięciem zegara , zegara licznika który posiada każdy procesor i uC , w zależności od częstotliwości tego zegara mamy szybkość wykonywania kolejnych kodów maszynowych. To tak w maksymalnym skrócie, ale pytanie należało by zadać teraz co właściwie jest odpowiedzialne za to że uC rozpoznaje kody maszynowe, gdzie są rejestry? Tutaj już się zaczyna FPGA a dokładniej zestawy bramek tak połączonych że jeden cykl zegara wcześniej wspomnianego wykona jakąś operacje logiczną zaprojektowaną wcześniej. Podczas zbierania informacji szybko idzie się dowiedzieć że w FPGA to nie tylko są bramki które łączymy w jakąś konfiguracje, są też węzły zegarowe które właśnie dają "życie" FPGA :) wspomniane liczniki ,rejestry, bufory są już standardową wbudowaną opcją programu do projektowania. Oczywiście wersji FPGA i przedział cenowy jest tak duży że jest w czym wybierać, maksymalna częstotliwość zegara oraz ilość bramek do skonfigurowania jest wyznacznikiem ceny takiego układu, są również opcje takie że mają przetworniki ADC, być może gotowe konfiguracje bramek do obsługi magistrali PCI np, jak możliwość konfiguracji węzłów o różnych napięciach np 1.2V, 3.3V itd ... wszystkie te opcje oczywiście mają wpływ na cenę ale również na to że nie musimy wymyślać koła na nowo. Moim zdaniem jako osoby nie wykształconej jako informatyk czy elektronik to wcale nie jest to takie trudne to projektowanie konfiguracji bramek w układach FPGA, praktycznie ktoś kto w latach 80...90tych zajmował się projektowaniem czegoś opartego o bramki to szybko powinien się połapać w temacie FPGA. Oczywiście wrócę do tego co pisałem wcześniej, najpierw wymyśl sobie cel zastanów się czy naprawdę potrzebujesz tej możliwości jaką daje ci FPGA do realizacji pomysłu, ja chcę tą płytkę skonfigurować tak aby była jak Amiga 1200 bo gdzieś ktoś podobno to zrobił. Teraz jednak pokaże tą najbardziej bezsensowną rzecz jaką można zrobić na tej płytce z FPGA.
Pierwsze co będziemy potrzebować to coś czym można będzie wgrać naszą bezsensowną konfiguracje bramek. W zestawie był już taki programator:
Obrazek
Oczywiście jakiś program wspomagający projektowanie konfiguracji bramek by się przydał, z tego co wyczytałem w internetach to najlepiej nadającym się programem będzie QUARTUS PRIME LITE EDITION. ściągnąć można go ze strony Intela i jak dobrze przeczytałem to jest to darmowa wersja okrojona o coś ... zapewne przydatnego w profesjonalnych projektach, my będziemy bez sensownie migać ledem, i nam wystarczy ta "chuda" wersja. Tutaj można ściągnąć te cudo: https://fpgasoftware.intel.com/20.1.1/? ... rm=windows, zanim się pobierze będzie trzeba się zarejestrować.
Obrazek
Instalujemy jak każdy inny program, finalnie zajmuje u mnie coś koło 10GB na dysku.
kolejnym krokiem po instalacji , jeszcze go nie uruchamiamy a należałoby zainstalować definicja FPGA którego mamy na płytce, jest to na pewno rodzinka CYCLONE IV o symbolu
Obrazek
niżej na stronie jest pobrania
Obrazek
Następnie trzeba zainstalować te definicje i do tego służy
Obrazek
Należy wskazać katalog w którym znajduje się ściągnięty plik device support i postępować według instrukcji instalatora.
Zanim uruchomimy jeszcze główny program jeszcze została instalacja sterowników do USB Blaster. Windows sam ich nie znajdzie więc zanim podłączymy przez USB nasz programator trzeba ręcznie zainstalować odpowiednie sterowniki. Na nasze szczęście w pakiecie oprogramowania które zainstalowaliśmy są już, a znajdują się tu: D:\intelFPGA_lite\20.1\quartus\drivers\usb-blaster\ ( ja sobie instalowałem wszystko na dysku D: )
klikamy na usbblstr.inf prawym klawiszem myszki i z menu wybrałem 'zainstaluj' . Po zainstalowaniu można podłączyć programator do komputera i powinien zostać zauważony tak:
Obrazek

Teraz możemy przejść to tego fajnego programu w którym zajmiemy się konfiguracją bramek w FPGA. Uruchamiamy
Obrazek
powinniśmy zobaczyć takie okno:
Obrazek

Wybieramy "New Project Wizard" , wskazujemy katalog gdzie tworzony projekt ma zawierać wszystkie pliki, ja mam tak:
Obrazek
klikamy "next" , zaznaczamy "empty project", następnie "next" i "next" aż powinno się wyświetlić okno wyboru modelu naszego FPGA, tak to w tym przypadku u mnie wygląda:
Obrazek
następnie klikamy "next" i "next" aż pojawi się podsumowanie parametrów i "finish"
Obrazek
teraz dodajmy plik "file->new"
Obrazek

wklejamy taki oto "kod"

Kod: Zaznacz cały

module ledblink(
	input clk,
	output LED
);

reg [23:0] cnt;

always @(posedge clk) cnt <= cnt +24'd1;

assign LED = cnt[23];

endmodule
i klikamy na "dyskietkę" i wybieramy katalog naszego projektu (powinien już być wybrany) i "zapisz"

aby przeanalizować nasz "kod" klikamy na ikonkę "Start Analisys & Synthesis"
Obrazek
Powinno się się skompilować , i bez błędów.
Ale to nie wszystko, bo patrząc na ten bezsensowny "kod", kompilator może nie wiedzieć do którego pinu mamy podłączonego leda, a to że podczas tworzenia projektu wskazaliśmy tylko rodzaj procesora to teraz jeszcze musimy skonfigurować co gdzie jest. Do tego służy nam opcja z menu "Assignments->Pin Planner" wyświetli się nam się nasz procesrorek a przynajmniej powinien się wyświetlić.
Obrazek
Obrazek

Na samym dole mamy tabelkę i trzeba ją uzupełnić odpowiednio , wskazać pin do którego jest podłączony generator częstotliwości inaczej zegar clk, oraz do którego pinu mamy podłączonego naszego LEDa. Tak to powinno wyglądać w przypadku prezentowanej płytki:
Obrazek
Zamykamy okno pin planera i wracamy do głównego programu. Następnie uruchamiamy kompilacje ikonką "Start Compilation", program pomyśli chwilkę i powinno być bez błędu i z 11 warningami , narazie nie powinny nas interesować te uwagi, a już ostatnim etapem będzie zaprogramowanie naszego FPGA.
Klikamy w ikonkę "programmer" i powinno się wyświetlić takie okno:
Obrazek
Jak widzicie jest tam już skonfigurowany programator ponieważ wcześniej niechcący to zrobiłem :), ale przynajmniej tak powinno wyglądać to okno kiedy jest wszystko gotowe do programowania. Przycisk "Start" rozpocznie programowanie. Obrazek
i się miga

Jeśli ktoś w ogóle doczytał do tego miejsca to gratuluje, może informacji zawarłem 0.1% możliwości tego programu oraz samego FPGA, ale myślę że moje proste podejście do tego zagadnienia nie jednemu (bez wykształcenia) otworzy-przesunie klapkę w mózgu i zacznie myśleć jak FPGA....znaczy w tej notacji :)

link do zestawu który tu prezentowałem: https://www.banggood.com/pl/ALTERA-Cycl ... rehouse=CN

Pozdrawiam
XBary
Awatar użytkownika
l3n1n
Administrator
Posty: 362
Rejestracja: 28 paź 2017, 8:46
Lokalizacja: 3M

Re: FPGA okiem początkującego.

Post autor: l3n1n »

Super art. Dzięki X
Awatar użytkownika
SunRiver
Użytkownik
Posty: 1338
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Festung Oppeln
Kontakt:

Re: FPGA okiem początkującego.

Post autor: SunRiver »

Nio i super ... wiedzę że szybko ci poszło ogarnięcie migania
i wcale nie zużyłeś tak wielu zasobów :)
GRATULACJE Agencie X .... myslkę że Amiga jest coraz bliżej .. choć powiem ci że C64 jest łatwiejszy do ogarnięcia
:)

Chcemy więcej dodatkowo :)
Awatar użytkownika
l3n1n
Administrator
Posty: 362
Rejestracja: 28 paź 2017, 8:46
Lokalizacja: 3M

Re: FPGA okiem początkującego.

Post autor: l3n1n »

Tylko sześć kilometrów kabelunków do pajączka zużył 😎
Awatar użytkownika
SunRiver
Użytkownik
Posty: 1338
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Festung Oppeln
Kontakt:

Re: FPGA okiem początkującego.

Post autor: SunRiver »

Ale ogarnął szybko .. poradził sobie sprawniej od niektórych :)
a 1 raz macał się z FPGA
Awatar użytkownika
xbary
Użytkownik
Posty: 120
Rejestracja: 08 paź 2017, 19:59

Re: FPGA okiem początkującego.

Post autor: xbary »

Dobrze że w ogóle macałem, bo okazało się że RAM parzy. Profesjonalnie się grzeje do ponad 90C :)
Jak go wymienię, dam znać bo zostało kilka rzeczy niedopowiedzianych w artykule...
ODPOWIEDZ

Wróć do „FPGA - field-programmable gate array”