Aan de slag met FPGA-ontwikkeling: Een 4-bit-adder bouwen op Xilinx Artix‑7
Opmerking van de redacteur: Naarmate geavanceerde algoritmes blijven evolueren, worstelen embedded-ontwerpers vaak om aan de verwerkingsvereisten van moderne toepassingen te voldoen. Field‑Programmable Gate Arrays (FPGAs) bieden de benodigde prestaties, en recente hardware- en tooling-vooruitgang hebben FPGA-ontwikkeling toegankelijk gemaakt voor een breder publiek. Dit artikel, de vierde in een reeks afgeleid van *Architecting High‑Performance Embedded Systems* door Jim Ledin, biedt een hands-on walkthrough van het bouwen van een eenvoudig maar compleet FPGA-project.
Uw eerste FPGA-project ontwikkelen
We zullen een 4-bit binaire adder construeren op een Xilinx Artix‑7 FPGA gehuisvest in een Digilent Arty A7-ontwikkelboard. Twee board-varianten zijn beschikbaar: het kosteneffectieve 35T-model (US $129) en het krachtigere 100T-model (US $249). Het enige verschil is de FPGA-variant, wat de beschikbare logica-bronnen beïnvloedt. De 100T is te verkiezen voor toekomstige projecten die meer bronnen vereisen, zoals het digitale oscilloscop-voorbeeld in latere hoofdstukken.
Aankoopopties: Digilent Store, Amazon, en andere retailers.
Voor deze tutorial richten we ons op de FPGA-kern, vier gebruikersschakelaars, vier drukknoppen, en vijf LEDs. De onderstaande stappen dekken het installeren van de Vivado-tool-suite, een project aanmaken, VHDL-code schrijven, en een bitstream laden op het board – zowel in volatile configuratiegeheugen als in onboard flash voor persistente operatie.
Projectoverzicht
Het ontwerp implementeert een 4-bit-adder. Vier schakelaars leveren de eerste 4-bit-operand, vier drukknoppen leveren de tweede. De FPGA telt continu deze operanden op en toont de 4-bit-som op vier LEDs, met een vijfde LED die de carry-out aangeeft. Dit eenvoudige ontwerp laat ons focussen op de toolchain-workflow in plaats van complexe logica.
Vivado installeren
We gebruiken Xilinx Vivado, gratis beschikbaar voor Windows en Linux. De volgende instructies gaan uit van Windows; Linux-installatiestappen zijn analoog.
- Maak een Xilinx-gebruikersaccount aan: https://www.xilinx.com/registration/create-account.html
- Log in op https://xilinx.com en navigeer naar de downloadpagina.
- Download de Xilinx Unified Installer (Windows Self‑Extracting Web Installer). Voor consistentie met dit boek, selecteer versie 2020.1; anders, gebruik de nieuwste release.
- Draai de installer (bijv. Xilinx_1_0602_1208_Win64.exe). Als Windows de download blokkeert, kies "Toch installeren."
- Klik Volgende op het welkomstscherm.
- Voer uw Xilinx-credentials in en klik Volgende.
- Bevestig de licentieovereenkomsten en klik Volgende.
- Kies Vitis als product (Vitis bundelt Vivado en additionele tools). Klik Volgende.
- Accepteer de standaard component-selecties en klik Volgende.
- Selecteer een doelmap (bijv. C:\Xilinx) en klik Volgende.
- Bekijk de samenvatting en klik Installeren. Installatie kan enkele minuten duren.
Eenmaal geïnstalleerd, start Vivado vanaf het bureaublad-snelkoppeling of Start-menu.
Het project aanmaken
- Open Vivado en klik Create Project in het Quick Start-paneel.
- Voer ArtyAdder in als projectnaam, kies een map (bijv. C:\Projects), en vink Create a subdirectory for this project aan. Klik Volgende.
- Selecteer RTL Project en vink Do not specify sources at this time aan. Klik Volgende.
- Onder het tabblad Boards, zoek naar "Arty" en kies Arty A7-100 of Arty A7-35 gebaseerd op uw hardware. Klik Volgende.
- Voltooi de wizard om een leeg project aan te maken.
VHDL-bronbestanden toevoegen
- In het Sources-paneel, rechtsklik Design Sources → Add Sources….
- Kies Add or create design sources en klik Volgende.
- Selecteer Create File, noem het FullAdder.vhdl, en klik OK.
- Herhaal om Adder4.vhdl aan te maken, klik dan Finish.
- Negeer het Define Modules-dialoogvenster; klik OK en bevestig met Ja.
- Open FullAdder.vhdl en plak de volgende code:
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;
- Open Adder4.vhdl en vervang de inhoud door:
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;
Volgende stappen
Het volgende artikel zal u leiden door het simuleren van dit ontwerp, het synthetiseren voor het Arty-board, en het programmeren van de resulterende bitstream op de FPGA.
Her gedrukt met toestemming van Packt Publishing. Copyright © 2021 Packt Publishing
Jim Ledin is de CEO van Ledin Engineering, Inc. Hij is gespecialiseerd in embedded software- en hardware-ontwerp, -ontwikkeling, en -testing, en heeft expertise in embedded-systeem cybersecurity, penetratietesting, en ethical hacking. Jim behaalde een B.S. in luchtvaarttechniek van Iowa State University en een M.S. in elektrische en computer-engineering van Georgia Institute of Technology. Hij is een gelicenseerde professionele elektrische ingenieur in Californië, een CISSP, CEH, en CPT-houder.
Gerelateerde inhoud
- Embedded-ontwerp met FPGAs: Hardware-bronnen
- Embedded-ontwerp met FPGAs: Implementatietalen
- Embedded-ontwerp met FPGAs: Ontwikkelproces
- Open-source tools vereenvoudigen FPGA-programmering
- Drijvende-komma algoritmes implementeren in FPGAs of ASICs
- FPGAs benutten voor deep learning
- Software-tools migreren GPU-code naar FPGAs voor AI-toepassingen
- FPGAs verdringen ASICs in Subaru Eyesight visie-gebaseerde ADAS
Abonneer je op Embedded's wekelijkse nieuwsbrief voor meer inzichten.
Ingebed
- Een Robot Bouwen met Raspberry Pi en Python: Een Complete Gids
- Een Zelf-balancerende Segway Bouwen met Raspberry Pi
- GoPiGo v2 Uitbreiden op Windows 10 IoT Core voor Raspberry Pi 3
- Productie maximaliseren met geavanceerde additieve productiesoftware
- Liquid Additive Manufacturing: 3D-Objecten Maken Met Vloeistofmaterialen
- Embedded Systeemontwerp: Stappen, Principes en Praktische Toepassingen
- Embedded AI benutten om Big Data om te zetten in actionable Smart Insights
- High-performance interconnects ontwerpen over PCIe-generaties heen
- Arrow Electronics kondigt Europees FPGA-ontwerpwedstrijd aan – win gratis development board en spannende prijzen
- MAXREFDES220# – Cuffless bloeddrukmonitoring met optische sensoren
- Microchip lanceert defense-grade PolarFire SoC FPGA met Early Access Program