Aan de slag met Verilog en VHDL: Duidelijke Gids voor HDL Basisprincipes
Inleiding:
In dit artikel zullen we je introduceren tot VHDL en Verilog. We zullen ook de basale structuur van een Verilog-module bestuderen en vertrouwd raken met het Verilog 'wire' datatype en de vectorvorm ervan. We zullen je ook het basale verschil tussen Verilog en VHDL vertellen.
Wat is Verilog?
Verilog is een type Hardware Description Language (HDL), gestandaardiseerd als IEEE 1364. Het wordt het meest gebruikt om elektronische circuits en systemen te beschrijven, gebruikt in het ontwerp en de verificatie van digitale circuits.
Wat is VHDL?
VHDL is ook een type Hardware Description Language (HDL) die gebruikt wordt in elektronische ontwerpautomatisering om het gedrag en de structuur van elektronische systemen te beschrijven en is met name geschikt als een taal om de structuur en het gedrag van digitale elektronische hardware-ontwerpen alsook conventionele digitale circuits te beschrijven.
Heb ik Zowel Verilog als VHDL Nodig?
Voordat we doorgaan, laten we bespreken of we beide talen nodig hebben? Beide zijn krachtige tools die gebruikt worden in het ontwerpen van complexe digitale circuits, maar je bent vrij om er een te meesteren die je wilt gebruiken. Je moet echter een basaal begrip van beide talen hebben.
De Evolutie van Verilog
Verilog werd in 1984 ontworpen bij Gateway Design Automation. In 1987 werd VHDL een IEEE-standaard, terwijl Verilog het in 1995 maakte. Vandaag zijn beide krachtige HDL's (Hardware Description Languages). Het woord 'Verilog' is afgeleid van de woorden 'verification' en 'logic'. Dit is omdat de taal eerst werd gebruikt als een simulatie- en verificatie-tool.
Nu zullen we enkele Verilog-concepten bespreken.
Voorbeeld 1:
In dit voorbeeld laten we de Verilog-code schrijven voor het circuit zoals hieronder getoond.
Er zijn twee ingangen en één uitgang getoond en de poorten zijn één bit breed. Het circuit toont een AND-functie van de twee ingangen resulterend in een uitgang op de out1-poort. De Verilog-beschrijving kan worden getoond als:
Regels 1 en 8:
De trefwoorden 'module' en 'endmodule' worden gebruikt om de regels ertussen aan te geven die het Circuit_1 beschrijven.
Regels 2 tot 6:
Deze regels specificeren de interface van 'Circuit_1' met zijn omgeving. De trefwoorden 'input' en 'output' tonen de in- en uitgangspoorten. Daarna specificeert het trefwoord 'wire' een Verilog-datatype dat een fysieke draad in het ontwerp vertegenwoordigt. Er zijn drie draden a, b en out1 in onze module.
Regel 7:
De regel beschrijft de AND-functionaliteit van het circuit met de bitwise AND-operator '&'. Het trefwoord 'assign' wordt gebruikt om a & b op de uitgangspoort te plaatsen. Dit staat ook bekend als een continue toewijzing, omdat het altijd actief is wanneer de expressie aan de rechterkant verandert, de linkerkant opnieuw geëvalueerd wordt, d.w.z. de output wordt continu bijgewerkt.
Vergelijking van Voorbeeld 1 met de VHDL-code:
De onderstaande figuur toont de Verilog- en VHDL-beschrijvingen voor de Circuit_1-module.
In VHDL moeten we enkele bibliotheken opnemen die de datatypes en operatoren definiëren. Daarom is de VHDL-code meer beschrijvend. Echter, in sommige gevallen is dit voordelig bij het modelleren van hogere-systemen.
Vier-Waarden Systeem van Verilog:
Er zijn vier waarden die in Verilog-datatypes worden gebruikt:
- 0: lage logica/false
- 1: hoge logica/true
- z: voor de hoge-impedantie-toestand (ook gebruikt om de uitgang van een tri-state buffer te beschrijven)
- x: onbekende waarde
De VHDL std_logic datatype kan negen verschillende waarden aannemen, maar veelgebruikte waarden zijn '0', '1', 'Z' en '-' ('-' duidt een onbekende waarde aan).
Voorbeeld 2:
In het volgende voorbeeld laten we de Verilog-code schrijven voor het circuit (Circuit_2) getoond in de onderstaande figuur.
De volgende Verilog-code beschrijft het getoonde circuit:
De gebruikte elementen zijn vergelijkbaar met die in ons vorige voorbeeld, echter, een intern signaal wordt gedefinieerd in regel 10. Het trefwoord 'wire' specificeert het datatype van deze verbinding. De bitwise operator '~' wordt gebruikt voor NOT en '|' voor OR-bewerkingen. De bitwise operator '^' wordt gebruikt voor XOR-bewerking.
De volgende figuur toont zowel de Verilog- als VHDL-beschrijvingen voor de Circuit_2-module, zodat je de verschillen kunt observeren.
Voorbeeld 3:
Voor ons derde en laatste voorbeeld zullen we de Verilog-code geven voor het schema getoond in de volgende figuur:
Je zult opmerken dat de rode en blauwe ingangsgepoorten gecombineerd zijn met de AND-operator. Het resultaat wordt getoond door de uitgangspoort. We kunnen de signalen groeperen en ze behandelen als een vector wat onze code compact en leesbaar maakt. We kunnen het bovenstaande circuit beschrijven door de Verilog-code te gebruiken. We kunnen de code ook eenvoudig uitbreiden van Listing 1 om dit circuit te beschrijven.
Houd er rekening mee dat het indexbereik van de vectoren oplopend kan zijn zoals getoond ([0:2]) of aflopend ([2:0]). Het aflopende formaat is doorgaans minder foutgevoelig en kan in plaats daarvan worden gebruikt.
Industriële technologie
- Machine Learning Inzetten voor MRO Supply Chain Optimalisatie
- E‑commerce & fysieke winkels: Een strategische symbiose
- Tekort aan Chassiswielen: Hoe Gebrek aan Mobiliteit Mondiale Supply Chains in de Knoop Drukt
- De Juiste Pompkoppeling Kiezen: Een Praktische Gids voor Betrouwbare Prestaties
- Industrie 4.0 vs Industrie 5.0: Wat Verandert En Waarom Het Belangrijk Is
- Polyurethaan ontdekken: typen, toepassingen en waarom het moderne industrieën domineert
- Freesmachines Begrijpen: Functies, Toepassingen en Voordelen
- Sterktetesten Uitgelegd: Materiaallimieten Meten voor Cruciale Componenten
- De toekomst vormgeven: Innovaties in metaalbewerkingsvloeistoffen, smeermiddelen en koelmiddelen
- Oogjes Begrijpen: Typen, Toepassingen En Hoe Ze Uw Apparatuur Beschermen
- Kevlar Ontmaskerd: Samenstelling, Toepassingen, En Voordelen