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

Tutorial - Combinatie- en sequentiële code schrijven

VHDL-proces of Verilog Always Blocks gebruiken

Deze tutorial laat zien hoe je blokken van VHDL of Verilog schrijft die zijn opgenomen in een Proces of een Altijd blokkeren respectievelijk. Processen (in VHDL) en Always Blocks (in Verilog) zijn fundamenteel en moeten goed worden begrepen. Ze gedragen zich op precies dezelfde manier, dus beide worden hier voor u geïntroduceerd. Als u nu slechts één taal leert, let dan op de voorbeelden die op die specifieke taal zijn gericht. Processen of Always Blocks worden in twee hoofdscenario's gebruikt:

  1. Een blok van combinatie define definiëren logica
  2. Een blok van opeenvolgend . definiëren logica

Het eerste scenario is wat vaak wordt gezien in studieboeken bij het introduceren van Processen of Always Blocks aan een nieuwe student. Het wordt hier voor u gepresenteerd, om u bewust te maken van het bestaan ​​ervan. Maar in werkelijkheid wordt een proces/altijd blok dat wordt gebruikt om een ​​blok van combinatorische logica te definiëren veel minder vaak gezien in "real-world" code dan een proces/altijd blok dat wordt gebruikt om sequentiële logica te definiëren.

De eerste vraag die je jezelf misschien stelt, is wat het verschil is tussen combinatorische en sequentiële logica? Combinatielogica (of combinatorische) logica is logica waarvoor geen klok nodig is om te werken. Het voorbeeld van de en-poort eerder is een combinatievoorbeeld. Sequentiële logica is logica waarvoor een klok nodig is om te werken. De meest fundamentele bouwsteen van sequentiële logica is de D Flip-Flop (hieronder afgebeeld).

De D Flip-Flop!

Als je niet weet hoe een D Flip-Flop werkt, stop dan meteen met lezen! U moet begrijpen hoe flip-flops worden gebruikt in FPGA's voordat u verder leest. Helemaal klaar? Goed.

Combinatieproces in VHDL:

process (input_1, input_2)
begin
    and_gate <= input_1 and input_2;
end process;

Combinatie altijd blokkeren in Verilog:

always @ (input_1 or input_2)
  begin
    and_gate = input_1 & input_2;
  end

In zowel de VHDL- als de Verilog-code hierboven staan ​​input_1 en input_2 in een zogenaamde gevoeligheidslijst . De gevoeligheidslijst is een lijst van alle signalen die ervoor zorgen dat het proces/altijd blokkering wordt uitgevoerd. In het bovenstaande voorbeeld zorgt een wijziging van input_1 of input_2 ervoor dat de Process/Always Block wordt uitgevoerd. Dit proces/altijd blok neemt de twee ingangen, voert er een "en" bewerking op uit en slaat het resultaat op in het signaal and_gate. Dit is exact dezelfde functionaliteit als deze code:

-- VHDL:
and_gate <= input_1 and input_2;
// Verilog:
assign and_gate = input_1 & input_2;

Beide voorbeelden van code hebben hetzelfde doel:het signaal and_gate toewijzen. Het verschil is dat de ene in een combinatorisch proces/altijd blokkering zit en de andere niet. Daarom, aangezien hetzelfde resultaat kan worden bereikt zonder het gebruik van een combinatie van Process/Always Block, raad ik de beginnende digitale ontwerper niet aan om deze uitspraken op deze manier te gebruiken.

De tweede manier waarop een Process of Always Block kan worden gebruikt (en het veel interessantere voorbeeld) is om een ​​blok van sequentiële logica te definiëren. Nogmaals, sequentiële logica is logica die wordt geklokt.


VHDL

  1. Tutorial - Combinatie- en sequentiële code schrijven
  2. Voor- en nadelen van Infrastructure-as-Code
  3. Inleiding tot gecombineerde logische functies
  4. Wat is codering:werken, talen en zijn uitdagingen
  5. Geïntegreerde Logic Analyzer (ILA) en virtuele invoer/uitvoer (VIO) gebruiken
  6. Java Stack and Heap:zelfstudie over Java-geheugentoewijzing
  7. CSV-bestand lezen in Python | CSV-bestand lezen en schrijven
  8. Combinatielogica met toewijzen
  9. Ladderlogica 102:de voor- en nadelen
  10. Schrijfprocedures:eenvoudig en efficiënt door digitaal te gaan
  11. De verschillen tussen G-code en M-code