Erste Testprojekte mit dem Nexys-Video unter Verwendung der vorhandenen LEDs, Taster und Schalter
(EN google-translate)
(PL google-translate)
Die Pinbelegungen aller nachfolgenden Beispiele kann aus dem folgenden Schaubild zu den Tastern, Schaltern und LEDs und der zugehörigen Port-Namen auf dem FPGA entnommen werden:

Bild 0-1: Pinbelegungen für bereits auf dem Board verschaltete digitale I/Os. Quelle: Digilent.

Bild 0-2: Angaben zur Belastbarkeit der Pins (Strom). Quelle: Xilinx, ds181_Artix_7_Data_Sheet.pdf Seite 2.

Bild 0-3: Angaben zur Belastbarkeit der Pins (Spannung). Quelle: Xilinx, ds181_Artix_7_Data_Sheet.pdf Seite 2.


Bild 0-4: Spezifikation des FPGAs bei ISE 14.7
|

Bild 0-5: Bedeutung des FPGA-Namens. Quelle: Xilinx ds180_7Series_Overview.pdf Seite 16.
Vorprojekt: LED bei T14 einschalten

library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity led is Port ( ausgang : out STD_LOGIC); end led; architecture Behavioral of led is begin ausgang <= '1'; end Behavioral;
Code 0-1: VHDL-Code LED einschalten.
NET "ausgang" LOC = "T14"; NET "ausgang" IOSTANDARD = LVCMOS33;
Code 0-2: Constraints mit ISE 14.7 zu LED einschalten.

Um erste Tests mit dem Board vorzunehmen, werden zwei kleine Projekte in VHDL ausgeführt: Mustervergleich und Blinkled. Beide Projekte wurden bereits im Kurs FPGA eingeführt und auf den DLP-FPGA von Digikey gebracht (Spartan 3-Architektur). Hier werden sie lediglich an den Artix 7 und das Nexys-Video-Board angepaßt.


mustervergleich
Video: Mit Vivado ein VHDL-Projekt mustervergleich erstellen und auf den nexys video übertragen


library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity mustervergleich is Port ( A1 : in STD_LOGIC; A0 : in STD_LOGIC; B1 : in STD_LOGIC; B0 : in STD_LOGIC; C : out STD_LOGIC); end mustervergleich; architecture Behavioral of mustervergleich is begin C <= (A1 xnor B1) and (A0 xnor B0); end Behavioral;
Code 0-3: VHDL-Quelltext für mustervergleich für den Artix 7.
## FPGA Configuration I/O Options set_property CONFIG_VOLTAGE 3.3 [current_design] set_property CFGBVS VCCO [current_design] ## Slide Switches set_property -dict {PACKAGE_PIN E22 IOSTANDARD LVCMOS12} [get_ports {A1}]; set_property -dict {PACKAGE_PIN F21 IOSTANDARD LVCMOS12} [get_ports {A0}]; set_property -dict {PACKAGE_PIN G21 IOSTANDARD LVCMOS12} [get_ports {B1}]; set_property -dict {PACKAGE_PIN G22 IOSTANDARD LVCMOS12} [get_ports {B0}]; ## LEDs set_property -dict {PACKAGE_PIN T14 IOSTANDARD LVCMOS25} [get_ports {C}];
Code 0-4: Constraints mit VIVADO, .xdc-Datei.
NET "A1" LOC = "E22" | PULLUP | IOSTANDARD = LVCMOS33 ; NET "A0" LOC = "F21" | PULLUP | IOSTANDARD = LVCMOS33 ; NET "B1" LOC = "G21" | PULLUP | IOSTANDARD = LVCMOS33 ; NET "B0" LOC = "G22" | PULLUP | IOSTANDARD = LVCMOS33 ; NET "C" LOC = "T14" | IOSTANDARD = LVCMOS33 | SLEW = SLOW ;
Code 0-5: Constraints mit ISE 14.7, .ucf-Datei (gleiche Funktion wie .xdc-Datei).


blinkled
library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity blinkled is Port ( MEINECLOCK : in STD_LOGIC; MEINELED : out STD_LOGIC); end blinkled; -- Clock-In == 100MHz, Toggeln nach 50000000 Schritten ergibt 1Hz Blinkfrequenz. architecture Behavioral of blinkled is signal zaehler : integer range 0 to 49999999 := 0; signal logikpegel : std_logic := '0'; begin process begin wait until rising_edge(MEINECLOCK); if (zaehler<49999999) then zaehler <= zaehler+1; else zaehler <= 0; logikpegel <= not logikpegel; end if; end process; MEINELED <= logikpegel; end Behavioral;
Code 0-6: VHDL-Datei zu blinkled auf Artix 7. (100MHz-Takt auf 1Hz Blinken herunter geteilt.)
## GCLK6 ist auf FPGA-Chip Pin 56 NET "MEINECLOCK" LOC = "R4"; ## IO_L05P_0 ist auf FPGA-Chip Pin 125 NET "MEINELED" LOC = "T14"; NET "MEINECLOCK" IOSTANDARD = LVCMOS25; NET "MEINELED" IOSTANDARD = LVCMOS33;
Code 0-7: Constraints mit ISE 14.7 für blinkled, .ucf-Datei (gleiche Funktion wie .xdc-Datei).
