FPGA – Poradnik #2

W dzisiejszej części kursu zajmiemy się omówieniem zasady działania bramek logicznych oraz symulowania projektów w środowisku Quartus.

Znajomość tych zagadnień będzie Ci bardzo potrzebna podczas dalszej nauki związanej z układami programowalnymi.

Wiem, że bardzo wielu z Was zna już zasadę działania bramek logicznych. Jednak na pewno znajdą się osoby, które dopiero zaczynają przygodę z elektroniką/układami programowalnymi. Mógłbym Ich odsyłać do innych witryn jednak moim zdaniem nie ma to sensu, ponieważ chciałbym tutaj stworzyć takie swoiste kompendium dotyczące układów programowalnych. Dlatego z góry przepraszam osoby bardziej zaawansowane.

 

Bramki logiczne posiadają wejścia oraz wyjścia. Sygnały podajemy na wejścia. Wyjście służy do odbierania sygnałów przez kolejne urządzenie.

Dziś zajmiemy się sześcioma typami bramek logicznych.

 

Opis oznaczeń:

A,B-wejścia
Y-wyjście
0-niski
1-wysoki

 

Pierwszym z nich jest bramka NOT. Jest to najprostsza możliwa bramka. Służy ona do negowania (odwracania) sygnału wejściowego.1

[su_table]

A Y
0 1
1 0

[/su_table]

Bramka AND (bramka iloczynu logicznego)

Wyjście bramki logicznej AND jest w stanie wysokim tylko wtedy, gdy oba wejścia są w stanie wysokim. Na przykład, gdy mamy 0 i 0 na wejściach na wyjściu będzie 0 gdy mamy 0 i 1 na wejściach na wyjściu będzie 0 a gdy mamy 1 i 1 na wejściach na wyjściu będzie 1. Najlepiej będzie to zobrazować w postaci tabeli (tak też będę robić w kolejnych przykładach)2
[su_table]

A B Y
0 0 0
0 1 0
1 0 0
1 1 1

[/su_table]

Bramk NAND
Jest to swoiste połączenie bramki AND oraz NOT. Stan niski na wyjściu dostajemy tylko w wypadku gdy na wszystkich wejściach podamy stan wysoki.
3
[su_table]

A B Y
0 0 1
0 1 1
1 0 1
1 1 0

[/su_table]

Bramka OR czyli LUB
Jeśli jedno, oba (lub więcej) wejścia są stanie wysokim wyjście też jest w stanie wysokim. Jeżeli wszystkie wyjścia są w stanie niskim wyjście także jest w stanie niskim.
4

[su_table]

A B Y
0 0 0
0 1 1
1 0 1
1 1 1

[/su_table]
Bramka NOR ma odwrotne działanie do bramki OR
5

[su_table]

A B Y
0 0 1
0 1 0
1 0 0
1 1 0

[/su_table]

Bramka EXOR
Jeżeli jedno lub drugie wejście jest w stanie wysokim na wyjściu otrzymamy stan wysoki. Bramka EXOR ma zawsze dwie zmienne wejściowe.

6

[su_table]

A B Y
0 0 0
0 1 1
1 0 1
1 1 0

[/su_table]

Gdy już znamy zasadę działania możemy przejść do stworzenia pierwszego projektu.
Będzie to test działania bramki AND.
Projekt będziemy tworzyli przy pomocy edytora schematów.
Jest to jedna z możliwości konfiguracji układów FPGA.
Na razie nie będziemy podłączać naszej płytki, ponieważ będziemy korzystać z symulatora.

Uruchamiamy środowisko Quartus
Tworzymy nowy projekt.
12-min

Wybieramy układ 10M08DAF256C8GES
11-min

Wybieramy symulator oraz język symulatora VHDL
13-min

Tworzymy nowy plik edytora schematów
14-min

Tworzymy pełny obraz bramki AND przy pomocy komponentów and2, input oraz output
15-min
16-min
17-min
19-min

Ja zmieniłem sobie jeszcze nazwy wyjść na in1, in2 oraz out1(robimy to za pomocą podwójnego kliknięcia na nie)

Zapisujemy (skrótem klawiszowym ctrl+s)

 

Tworzymy plik VHDL z naszego schematu
19-min
20-min

 

 

Otwieramy plik z kodem 21-min

Dodajemy plik z kodem do projektu oraz usuwamy plik schematu

22-min
23-min
Kompilujemy24-min

Uruchamiamy symulator25-min

 

Otwieramy naszą bibliotekę work oraz wybieramy plik
26-min

Mamy zdefiniowane nasze dwa wejścia oraz jedno wyjście

W tej części przechodzimy do sedna. Dzięki symulatorowi mamy możliwość sprawdzenia działania naszego programu. Mamy możliwość podania danych wejściowych oraz sprawdzenia danych wyjściowych.

Przypisujemy stan wysoki do wejść oraz naciskamy F9 aby uruchomić symulator
28-min29-min
Na wyjściu powinno pojawić się 1 zgodnie z tabelą.
[su_table]

A B Y
0 0 0
0 1 0
1 0 0
1 1 1

[/su_table]
30-min

Tutaj film pokazujący wszystko krok po kroku.
[su_youtube url=”https://www.youtube.com/watch?v=G43qVfvU-sc”]

 

Gratuluje stworzyłeś pierwszy program 🙂
Teraz możesz spróbować to powtórzyć z użyciem innej bramki.
Na dziś to już wszystko 🙂 Zachęcam Was do podjęcia próby stworzenia symulacji innej bramki, a bardziej zaawansowanym polecam zacząć już zabawę z łączeniem bramek oraz testowaniem ich działania.

[su_button url=”https://roboblog.eu/2016/03/30/fpga-poradnik-1/” size=”7″]Poprzednia część kursu[/su_button]
[su_button url=”https://roboblog.eu/2016/06/07/fpga-poradnik-3-pin-planner/” size=”7″]Kolejna część kursu[/su_button]