Il design digitale non ha molto in comune con lo sviluppo del software (forse tranne per il fatto che la sintassi di Verilog assomiglia un po 'al linguaggio C ma sembra solo). Quindi è molto difficile rispondere adeguatamente a questo tipo di domanda. Ma come ragazzo che ha percorso un percorso dallo sviluppo del software alla progettazione hardware, ci proverò. Ripensandoci, ecco come mi sarei consigliato allora se avessi saputo quello che so ora:
Iniziare da zero
Dimentica tutto sullo sviluppo del software. Soprattutto i linguaggi di programmazione. Tali principi non si applicano al design digitale. Probabilmente sarebbe facile per un ragazzo che ha progettato una CPU programmarla in assemblatore o addirittura in C, ma un programmatore di assemblatori non sarà in grado di progettare una CPU.
Sul tuo percorso di apprendimento non tendono a risolvere quello che sembra essere un problema facile con le tue conoscenze esistenti dal software. Uno degli esempi classici è un "for loop". Anche se puoi scrivere un ciclo for in, diciamo, verilog - serve a scopi diversi. Viene utilizzato principalmente per la generazione di codice. Potrebbe anche essere un ciclo for come gli sviluppatori di software lo vedono, ma non sarà buono per nulla tranne la simulazione (cioè non sarai in grado di programmare FPGA in quel modo).
Quindi, per ogni compito che vuoi affrontare, non pensare di sapere come farlo, fai invece una ricerca - controlla libri, esempi, chiedi a persone più esperte ecc.
Impara l'hardware e il linguaggio HDL
Le lingue HDL più popolari sono Verilog e VHDL. Ci sono anche quelli specifici del fornitore come AHDL (Altera HDL). Dato che quei linguaggi sono usati per descrivere i componenti hardware, sono praticamente tutti usati per esprimere la stessa cosa in una moda simile ma con una sintassi diversa.
Alcune persone raccomandano di imparare Verilog perché assomiglia a C. Sì, la sua sintassi è un mix di C e Ada ma non rende facile per uno sviluppatore di software appoggiarsi. In effetti, penso che potrebbe anche peggiorare la situazione perché ci sarà la tentazione di scrivere C in Verilog. Questa è una buona ricetta per passare dei brutti momenti.
Avendo questo in mente, consiglierei di guardare dal VHDL. Anche se Verilog è OK, purché si tenga conto di quanto sopra.
Una cosa importante da tenere a mente è che devi capire cosa stai esprimendo con quella lingua. Che tipo di hardware viene "descritto" e come funziona.
Per questo motivo, ti consiglio di procurarti un libro sull'elettronica in generale e un buon libro come questo: HDL Chip Design (alias come un libro blu).
Ottieni un simulatore
Prima di iniziare a fare qualsiasi cosa in hardware e utilizzare qualsiasi funzionalità specifica del fornitore ecc., Procuratevi un simulatore. Stavo iniziando con un Verilog e ho usato Icarus Verilog insieme a GTK Wave. Questi sono progetti open source gratuiti. Esegui esempi che vedi nei libri, esercitati progettando i tuoi circuiti per avere un assaggio di esso.
Ottieni una scheda di sviluppo
Quando hai voglia di andare avanti, procurati una scheda di sviluppo. Se sai che il tuo datore di lavoro vuole andare con Lattice, allora prendi la scheda Lattice.
I metodi di programmazione sono molto simili, ma ci sono dettagli diversi. Ad esempio, strumenti diversi, opzioni diverse, interfacce diverse. Di solito, se si ha esperienza con un fornitore, non è difficile cambiare. Ma probabilmente vorrai evitare questa curva di apprendimento extra.
Mi assicurerei anche che la scheda sia dotata di componenti che si prevede di utilizzare o che siano estensibili. Ad esempio, se si desidera progettare un dispositivo di rete come un router, assicurarsi che la scheda disponga di Ethernet PHY o che possa essere estesa tramite, ad esempio, il connettore HSMC, ecc.
Le schede vengono generalmente fornite con un buon riferimento, una guida per l'utente ed esempi di progettazione. Studiali.
Leggere libri
Dovrai leggere libri. Nel mio caso, non avevo amici che conoscessero il design digitale e questo sito non è stato molto utile neanche per una semplice cosa: non sapevo nemmeno come formulare la mia domanda. Tutto quello che ho potuto venire è stato come "Uhm, ragazzi, c'è una cosa dcfifo e ho sentito qualcosa sulle sfide di attraversamento del dominio dell'orologio, cos'è e perché il mio design non funziona?".
Ho iniziato personalmente con questi:
I venditori FPGA hanno molti libri di cucina con le migliori pratiche. Studiali insieme a progetti di riferimento. Eccone uno di Altera, per esempio.
Torna con domande più specifiche
Mentre sfogli i tuoi libri, simuli un design, lampeggi alcuni LED sulla tua scheda di sviluppo, molto probabilmente avresti molte domande. Assicurati di non vedere una risposta a quelli nella pagina successiva del libro o online (cioè nel forum specifico di Lattice) prima di chiedere loro qui.