In questo tutorial VHDL discuteremo alcuni dei concetti di base relativi alla tecnologia VHDL e alcuni esempi di codifica. Il tutorial VHDL è suddiviso come segue:
ARGOMENTI DI DISCUSSIONE
A. Cos'è VHDL?
B. Storia e standardizzazione
C. Procedure di progettazione VHDL
D. Alcune regole e informazioni di base su VHDL
E. Sintassi e alcuni concetti importanti per la scrittura di codici VHDL
F. Simulatori VHDL per tutorial VHDL
VHDL || Cos'è VHDL?
La forma completa di VHDL è l'acronimo di VHSIC-HDL (Very High Speed Integrated Circuit Hardware Description Language).
Come suggerisce il nome, VHDL è un linguaggio di descrizione dell'hardware o un tipo speciale di linguaggio di programmazione che descrive le implementazioni hardware del sistema e dei circuiti digitali. È un linguaggio fortemente tipizzato e va ricordato che non è un linguaggio di programmazione.
Storia e standardizzazione
Il Dipartimento della Difesa degli Stati Uniti ha un contributo significativo al moderno campo tecnologico. Ha dato vita a troppe grandi idee e innovazioni. La difesa americana ha anche sviluppato VHDL nell'anno 1983. È stato sviluppato per la documentazione del comportamento dei circuiti integrati specifici dell'applicazione.
Successivamente, alcune idee sono state implementate dai linguaggi di programmazione Ada. VHDL è stato standardizzato per la prima volta nel 1987. È stato aggiunto a diversi tipi di dati di diversi tipi, comprese le stringhe e numerici e logici.
Standardizzazione
VHDL o VHSIC-HDL (Very High Speed Integrated Circuit Hardware Description Language) è standardizzato dallo standard IEEE 1076. È in fase di aggiornamento dalla sua nascita e ha subito molte revisioni. Esaminiamo alcune delle revisioni standard e degli aggiornamenti principali.
Revisioni | Aggiornamenti |
IEEE 1076 - 1987 | Revisione e standardizzazione dalla difesa degli Stati Uniti. |
IEEE 1076 - 1993 | È uscito con la migliore versione ed è la versione più utilizzata. |
IEC 61691-1-1-1: 2004 | IEC ha adottato la versione IEEE 1076-2002 |
IEEE 1076-2008 | Aggiornato con alcune modifiche importanti come - Introduzione di generici sui pacchetti e uso di nomi esterni |
IEC 61691-1-1-1: 2011 | IEC ha adottato la versione IEEE 1076-2008 |
Progettazione di VHDL
Il design VHDL ha alcune unità di progettazione. Sono noti come entità, architettura, configurazione e pacchetto.
Entità: L'entità definisce le viste esterne di un modello che è un simbolo.
architettura: L'architettura definisce la funzionalità di un modello che è schematico.
Configurazione: La configurazione viene utilizzata per associare l'architettura a un'entità.
Confezione: Il pacchetto è la raccolta di informazioni a cui possono fare riferimento i moduli VHDL. Un pacchetto VHDL è costituito da due parti. Sono: dichiarazione del pacchetto e corpo del pacchetto.
Dichiarazione di entità
La struttura generale della dichiarazione di entità è fornita di seguito:
ENTITÀ < nome dell'entità > IS
Dichiarazioni generiche
Dichiarazioni di porto
ENTITÀ FINALE <nome dell'entità>;
- può essere alfabetico / numerico o alfanumerico.
- Le dichiarazioni generiche servono per passare le informazioni in un modello.
- Le dichiarazioni delle porte servono a descrivere i pin di input e output.
- Un'entità può essere chiusa in diversi modi.
- ENTITÀ FINALE <nome dell'entità>;
- ENTITÀ FINALE;
- FINE;
Dichiarazioni portuali
Di seguito viene fornita una struttura generale per le dichiarazioni di porto:
ENTITÀ < nome dell'entità > IS
Dichiarazioni generiche
- Dichiarazioni di porto:
PORT (
SEGNALE CLK, CL: IN POCO;
q: FUORI BIT
- nota che non c'è punto e virgola nell'ultima riga delle dichiarazioni.
);
ENTITÀ FINALE <nome dell'entità>;
La struttura della dichiarazione di porto: object_name : ;
- Classe: La classe è ciò che può essere fatto a un oggetto. Qui la classe è un segnale. Un punto da ricordare che il SEGNALE non viene scritto durante la scrittura del programma; piuttosto, si presume e non è richiesto.
- Nome_oggetto: È l'identificatore.
- Modalità: Specifica la direzione.
NEL - Ingresso
FUORI - Uscita
INGRESSO - bidirezionale
BUFFER - Uscita con feedback interno
- Tipo: Il tipo specifica cosa può essere contenuto all'interno di un oggetto.
Dichiarazioni generiche
Di seguito viene fornita una struttura generale delle dichiarazioni generiche:
ENTITÀnome_entità> IS
GENERICO (
COSTANTE tplh, tphl: ora := 5 ns;
tphz, tplz: TIME := 3n;
valore_predefinito: INTERO: = 1;
cnt_dir: STRING := "SU"
- nota che non c'è punto e virgola nell'ultima riga delle dichiarazioni.
);
Dichiarazioni di porto
ENTITÀ FINALEnome_entità>;
- I valori generici possono essere sovrascritti durante la compilazione.
- Generic deve possedere la tenacia ad una costante durante la compilazione di un programma.
Si noti che si presume la parola chiave CONSTANT e non è richiesta la scrittura.
Architettura
- Analogy-schematic: Analogy schematic fornisce la descrizione della funzionalità di un modello e dei tempi ad esso associati.
- L'architettura di un modello dovrebbe essere associata a un'ENTITÀ.
- Un'entità può avere molte architetture associate ad essa.
- Le istruzioni di architettura vengono eseguite contemporaneamente.
- Alcuni stili di architettura -
- Comportamentale: il modello comportamentale descrive come funzionano i progetti.
RTL: RTL descrive come i progetti possono essere implementati utilizzando i registri.
Funzionale: non include tempi.
- Strutturale: Implementazione della struttura a livello di gate.
- Flusso di dati: Implementazione della tavola della verità.
- L'architettura si conclude con -
- FINE ARCHITETTURA ;
- FINE ARCHITETTURA
- FINE;
Una struttura generale della scrittura di un'architettura:
ARCHITETTURA <identificatore> OF <entità_identificatore> IS
SEGNALE signal_1: INTERO: = 1;
COSTANTE cnst: = BOOLEANO: = true;
TIPO processo È (W X Y Z);
- Dichiarazioni di attributi
- Specifiche degli attributi
- Dichiarazioni di sottoprogrammi
- Corpo del sottoprogramma
INIZIO
Dichiarazioni di processo
Chiamate procedurali simultanee
Assegnazione del segnale
Genera dichiarazioni
FINE ARCHITETTURA <identificatore>;
Configurazione
Come discusso, un precedente configuration viene utilizzato per associare l'architettura a un'entità. L'associazione o la combinazione è necessaria perché una ENTITY non può funzionare finché l'architettura non è associata ad essa. Di seguito viene fornita una struttura generale della configurazione.
CONFIGURAZIONE < identificatore > OF < nome dell'entità > IS
PER < nome_architettura >
PER < nome_istanza >: Nome del componente > USO < entità > ( architettura >)
FINE PER;
PER < nome_istanza >: Nome del componente > USO < nome_configurazione >
FINE PER;
FINE PER;
FINE CONFIGURAZIONE < identificatore >;
Pack
I pacchetti VHDL sono un'intera unità di un intero sistema. È l'obiettivo principale dell'implementazione di VHDL. Un pacchetto è composto da due parti. Come detto in precedenza, le dichiarazioni del pacchetto e il corpo del pacchetto formano un pacchetto completo.
VHDL offre due pacchetti integrati.
Alcune regole e informazioni di base sul tutorial VHDL
Discutiamo per dare un'occhiata ad alcune informazioni di base prima di immergerci nell'esplorazione del tutorial VHDL.
1. Parole chiave riservate: VHDL ha alcune parole chiave riservate (che non possono essere utilizzate per dichiarare una variabile).
2. Parti: VHDL ha due passaggi o parti per la creazione di un modello. Uno è la simulazione e l'altro è la sintesi e la simulazione.
3. Linguaggio case sensitive: VHDL non è un linguaggio case sensitive (per la maggior parte della parte).
4. Commenti: Per commentare un'istruzione nell'editor di codice VHDL, inizia la frase con -, per un esempio:
- Questo è un commento in VHDL.
5. Risoluzione: I codici VHDL e ogni singola riga di codici vengono terminati utilizzando un punto e virgola (quando necessario).
6. Sensibilità allo spazio: VHDL non è sensibile allo spazio bianco.
Sintassi e alcuni importanti concetti dell'esercitazione VHDL per la scrittura di codici VHDL
- Matrice con esempi
- Processo con esempi
- IF - THEN - Implementazione ELSIF con esempi.
- Dichiarazione CASE
- PER LOOP
A. array
L'array memorizza il valore. È un tipo di dati definito dall'utente per memorizzare il valore. Un array può contenere variabili di segnale, tipo di costanti.
Di seguito viene fornita una struttura generale per dichiarare un array:
TIPO nome_array IS ARRAY (gamma) OF tipo di dati;
Ad esempio,
TYPE lambdageeks È ARRAY (da 0 a 9) OF std_logic_vector (0 UPTO 9);
B. Dichiarazione di processo
Il processo è un'istruzione simultanea e sincronizzata. Introduce le dichiarazioni cronologiche. Più processi vengono eseguiti parallelamente se il modello è necessario.
Un processo è composto da due parti. Sono l'esecuzione del processo e quindi attendono la condizione successiva.
SINTASSI:
processi lista_sensibilità
dichiarazioni
iniziare
dichiarazioni_cronologiche;
fine del processo;
C. IF - THEN - implementazione ELSIF
Queste istruzioni vengono utilizzate per implementare una condizione e per il loro risultato.
Una condizione if può avere un numero infinito di rami secondo il requisito. È anche possibile un numero considerevole di condizioni elsif. Ma, in un ciclo if, può esserci solo un'altra condizione. Un ciclo if viene terminato dall'istruzione if end. Se la condizione è vera, entrerà nel ciclo ed eseguirà l'istruzione. Se fallisce, allora scegli l'istruzione else o elsif.
La sintassi delle istruzioni è fornita di seguito.
SINTASSI
if espressione_booleana condizionale poi
dichiarazione 1
else espressione_booleana condizionale poi
dichiarazione 2
. . .
altro
dichiarazione 3
fine if;
D. Dichiarazione CASE
L'istruzione Case rileva quale istruzione verrà eseguita. Un'istruzione case può anche essere ramificata come cicli IF-ELSE.
SINTASSI
[etichetta]: Custodie < espressione-condizionale > is
quando < scegliere> =>
dichiarazione 1
quando <scegliere> =>
dichiarazione 2
...
quando <scegliere> =>
dichiarazione
fine Custodie [etichetta];
E. Ciclo FOR
Un ciclo for è un'esecuzione continua di istruzioni in base alle condizioni di delimitazione.
Per ogni ciclo FOR, abbiamo bisogno di un iteratore che eseguirà le operazioni nel ciclo for. È anche noto come identificatore. È un numero intero per impostazione predefinita e non è necessario dichiarare l'iteratore. È uno dei loop più comunemente usati per realizzare modelli complessi. È più familiare dei cicli while.
SINTASSI
[etichetta]: per iteratore in gamma loop
Dichiarazione 1
Dichiarazione 2
...
Dichiarazione n
fine ciclo [etichetta];
Simulatori VHDL per tutorial VHDL
Di seguito sono elencati alcuni dei famosi simulatori VHDL utilizzati per l'implementazione di VHDL.
- Xilinx Vivado: Il simulatore più famoso per VHDL è Xilinx Vivado. Xilinx fornisce dispositivi logici programmabili. Useremo questo simulatore per la parte successiva del tutorial VHDL.
- Cadenza incisiva: La versione precedente era nota come NC-VHDL.
- Simili VHDL: Symphony EDA lo sviluppa. È gratuito per i consumatori.
- GDL: Uno dei famosi simulatori VHDL gratuiti.
- Avvio: L'organizzazione Freerangefactory ha sviluppato il simulatore.
- NVC: Nick Gasson ha sviluppato il compilatore VHDL opensource.
- Parco giochi EDA: Un'altra versione gratuita basata su browser web.
- Sinossi VCS-MX.
Crea il tuo primo progetto utilizzando VHDL. Dai un'occhiata alla parte successiva del tutorial VHDL.
Per ulteriori articoli relativi all'elettronica, fare clic su qui!
Ciao, sono Sudipta Roy. Ho fatto B. Tech in Elettronica. Sono un appassionato di elettronica e attualmente mi dedico al campo dell'elettronica e delle comunicazioni. Nutro un vivo interesse nell'esplorazione delle tecnologie moderne come l'intelligenza artificiale e l'apprendimento automatico. I miei scritti sono dedicati a fornire dati accurati e aggiornati a tutti gli studenti. Aiutare qualcuno ad acquisire conoscenze mi dà un immenso piacere.
Colleghiamoci tramite LinkedIn –