Skip to content
Harry Broeders edited this page May 19, 2026 · 2 revisions

Gebruik van de GPIO-pinnen van de DE1-SoC

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:

GPIO_0 header

GPIO_1 header

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).

GPIO circuit

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.

led brand

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:

RTL Viewer

Clone this wiki locally