Einstieg in FPGA-Entwicklung: 4-Bit-Adder auf Xilinx Artix-7 bauen
Anmerkung der Redaktion: Da fortgeschrittene Algorithmen sich weiterentwickeln, kämpfen eingebettete Designer oft damit, die Verarbeitungsanforderungen moderner Anwendungen zu erfüllen. Field-Programmable Gate Arrays (FPGAs) liefern die nötige Performance, und jüngste Hardware- und Tooling-Fortschritte haben FPGA-Entwicklung für ein breiteres Publikum zugänglich gemacht. Dieser Artikel, der vierte in einer Serie aus *Architecting High‑Performance Embedded Systems* von Jim Ledin, bietet einen praktischen Walk-through zum Bau eines einfachen, aber vollständigen FPGA-Projekts.
Ihr erstes FPGA-Projekt entwickeln
Wir werden einen 4-Bit-Binäradder auf einem Xilinx Artix-7 FPGA in einem Digilent Arty A7 Development Board konstruieren. Zwei Board-Varianten sind verfügbar: das kosteneffektive 35T-Modell (US $129) und das leistungsstärkere 100T-Modell (US $249). Der einzige Unterschied ist die FPGA-Variante, die die verfügbaren Logikressourcen beeinflusst. Der 100T ist für zukünftige Projekte vorzuziehen, die mehr Ressourcen verlangen, wie das Digital-Oszilloskop-Beispiel in späteren Kapiteln.
Kaufoptionen: Digilent Store, Amazon und andere Händler.
Für dieses Tutorial fokussieren wir uns auf den FPGA-Kern, vier User-Switches, vier Pushbuttons und fünf LEDs. Die folgenden Schritte decken Installation der Vivado Tool Suite, Projekterstellung, VHDL-Code-Schreiben und Laden eines Bitstreams auf das Board ab – sowohl in volatilen Konfigurationsspeicher als auch in Onboard-Flash für persistenten Betrieb.
Projektübersicht
Das Design implementiert einen 4-Bit-Adder. Vier Switches liefern das erste 4-Bit-Operand, vier Pushbuttons das zweite. Der FPGA addiert diese Operanden kontinuierlich und zeigt die 4-Bit-Summe auf vier LEDs an, mit einer fünften LED für den Carry-Out. Dieses einfache Design lässt uns uns auf den Toolchain-Workflow konzentrieren statt auf komplexe Logik.
Vivado installieren
Wir nutzen Xilinx Vivado, kostenlos für Windows und Linux verfügbar. Die folgenden Anweisungen setzen Windows voraus; Linux-Installationsschritte sind analog.
- Xilinx Benutzerkonto erstellen: https://www.xilinx.com/registration/create-account.html
- Einloggen unter https://xilinx.com und zum Download-Seite navigieren.
- Xilinx Unified Installer (Windows Self-Extracting Web Installer) herunterladen. Für Konsistenz mit diesem Buch Version 2020.1 wählen; ansonsten neueste Version.
- Installer ausführen (z. B. Xilinx_1_0602_1208_Win64.exe). Wenn Windows den Download blockiert, „Install anyway“ wählen.
- Auf Next im Willkommensbildschirm klicken.
- Xilinx Credentials eingeben und Next klicken.
- Lizenzvereinbarungen bestätigen und Next klicken.
- Vitis als Produkt wählen (Vitis bündelt Vivado und zusätzliche Tools). Next klicken.
- Standard-Komponentenauswahl akzeptieren und Next klicken.
- Zielverzeichnis wählen (z. B. C:\Xilinx) und Next klicken.
- Zusammenfassung prüfen und Install klicken. Installation kann mehrere Minuten dauern.
Nach Installation Vivado über Desktop-Shortcut oder Startmenü starten.
Projekt erstellen
- Vivado öffnen und Create Project im Quick Start Pane klicken.
- ArtyAdder als Projektnamen eingeben, Verzeichnis wählen (z. B. C:\Projects), Create a subdirectory for this project anhaken. Next klicken.
- RTL Project wählen und Do not specify sources at this time anhaken. Next klicken.
- Unter Boards Tab nach „Arty“ suchen und Arty A7-100 oder Arty A7-35 basierend auf Hardware auswählen. Next klicken.
- Wizard beenden, um leeres Projekt zu erstellen.
VHDL Source Files hinzufügen
- Im Sources Pane, Rechtsklick Design Sources → Add Sources….
- Add or create design sources wählen und Next klicken.
- Create File wählen, FullAdder.vhdl benennen und OK klicken.
- Wiederholen für Adder4.vhdl, dann Finish klicken.
- Define Modules Dialog ignorieren; OK klicken und mit Yes bestätigen.
- FullAdder.vhdl öffnen und folgenden Code einfügen:
library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity FULL_ADDER is port ( A : in std_logic; B : in std_logic; C_IN : in std_logic; S : out std_logic; C_OUT : out std_logic ); end entity FULL_ADDER; architecture BEHAVIORAL of FULL_ADDER is begin S <= (A XOR B) XOR C_IN; C_OUT <= (A AND B) OR ((A XOR B) AND C_IN); end architecture BEHAVIORAL;
- Adder4.vhdl öffnen und Inhalt ersetzen mit:
library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity ADDER4 is port ( A4 : in std_logic_vector(3 downto 0); B4 : in std_logic_vector(3 downto 0); SUM4 : out std_logic_vector(3 downto 0); C_OUT4: out std_logic ); end entity ADDER4; architecture BEHAVIORAL of ADDER4 is component FULL_ADDER is port ( A : in std_logic; B : in std_logic; C_IN : in std_logic; S : out std_logic; C_OUT : out std_logic ); end component; signal c0, c1, c2 : std_logic; begin FULL_ADDER0 : FULL_ADDER port map ( A => A4(0), B => B4(0), C_IN => '0', S => SUM4(0), C_OUT => c0 ); FULL_ADDER1 : FULL_ADDER port map ( A => A4(1), B => B4(1), C_IN => c0, S => SUM4(1), C_OUT => c1 ); FULL_ADDER2 : FULL_ADDER port map ( A => A4(2), B => B4(2), C_IN => c1, S => SUM4(2), C_OUT => c2 ); FULL_ADDER3 : FULL_ADDER port map ( A => A4(3), B => B4(3), C_IN => c2, S => SUM4(3), C_OUT => C_OUT4 ); end architecture BEHAVIORAL;
Nächste Schritte
Der folgende Artikel wird Sie durch Simulieren dieses Designs, Synthetisieren für das Arty Board und Programmieren des resultierenden Bitstreams auf das FPGA führen.
Reprinted with permission from Packt Publishing. Copyright © 2021 Packt Publishing
Jim Ledin ist CEO von Ledin Engineering, Inc. Er spezialisiert sich auf eingebettete Software und Hardware Design, Entwicklung und Test und hält Expertise in eingebetteter System-Cybersicherheit, Penetrationstests und Ethical Hacking. Jim erwarb einen B.S. in Luft- und Raumfahrttechnik von der Iowa State University und einen M.S. in Elektrotechnik und Informatik vom Georgia Institute of Technology. Er ist lizenzierter Professional Electrical Engineer in Kalifornien, CISSP, CEH und CPT Inhaber.
Verwandte Inhalte
- Eingebettetes Design mit FPGAs: Hardware-Ressourcen
- Eingebettetes Design mit FPGAs: Implementierungssprachen
- Eingebettetes Design mit FPGAs: Entwicklungsprozess
- Open-Source-Tools vereinfachen FPGA-Programmierung
- Implementierung von Gleitkomma-Algorithmen in FPGAs oder ASICs
- FPGAs für Deep Learning nutzen
- Software-Tools migrieren GPU-Code zu FPGAs für KI-Anwendungen
- FPGAs verdrängen ASICs in Subaru Eyesight vision-basiertem ADAS
Abonnieren Sie Embedded's wöchentlichen Newsletter für weitere Einblicke.
Eingebettet
- Flüssig-Additive Fertigung: 3D-Objekte mit flüssigen Materialien fertigen
- Embedded-System-Design: Schritte, Prinzipien und praxisnahe Anwendungen
- Eingebettete KI nutzt Big Data für actionable Smart Insights
- Arrow Electronics kündigt European FPGA Design Contest an – Gratis Development Board & Preise gewinnen
- MAXREFDES220# – Manschettenlose Blutdruckmessung mit optischen Sensoren
- Microchip startet Defense-Grade PolarFire SoC FPGA mit Early Access Program
- Roboter mit Raspberry Pi und Python bauen: Komplette Anleitung
- Selbstbalancierenden Segway mit Raspberry Pi bauen
- GoPiGo v2 auf Windows 10 IoT Core für Raspberry Pi 3 erweitern
- Produktionsmaximierung durch fortschrittliche Additive-Manufacturing-Software