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

Concurrente statements in VHDL onder de knie krijgen: een praktische gids

Een concurrente statement in VHDL is een signaaltoewijzing die direct in een architectuur staat, buiten elk process-blok. Het wordt ook wel een concurrente toewijzing of concurrente proces genoemd.

Wanneer je een concurrente statement schrijft, creëer je effectief een proces dat automatisch gevoelig is voor elk signaal dat aan de rechterkant van de toewijzing verschijnt. Met andere woorden, een concurrente toewijzing is syntactische suiker voor een proces met een volledige gevoeligheidslijst.

Deze afkorting is vooral handig wanneer je eenvoudige combinationele logica wilt implementeren die een enkel signaal aandrijft. In plaats van een vol process-construct met een gevoeligheidslijst uit te schrijven, kun je direct toewijzen aan het doelsignaal in de architectuur-body.

Deze tutorial is onderdeel van de Basic VHDL Tutorials-reeks.

Wanneer correct gebruikt, blijft de intentie van de code kristalhelder – geen behoefte om het ontwerp te verwarren met een proces voor elk enkel bitje dat je wilt toggelen.

Oefening

In deze video leren we hoe je een concurrente statement maakt:

De definitieve code die we in deze tutorial maakten:

library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity T13_ConcurrentProcsTb is end entity; architecture sim of T13_ConcurrentProcsTb is signal Uns : unsigned(5 downto 0) := (others => '0'); signal Mul1 : unsigned(7 downto 0); signal Mul2 : unsigned(7 downto 0); signal Mul3 : unsigned(7 downto 0); begin process is begin Uns <= Uns + 1; wait for 10 ns; end process; -- Proces dat Uns met 4 vermenigvuldigt process is begin Mul1 <= Uns & "00"; wait on Uns; end process; -- Equivalent proces met gevoeligheidslijst process(Uns) is begin Mul2 <= Uns & "00"; end process; -- Equivalent proces met een concurrente statement Mul3 <= Uns & "00"; end architecture; 

Het golfform-venster in ModelSim nadat we op run drukten, en inzoomden op de tijdlijn:

Concurrente statements in VHDL onder de knie krijgen: een praktische gids

We zien uit de golfform dat Mul1, Mul2 en Mul3 zich exact hetzelfde gedragen. Dit bevestigt dat een concurrente statement en de twee processen die we schreven volledig equivalent zijn.

Een concurrente statement werkt net als een proces: alle signalen die aan de rechterkant van de <= verschijnen, worden impliciet aan de gevoeligheidslijst toegevoegd. Daardoor wordt het signaal aan de linkerkant geüpdatet wanneer een van die geëvalueerde signalen verandert.

In dit voorbeeld vermenigvuldigden we het Uns-signaal met 4 door een linkse bitshift. Al onze signalen zijn van het unsigned-type, dus de compiler behandelt ze als numerieke waarden. Het toevoegen van twee nul-bits aan de rechterkant van een binair getal is equivalent aan vermenigvuldiging met 4.

Concurrente statements in VHDL onder de knie krijgen: een praktische gids

Kernpunten

  • Een concurrente statement is een signaaltoewijzing geplaatst direct in de architectuur.
  • Het is functioneel identiek aan een proces met alle rechterkant-signalen op zijn gevoeligheidslijst.

Ga door naar de volgende tutorial »

VHDL

  1. VHDL Procedure Voorbeeld: Een Standard Logic Vector Incrementeren
  2. Dynamische string-lijsten in VHDL: Best Practices & Voorbeeld
  3. Een Tcl-gedreven testbench maken voor een VHDL code-lock module
  4. Een VHDL-testbench netjes beëindigen: methoden en best practices
  5. Een PWM-controller implementeren in VHDL: Ontwerp, Simulatie en FPGA-demo
  6. Ontwerpen van een robuuste VHDL-ringbuffer FIFO in blok-RAM
  7. Een self-checking testbench in VHDL bouwen – Een praktische gids
  8. Een dynamische gelinkte lijst in VHDL implementeren met protected types en access pointers
  9. In-process procedures benutten voor schonere VHDL FSM-ontwerpen
  10. Impure functies in VHDL gebruiken: FSM-leesbaarheid en onderhoudbaarheid verbeteren
  11. VHDL-functies onder de knie krijgen: een praktische gids voor efficiënt ontwerp