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

VHDL onder de knie krijgen: Uitgebreide introductie voor FPGA en ASIC-ontwerp

Tutorial – Inleiding tot VHDL

VHDL is een gruwelijke acroniem. Het staat voor VHSIC Hardware Description Language. Een acroniem binnen een acroniem, geweldig! VHSIC staat voor Very High Speed Integrated Circuit. VHDL uitgewerkt is dus Very High Speed Integrated Circuit Hardware Description Language. PHEW, dat is een mondvol. VHDL is een van de twee talen die door onderwijs en bedrijven worden gebruikt om FPGA's en ASIC's te ontwerpen. U kunt eerst profiteren van een introductie tot FPGA's en ASIC's als u onbekend bent met deze fascinerende stukken circuitry. VHDL en Verilog zijn de twee talen die digitale ontwerpers gebruiken om hun circuits te beschrijven, en ze zijn van ontwerp anders dan traditionele softwaretalen zoals C en Java.

In het onderstaande voorbeeld maken we een VHDL-bestand dat een And Gate beschrijft. Als herhaling: een eenvoudige And Gate heeft twee ingangen en één uitgang. De uitgang is gelijk aan 1 alleen wanneer beide ingangen gelijk aan 1 zijn. Hieronder ziet u een afbeelding van de And Gate die we met VHDL gaan beschrijven.

Een And Gate

Laten we beginnen! De fundamentele eenheid van VHDL heet een signaal. Voor nu laten we aannemen dat een signaal 0 of 1 kan zijn (er zijn eigenlijk meer mogelijkheden, maar we komen daar later op). Hier is een basis VHDL-logica:

signal and_gate : std_logic;
and_gate <= input_1 and input_2;

De eerste regel definieert een signaal van type std_logic en heet and_gate. Std_logic is het type dat het meest gebruikt wordt om signalen te definiëren, maar er zijn andere die u later leert kennen. Deze code genereert een AND-poort met één uitgang (and_gate) en twee ingangen (input_1 en input_2). Het trefwoord "and" is gereserveerd in VHDL. De operator "<=" is de toewijzingsoperator. Als u de code hierboven hardop leest, kunt u zeggen: "Het signaal and_gate KRIJGT input_1 en-ed met input_2."

Nu vraagt u zich misschien af waar input_1 en input_2 vandaan komen. Zoals hun namen impliceert, zijn ze ingangen naar dit bestand, dus u moet de tools hierover informeren. In- en uitgangen naar een bestand worden gedefinieerd in een entity. Een entity bevat een port die alle in- en uitgangen naar een bestand definieert. Laten we een eenvoudige entity maken:

entity example_and is
port (
    input_1 : in std_logic;
    input_2 : in std_logic;
    and_result : out std_logic
);
end example_and;

Dit is uw basisentiteit. Het definieert een entiteit genaamd example_and en 3 signalen, 2 ingangen en 1 uitgang, allemaal van type std_logic. Er is nog één ander VHDL-trefwoord nodig om dit compleet te maken: architecture. Een architectuur wordt gebruikt om de functionaliteit van een bepaalde entiteit te beschrijven. Denk aan een thesis: de entity is de inhoudsopgave en de architectuur is de inhoud. Laten we een architectuur voor deze entiteit maken:

architecture rtl of example_and is
signal and_gate : std_logic;
begin
    and_gate <= input_1 and input_2;
    and_result <= and_gate;
end rtl;

De bovenstaande code definieert een architectuur genaamd rtl van entiteit example_and. Alle signalen die door de architectuur worden gebruikt, moeten worden gedefinieerd tussen de trefwoorden "is" en "begin". De daadwerkelijke architectuurlogica komt tussen de trefwoorden "begin" en "end". U bent bijna klaar met dit bestand. Een laatste ding dat u de tools moet vertellen is welke library te gebruiken. Een library definieert hoe bepaalde trefwoorden zich in uw bestand gedragen. Voor nu, neem gewoon aan dat u deze 2 regels bovenaan uw bestand nodig heeft:

library ieee;
use ieee.std_logic_1164.all;

Gefeliciteerd! U heeft uw eerste VHDL-bestand gemaakt. U kunt het voltooide bestand hier zien:

library ieee;
use ieee.std_logic_1164.all;
entity example_and is
port (
    input_1 : in std_logic;
    input_2 : in std_logic;
    and_result : out std_logic
);
end example_and;
architecture rtl of example_and is
signal and_gate : std_logic;
begin
    and_gate <= input_1 and input_2;
    and_result <= and_gate;
end rtl;

Lijkt het alsof u veel code moest schrijven om gewoon een AND-poort te maken? Ten eerste, AND-poorten zijn niet stom. Ten tweede, u heeft gelijk; VHDL is een zeer uitgebreide taal. Wennen u zich aan het feit dat iets wat in software heel eenvoudig was, in een HDL zoals Verilog of VHDL aanzienlijk langer duurt. Maar vraag maar eens een software-ontwikkelaar om een afbeelding te genereren op een VGA-monitor die Conway's Game of Life weergeeft en kijk hoe hun hoofd in verbazing draait! Overigens, die video is gemaakt met VHDL en een FPGA. U zult dat binnenkort ook kunnen!

Vervolgens bespreken we een ander fundamenteel VHDL-trefwoord: process.

VHDL

  1. Gratis VHDL-simulator & editor setup: Een studentengids
  2. VHDL onder de knie krijgen: Uitgebreide introductie voor FPGA en ASIC-ontwerp
  3. Een PWM-controller implementeren in VHDL: Ontwerp, Simulatie en FPGA-demo
  4. Quartus Prime IP-bibliotheken integreren in VUnit: een stapsgewijze handleiding
  5. Impure functies in VHDL gebruiken: FSM-leesbaarheid en onderhoudbaarheid verbeteren
  6. Geavanceerde VHDL-quiz – Deel 2: Test je HDL-expertise
  7. Je eerste VHDL-programma: Stap-voor-stap Hello World tutorial
  8. FPGA-gebaseerde RC Servo-controller ontwerpen met nauwkeurige PWM
  9. VHDL Basics Quiz – Deel 4: Test je begrip
  10. Een AXI FIFO implementeren in Block RAM met Ready/Valid Handshake
  11. While-lussen in VHDL: Dynamische iteratiecontrole