Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> VHDL

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Deze tutorial begeleidt je door het gebruik van de Integrated Logic Analyzer (ILA) en Virtual Input/Output (VIO) cores van Xilinx Vivado om VHDL-ontwerpen on-chip te debuggen en te monitoren. Aan het einde weet je hoe je probes invoegt, triggers configureert en nauwkeurig signaalgedrag vastlegt zonder externe apparatuur.

Overzicht

In dit artikel verwijzen we naar Vivado-screenshots. Klik op elke afbeelding om te vergroten. Gebruik de zijbalk of de mobiele pop-up navigatie voor snelle toegang.

ILA en VIO

De ILA IP laat je interne FPGA-signalen in realtime proberen, terwijl de VIO IP je in staat stelt om interne signalen vanuit Vivado aan te sturen. Beide zijn gratis, hoog configureerbaar en integreren naadloos in de Vivado-workflow.

  • Xilinx IP: Integrated Logic Analyzer (ILA)
  • Xilinx IP: Virtual Input/Output (VIO)

Vereisten

  1. Een Xilinx FPGA-board
  2. De Vivado Design Suite (2020.2 of nieuwer)
  3. Basiskennis van VHDL

We gebruiken in de voorbeelden de Kintex‑7 KC705 Evaluation Kit, maar de stappen gelden voor elk moderne Xilinx FPGA.

Download het voorbeeldproject

Download de ZIP met het voorbeeldontwerp en VHDL-bestanden. Open ila_tutorial.xpr in Vivado om het ontwerp te verkennen, of lees verder om het vanaf nul te maken.

Maak een project met Vivado

Start Vivado en klik op Create Project op het welkomstscherm.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Volg de wizard: noem het project ila_tutorial (geen spaties), selecteer RTL Project, en voeg bronnen counter.vhdl en counter_top.vhdl toe. Schakel Copy sources into project in en ga verder.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Voeg het constraint-bestand top.xdc toe, kopieer het in het project. Pas klok- en LED-pinnen aan aan je board, en stel de juiste klokperiode in.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Selecteer je board uit de lijst en klik op Finish om het project te openen.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Overzicht van het ontwerpvoorbeeld

Het voorbeeld bestaat uit twee 4-bit tellers in keten. counter.vhdl implementeert een teller die incrementeert wanneer geactiveerd en een 1-bit trigger uitgang activeert tussen tellerwaarden 12 en 15.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Entiteitsdeclaratie:

 ---------------------------------------------------------------------------- -- ENTITEITSDECLARATIE. ---------------------------------------------------------------------------- ENTITY counter IS PORT(clk : IN STD_LOGIC; -- Hoofdklok reset : IN STD_LOGIC; -- reset, actief hoog enable : IN STD_LOGIC; -- activeer volgende teller trigger : OUT STD_LOGIC -- trigger volgende teller ); END ENTITY; 

Interne signalen:

  • count – de 4-bit tellerwaarde.
  • trigger_o – intermediair signaal verbonden met de trigger uitgang.

Attribuutgebruik (wordt later uitgelegd):

 ATTRIBUTE MARK_DEBUG : STRING; ATTRIBUTE MARK_DEBUG OF count : SIGNAL IS "true"; 

Sequentiële logica:

 seq_proc: PROCESS (reset, clk) BEGIN -- for seq_proc IF (reset = '1') THEN count <= (OTHERS => '0'); trigger_o <= '0'; ELSIF rising_edge(clk) THEN IF (enable = '1') THEN count <= count + 1; IF (count > x"B" AND count <= x"F") THEN trigger_o <= '1'; ELSE trigger_o <= '0'; END IF; END IF; END IF; END PROCESS; 

counter_top.vhdl instantieert twee tellers. counter_1_inst is altijd geactiveerd en klokt counter_2_inst via zijn trigger uitgang. Gevolg: counter_2_inst incrementeert slechts vier keer per 16-cycli cyclus van counter_1_inst.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Maak een VIO-core voor RESET

We genereren een VIO die de reset invoer van het ontwerp aanstuurt, zodat handmatig getoggled kan worden vanuit Vivado.

Open IP Catalog, zoek VIO, dubbelklik VIO (Virtual Input/Output), hernoem naar vio_reset. Zet Input Probe Count op 0 en Output Probe Count op 1.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Configureer de output probe: breedte = 1, beginwaarde = 0x1, klik OK en Generate.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Na synthese, declareer een component in counter_top.vhdl en instantieer het. Vergeet niet flatten_hierarchy op None te zetten voor her-synthese.

 COMPONENT vio_reset PORT( clk : IN STD_LOGIC; probe_out0 : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) ); END COMPONENT; 

Debug-probes invoegen

Signalen kunnen op drie manieren geprobed worden:

  1. Vanaf de VHDL-bron (via MARK_DEBUG attributen).
  2. Vanaf de Netlist of Schematic (rechtsklik Mark Debug).
  3. Vanaf een XDC/TCL-bestand (niet behandeld hier).

Invoegen vanuit VHDL-bestand

Declareer het MARK_DEBUG attribuut één keer per bestand, pas het toe op gewenste signalen:

 ATTRIBUTE MARK_DEBUG : STRING; ATTRIBUTE MARK_DEBUG OF count : SIGNAL IS "true"; 

In het gesynthetiseerde ontwerp verschijnt count onder Unassigned Debug Nets met een bug-icoon.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Invoegen vanuit Netlist

Navigeer naar Netlist of Schematic, zoek het trigger net, rechtsklik, en kies Mark Debug voor beide tellers.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Maak de ILA debug core

Open Set Up Debug vanuit de IP Catalog. Vivado toont alle debug nets en hun klokdomeinen. Houd alle vier signalen voor deze tutorial.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Configureer de ILA FIFO diepte (1024 is voldoende) en schakel Capture control in. Voltooi de wizard; Vivado genereert een ILA core en een constraint-bestand.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Sla het constraint op als ila_core.xdc. Dit bestand past debug-attributen toe, creëert de ILA core, configureert elke probe, en instantieert een dbg_hub die de core verbindt met Vivado. Werk de hub-klokfrequentie bij aan je ontwerp.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Voer synthese, implementatie en bitstream-generatie opnieuw uit. Open Hardware Manager, auto-connect, en programmeer het apparaat samen met het .ltx probe-bestand.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Configureer ILA triggers

Na programmeren verschijnt het ILA-dashboard. Schakel het VIO-tabblad in en verwijder onnodige vensters. Voeg de reset probe toe aan de VIO zodat je deze tijdens vastleggen kunt togglen.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Stel een trigger in op counter_1_inst/trigger met een stijgende-flank conditie en een pre-trigger venster van 32 samples.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

ILA draaien met één trigger

Arm de trigger (status schakelt naar waiting for trigger) en toggle reset naar 0. Zodra de trigger afviert, registreert de ILA 32 samples voor het evenement en gaat door tot de FIFO vol is.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Uitzoomen onthult het gedrag van counter_2_inst ook.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

ILA draaien met meerdere triggers

Voor complexe scenario's, koppel meerdere triggers. Bijv. trigger wanneer counter_1_inst/count == 9 EN counter_2_inst/count > 2, de FIFO opgedeeld in vier vensters.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Auto Re-trigger modus

Schakel Auto re-trigger in om sporadisch of met hoge frequentie optredende evenementen vast te leggen. Configureer een enkele trigger, stel FIFO-diepte in, en arm de core.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Capture modus

Capture modus registreert alleen samples die voldoen aan een globale conditie. Bijv. vastleggen wanneer counter_1_inst/trigger == 1 EN counter_2_inst/trigger == 0 gelijktijdig.

Xilinx Vivado onder de knie: Integrated Logic Analyzer (ILA) & Virtual Input/Output (VIO) debugging

Conclusie

ILA en VIO zijn krachtige, gratis tools voor on-chip debugging. Door probes, meerdere triggers en capture modi te benutten, kun je complexe FPGA-ontwerpen precies monitoren en sturen direct vanuit Vivado.

VHDL

  1. Een externe temperatuursensor bouwen met Raspberry Pi en Python – Stap-voor-stap handleiding
  2. RightHand Robotics & Element Logic lanceren geïntegreerd robotica piece-picking systeem
  3. Cloudhorizonten Uitbreiden: Nieuwe Zones, Containers En Multicloud-strategieën
  4. C# Fundamentals: Invoer en Uitvoer Basis
  5. C++ input en output: een praktische gids
  6. C Input en Output (I/O) Beheersen: scanf() en printf() Uitgelegd
  7. Invoer en uitvoer in C programmeren: Volledige gids
  8. VHDL & Verilog Meesteren: Schone Combinatoire en Sequentiele Logica Schrijven
  9. D Latches Onder de Knie: Ontwerp, Werking en Belangrijke Verschillen
  10. Python I/O en Module Imports onder de knie krijgen: Een praktische gids
  11. Java Input & Output beheersen: printen, lezen en formatteren