VHDL e Verilog sono gli HDL del giorno. Quali sono i vantaggi di chi non ha alcuna esperienza con le HDL?
VHDL e Verilog sono gli HDL del giorno. Quali sono i vantaggi di chi non ha alcuna esperienza con le HDL?
Risposte:
Non posso dirti quale imparare, ma ecco alcuni punti contrastanti (da un utente molto incentrato sul VHDL, ma ho cercato di essere il più equo possibile!), Che possono aiutarti a fare una scelta in base alle tue preferenze in termini di stile di sviluppo:
E tieni a mente la famosa citazione che segue la linea "Preferisco qualunque delle due che non sto usando attualmente" (scusa, non ricordo chi l'abbia effettivamente scritto - forse Janick Bergeron?)
Molti errori di compilazione per cominciare, ma poi funziona principalmente come ti aspetti. Questo può portare a una curva di apprendimento della sensazione molto ripida (insieme alla sintassi sconosciuta)
Gli errori vengono riscontrati in seguito nella simulazione: la curva di apprendimento per "sentirsi come fare qualcosa" è più superficiale, ma va avanti più a lungo (se questa è la metafora giusta?)
Anche a favore di Verilog è che la verifica di fascia alta si appoggia sempre più a SystemVerilog, che è un'enorme estensione di Verilog. Ma gli strumenti di fascia alta possono anche combinare il codice di sintesi VHDL con il codice di verifica SystemVerilog.
Per un altro approccio interamente: MyHDL ottieni tutta la potenza di Python come linguaggio di verifica con un set di estensioni di sintesi da cui puoi generare VHDL o Verilog.
O Cocotb - tutta la potenza di Python come linguaggio di verifica, con il tuo codice sintetizzabile ancora scritto in qualsiasi HDL che hai deciso di imparare (ad esempio VHDL o Verilog).
Ho imparato entrambi la stessa settimana. VHDL è come ADA / Pascal e Verilog è come C. VHDL è più prolisso e più doloroso per ottenere una compilazione, ma una volta ottenuta una compilazione le tue possibilità di successo sono migliori. Almeno questo è quello che ho trovato. Verilog, come C, è abbastanza contento di lasciarti sparare in un piede. Alcune industrie come quelle aerospaziali / governative si inclinano verso il VHDL, altre verso Verilog. Il problema che riscontro con entrambi è la capacità del banco di prova, e quando si cerca di imparare e provare a passare dalla simulazione alla scrittura in silicone / FPGA sintetizzabile, solo il codice è un altro livello di istruzione.
C'è una lingua che mi piace molto chiamata CDL . È strettamente sintetizzabile, scrivi i tuoi banchi prova in altri modi, genera Verilog sintetizzabile che puoi prendere in altri strumenti. Sfortunatamente i documenti CDL mancano, spero di ottenere alcuni campioni nel mondo per mostrare quanto sia più facile da usare rispetto a Verilog o VHDL, ma non lo faccio. Viene fornito con un proprio ambiente di simulazione / test. Con CDL e GTKWave puoi svolgere una notevole mole di lavoro.
Un altro strumento chiamato Verilator , è abbastanza rigido nel mantenere pulito il tuo Verilog. È un simulatore Verilog gratuito con un modo molto semplice per collegarsi alla sim o creare banchi prova in C / C ++. Puoi usare anche Verilog, non ti limita lì. C'è anche Icarus Verilog , che è più grande e più noto, ma consiglierei Verilator se vuoi imparare Verilog. Per VHDL c'è GHDL , la mia esperienza con esso non è stata buona come Verilator , ma almeno c'è uno strumento gratuito per provare a piedi. Se hai esperienza di programmazione software, è probabile che tu raccolga e godrai Verilog più velocemente di VHDL.
Sono assolutamente d'accordo con Leon, prova entrambi. fpga4fun e altre pagine web hanno alcune buone informazioni e alcune di quelle pagine ti daranno gli equivalenti Verilog e VHDL per l'argomento di cui stanno discutendo. Trovo pagine come quelle più utili per confrontare le due lingue. Se usare un HDL è qualcosa che vuoi fare nella tua carriera, ti consiglio di avere almeno alcune capacità con entrambi, forse davvero buono con uno ma non essere completamente incapace di usare l'altro.
Molte guerre sante sono state combattute per questo. Uno svantaggio particolare di Verilog è il suo comportamento non deterministico. http://www.sigasi.com/content/verilogs-major-flaw
Entrambi hanno vantaggi e svantaggi. VHDL è più accademico, dettagliato e complesso. Devi scrivere più codice, ma il rigore significa che è più probabile che funzioni. Verilog è più semplice per il tipico design digitale, ma semplifica la creazione di bug difficili. VHDL è più comune nelle università. Verilog è più comune nelle grandi aziende di semiconduttori.
Di solito la scelta dell'uno o dell'altro è guidata dagli strumenti che stai utilizzando. Alcuni dei più popolari strumenti FPGA funzionano meglio con VHDL. Alcuni strumenti ASIC popolari funzionano meglio con Verilog. Quindi, ciò che è meglio dipende da cosa vuoi farci.
Supponiamo che tu voglia realizzare piccoli progetti utilizzando gli FPGA Altera che sono popolari nelle scuole EE. Gli strumenti gratuiti supportano entrambi gli HDL. Ma potresti scoprire che la comunità di utenti utilizza principalmente VHDL. Ci saranno più codici di esempio, moduli riutilizzabili, ecc. Se scegli quella lingua.
Al contrario, se hai intenzione di lavorare in una grande azienda facendo seri lavori di progettazione di chip, quasi tutti usano Verilog in questi giorni. Gli strumenti di sintesi, simulazione e verifica per servizio pesante sono ottimizzati per Verilog. E di recente, SystemVerilog - estensioni a Verilog per supportare la progettazione e la verifica di sistemi di alto livello.
Altre discussioni qui e link utili qui:
Per un principiante / hobbista, il miglior consiglio è di decidere con quali gettoni giocare e vedere quali esempi fornisce il fornitore. Usalo. Una volta che sei un designer digitale esperto, l'apprendimento dell'altra lingua richiederà solo pochi giorni.
Risposta breve : usa SystemVerilog, ma impara anche VHDL . Evita Verilog-2001 se puoi.
Risposta molto lunga : per il momento, suppongo che Verilog intenda Verilog-2001, che è probabilmente quello che assumono anche la maggior parte delle altre risposte. Il miglior suggerimento sarebbe probabilmente quello di imparare entrambi, ma non usare nessuno dei due (di più su questo alla fine della risposta). Le principali differenze possono essere riprese in quanto segue:
wire
Vs reg
)Detto questo, i concetti più importanti sono condivisi dalle due lingue, anche se con nomi diversi (ad es. always
Vsprocess
) e in ogni caso la difficoltà nell'apprendimento di un HDL è più correlata ai concetti sottostanti (come la concorrenza di tutti i processi, l'HW convenzioni ecc.) rispetto alla lingua stessa. Considerando le differenze, se la scelta fosse tra Verilog 2001 e VHDL, personalmente indirizzerei qualsiasi principiante a VHDL.
Tuttavia, come ho detto, il mio suggerimento è in realtà di non utilizzare né VHDL né Verilog-2001 se si ha il potere di scegliere. Contrariamente a quanto molti pensano, SystemVerilog non è un linguaggio di livello superiore utile solo per la progettazione o la verifica a livello di sistema e ha poco da condividere con le lingue che possono essere inserite in uno strumento di sintesi di alto livello come SystemC.
Invece, SystemVerilog è un aggiornamento completo del linguaggio Verilog (basato su Verilog-2005, vedi http://en.wikipedia.org/wiki/SystemVerilog ) che ha un sottoinsieme completamente sintetizzabile che corrisponde alla concisione di Verilog con un'espressività più elevata di entrambi Verilog-2001 e VHDL, fornendo a mio avviso il meglio dei due mondi.
Esempi di costrutti / espressioni molto significativi disponibili in SystemVerilog che non sono disponibili in Verilog-2001, VHDL o entrambi includono:
always_ff
, always_latch
, always_comb
Blocchi che aiutano il progettista distinguere immediatamente tra i blocchi di attuazione diversi tipi di logica, e - per always_comb
e always_latch
- (! Una fonte di infinite bug in VHDL e Verilog, soprattutto per i principianti) inferire automaticamente i segnali che dovrebbero andare nella lista sensibilitàlogic
tipi che sostituiscono la confusione wire
e reg
tipi di Verilog-2001logic [N-1:0][M-1:0][P-1:0]
), mentre Verilog-2001 supporta solo bus bidimensionali e VHDL costringe il progettista a definire nuovi tipi per costruire strutture similistruct
(simile a VHDL record
) e persino di livello superiore interface
che possono essere utilizzati in modo molto efficace per modellare strutture regolari (come le porte di un bus)Ho provato tutte queste differenze "sulla mia pelle" mentre lavoravo su un sistema multicore piuttosto complesso a fini di ricerca. Ora è supportato da molti strumenti e so con certezza (dall'usarli quasi ogni giorno) che è supportato dagli strumenti Synopsys (sia per i flussi di sintesi ASIC e FPGA), Xilinx Vivado (per la sintesi FPGA) e strumenti di simulazione come come MentorGraphics Modelsim, Cadence NCsim e Synopsys VCS.
Per essere totalmente completi, ci sono altri due tipi significativi di linguaggi nella toolbox del progettista hardware (sebbene la qualità di questi strumenti possa variare molto):
La mia carriera negli ultimi 13 anni è stata dell'80% ASIC e del 20% FPGA.
Il VHDL è stato usato per i primi 3,5 anni e il resto erano Verilog. Non ho trovato difficile passare a Verilog, e per motivi di posizione (Silicon Valley) e velocità ho solo codificato in Verilog oggi.
Inoltre, eseguo molte interfacce Asatch, interfacce e design semi personalizzati a livello di gate per prestazioni, quindi VHDL ha ben poco uso nella mia vita ora. Invece ho trovato SystemVerilog e SystemC molto più utili da raccogliere e utilizzare per grandi progetti di ingegneria.
A un certo punto, strumenti come Verilator (gratuito! E veloce) mi hanno risparmiato un sacco di fondi necessari per le simulazioni critiche. Non hai (ancora) questa opzione per VHDL. E potresti non averne mai bisogno se nuoti sempre in una piscina ricca o non fai progetti di gate> 1M.
Tuttavia, VHDL è migliore per i principianti prima che sviluppino solidi principi di progettazione HW. Le mie comunicazioni con la gente dell'EDA qui suggeriscono che hanno fatto piccoli sviluppi VHDL negli ultimi 10 anni e oggi c'è un grande impulso dietro HLS. Quindi non ci saranno molti sviluppatori di strumenti VHDL in giro ...
Ho scelto VHDL, soprattutto perché conosco C molto bene e ho scoperto che provare a scrivere verilog tendeva a farmi scrivere come se stessi puntando su una CPU che non descriveva l'hardware.
Molto fastidioso scrivere una pagina di codice e rendersi conto che quello che hai scritto era effettivamente un programma sequenziale, non un progetto hardware, sì, sarebbe synth, ma il risultato è stato brutto e lento.
VHDL era abbastanza diverso che ho trovato molto più facile pensare in termini di progettazione logica e non di controllo del flusso.
Alla fine della giornata, la lingua è raramente la parte difficile, l'abilità è nella progettazione del sistema non nella digitazione.
Saluti, Dan.
L'anno scorso l'università che ho studiato ha promosso due corsi aperti per principianti. Entrambi riguardavano lo stesso contenuto ma uno utilizzava VHDL e l'altro Verilog.
Naturalmente ho chiesto a entrambi i professori le differenze tra VHDL e Verilog. Entrambi non potevano eleggere il meglio.
Quindi ho dovuto fare entrambi i corsi per vedere quale poteva essere migliore per me. La mia prima impressione è stata che VHDL è più simile a Pascal e Verilog è più simile a C .
Dopo questo ho deciso di fare solo VHDL perché, a quel tempo, stavo lavorando con Delphi.
Ma non ho mai lavorato con FPGA dopo il corso. Quindi questo è il meglio che posso aiutarti.
Uso VHDL quasi interamente. La mia esperienza è che VHDL è più comune in Europa, Verilog negli Stati Uniti, ma VHDL ha fatto progressi costanti anche negli Stati Uniti. La tipizzazione forte di VHDL non mi disturba perché lo uso come un linguaggio di progettazione hardware vecchio stile come usato in piccole logiche programmabili, come PALASM o AHDL di Altera.
Il grosso problema per la maggior parte delle persone che usano VHDL sono i tipi forti. Vogliono fare delle assegnazioni tra std_logic_vector (che io considero una raccolta di fili nel bersaglio) e "int", (che io considero un numero memorizzato nel computer che sta compilando il disegno). La conversione di tipo più fastidiosa in cui mi imbatto in genere è tra bit_vector (che considero una descrizione di una raccolta di fili nel computer che compila il disegno) e std_logic_vector. In effetti, ciò che mi ha trascinato su stackexchange in questo momento è stato alla ricerca di una conversione da char (una variabile di carattere memorizzata nel computer di compilazione) in int.
In passato, il conflitto più famoso tra VHDL e Verilog era il concorso di design organizzato dalla rivista ASIC & EDA. Google "Risultati inaspettati da un concorso di progettazione hardware: Verilog Won & VHDL Lost? - You Be The Judge!", Ad esempio: http://www.ee.ed.ac.uk/~gerard/Teach/Verilog/manual /Example/lrgeEx2/cooley.html
Il contest doveva implementare un registro a 9 bit abbastanza complicato. Aveva il conto alla rovescia e anche alcune altre cose. Il risultato è stato che 8 dei 9 designer di Verilog avevano il codice in esecuzione dopo 90 minuti. Zero dei 5 ragazzi VHDL ha funzionato.
Non uso VHDL come nessun altro. Per come la uso, i tipi non mi ostacolano molto spesso. Avrei implementato il progetto sopra nello stesso modo in cui faccio tutto il resto, interamente in std_logic e std_logic_vector, usando (back in the day) la libreria IEEE senza segno. Invece, immagino che i progettisti VHDL abbiano fatto il loro lavoro con int e si siano persi nella conversione dei tipi.
Ci sono due posti in cui puoi perderti nella conversione del tipo: (a) il tuo design e (b) il tuo banco di prova. Per me, è più semplice scrivere il banco di prova (quasi) interamente in std_logic, quindi il banco di prova stesso è (quasi) sintetizzabile. Con "quasi" intendo che definirò l'orologio con un incarico ritardato che non può essere sintetizzato. A parte questo (e i commenti), non puoi distinguere i miei banchi di prova dalla logica sintetizzata.
Ad ogni modo, prima di decidere una prima lingua da imparare (quasi tutti hanno una preferenza ma quasi tutti usano entrambe), consiglierei di cercare quel concorso e leggere il commento su di esso.
Uno dei problemi che ho riscontrato con VHDL è che, poiché si tratta di un linguaggio molto dettagliato, sembra esserci una tendenza (nella mente dei progettisti) a credere che non richieda commenti. Ovviamente non è vero, dovresti scrivere i commenti prima del codice.
Peserò i miei due centesimi: anch'io sono un utente VHDL pesante, ma Verilog può sicuramente fare anche il lavoro. Puoi sempre avvolgerli l'uno nell'altro (anche se con un tempo e un costo di battitura).
Quello che ho scoperto è che il VHDL grezzo non ha molte funzioni utili. (OR o AND: mi viene in mente un intero std_logic_vector). Pertanto, la creazione di una cassetta degli attrezzi con funzioni debug e sintetizzabili contribuisce notevolmente ad aumentare la produttività durante l'utilizzo di VHDL.
Forse qualcuno potrebbe fare riferimento a una buona libreria open source che offre tutte queste funzioni "buone da avere"?
Le risposte precedenti coprono praticamente i contrasti tra le due lingue e questo articolo copre abbastanza bene anche i punti: http://www.bitweenie.com/listings/verilog-vs-vhdl/
Vorrei anche fare un altro paio di punti che non sono stati menzionati.
Consiglierei di imparare prima il VHDL per un paio di ragioni. La digitazione forte aiuta alcuni errori facili per i principianti a essere colti dal compilatore. Ho anche sentito che VHDL è più difficile da raccogliere dopo aver usato Verilog per primo.
Onestamente, non puoi sbagliare con nessuna delle due lingue; e se lavori in questo settore da molto tempo, alla fine imparerai comunque entrambe le lingue.