-
Notifications
You must be signed in to change notification settings - Fork 0
GPIO
De DE1-SoC heeft maar liefst 72 General Purpose Input Output (GPIO) pinnen die je kunt gebruiken voor in- en output van digitale signalen (3.3 V). Deze pinnen zijn te vinden aan de rechterkant van het bord, als twee 40-pin headers. Zie paragraaf 3.6.3 van de User Manual van de DE1-SoC.
De linkse header is GPIO_0 genoemd en de rechtse header GPIO_1. De layout van de headers is te vinden in de schematics van de DE1-SoC en hieronder weergegeven:


Naast de GPIO pinnen is er ook een 3.3 V voedingspin, een 5 V voedingspin en twee GND pinnen per header. De 5 V voeding kun je beter niet gebruiken omdat alle GPIO pinnen 3.3 V signalen verwachten.
Als je de file DE1_SoC.qsf gebruikt, kun je de GPIO pinnen eenvoudig koppelen aan de I/O poortnamen van je top-level design.
Hier volgt een voorbeeld waarbij een led en twee drukknoppen worden aangesloten op de GPIO pinnen van de DE1-SoC. De led is aangesloten op GPIO_1(35) (pin 40 van de header). De drukknoppen zijn aangesloten op GPIO_1(34) (pin 39 van de header) en GPIO_1(33) (pin 38 van de header).

Om de stroom door de led te begrenzen is een serieweerstand van 1 kΩ gebruikt. Om er voor te zorgen dat de inputs laag zijn als de drukknoppen niet ingedrukt worden zijn pulldown weerstanden van 1 kΩ gebruikt.
In de onderstaande code is te zien hoe de GPIO pinnen in VHDL gebruikt kunnen worden:
library ieee;
use ieee.std_logic_1164.all;
entity gpio is
port (
GPIO_0: inout std_ulogic_vector (35 downto 0);
GPIO_1: inout std_ulogic_vector (35 downto 0)
);
end gpio;
architecture implementation of gpio is
begin
-- NAND gate
GPIO_1(35) <= not(GPIO_1(34) and GPIO_1(33));
end implementation;In de portmap worden alle 72 GPIO pinnen als twee groepen van 36 pinnen gedefinieerd. Alle GPIO pinnen zijn inout poorten. In dit voorbeeld wordt een NAND-poort gedefinieerd met GPIO_1(33) en GPIO_1(34) als inputs en GPIO_1(35) als output.
De led zal dus alleen doven als beide drukknoppen ingedrukt worden.

De RTL Viewer in Quartus laat zien hoe de bovenstaande VHDL code is omgezet in een AND-poort en een buffer met een inverterende ingang:
