La conception numérique n'a pas grand-chose en commun avec le développement de logiciels (peut-être sauf que la syntaxe Verilog ressemble un peu au langage C mais elle semble juste). Il est donc très difficile de répondre adéquatement à ce type de question. Mais en tant que gars qui a parcouru un chemin allant du développement logiciel à la conception matérielle, je vais essayer. En me retournant, voici comment je me serais conseillé à l'époque si j'avais su ce que je sais maintenant:
Commencer à partir de zéro
Oubliez tout sur le développement de logiciels. Surtout les langages de programmation. Ces principes ne s'appliquent pas à la conception numérique. Il serait probablement facile pour un gars qui a conçu un CPU de le programmer en assembleur ou même en C, mais un programmeur assembleur ne pourra pas concevoir un CPU.
Sur votre chemin d'apprentissage, vous n'avez pas tendance à résoudre ce qui semble être un problème facile avec vos connaissances existantes à partir d'un logiciel. Un des exemples classiques est une boucle "for". Même si vous pouvez écrire une boucle for, par exemple, verilog - cela sert à des fins différentes. Il est principalement utilisé pour la génération de code. Cela peut aussi être une boucle for comme les développeurs de logiciels le voient, mais ce ne sera bon que pour la simulation (c'est-à-dire que vous ne pourrez pas programmer FPGA comme ça).
Donc, pour chaque tâche que vous souhaitez entreprendre, ne pensez pas savoir comment le faire, faites plutôt une recherche - consultez les livres, les exemples, demandez à des personnes plus expérimentées, etc.
Apprenez le matériel et le langage HDL
Les langues HDL les plus populaires sont Verilog et VHDL. Il existe également des solutions spécifiques aux fournisseurs comme AHDL (Altera HDL). Étant donné que ces langages sont utilisés pour décrire les composants matériels, ils sont tous à peu près utilisés pour exprimer la même chose de la même manière mais avec une syntaxe différente.
Certaines personnes recommandent d'apprendre Verilog car il ressemble à C. Oui, sa syntaxe est un mélange de C et d'Ada mais cela ne facilite pas la tâche d'un développeur de logiciels. En fait, je pense que cela peut même aggraver la situation car il y aura une tentation d'écrire C dans Verilog. C'est une bonne recette pour passer un très mauvais moment.
Ayant cela à l'esprit, je recommanderais de regarder du VHDL. Bien que Verilog soit également OK tant que ce qui précède est pris en compte.
Une chose importante à garder à l'esprit est que vous devez comprendre ce que vous exprimez avec cette langue. Quel type de matériel est "décrit" et comment il fonctionne.
Pour cette raison, je vous recommande de vous procurer un livre sur l'électronique en général et un bon livre comme celui-ci - HDL Chip Design (alias comme un livre bleu).
Obtenez un simulateur
Avant de commencer à faire quoi que ce soit dans le matériel et à utiliser des fonctionnalités spécifiques au fournisseur, etc., procurez-vous un simulateur. Je commençais avec un Verilog et utilisais Icarus Verilog avec GTK Wave. Ce sont des projets open source gratuits. Exécutez des exemples que vous voyez dans les livres, entraînez-vous en concevant vos propres circuits pour en avoir un avant-goût.
Obtenez une carte de développement
Lorsque vous avez envie d'aller de l'avant, procurez-vous un tableau de développement. Si vous savez que votre employeur souhaite utiliser Lattice, procurez-vous le tableau Lattice.
Les méthodes de programmation sont très similaires, mais certains détails sont différents. Par exemple, différents outils, différentes options, différentes interfaces. Habituellement, si vous avez de l'expérience avec un fournisseur, il n'est pas difficile de changer de fournisseur. Mais vous voulez probablement éviter cette courbe d'apprentissage supplémentaire.
Je m'assurerais également que la carte est livrée avec des composants que vous prévoyez d'utiliser ou est extensible. Par exemple, si vous souhaitez concevoir un périphérique réseau comme un routeur, assurez-vous que la carte a Ethernet PHY ou qu'elle peut être étendue via, disons, un connecteur HSMC, etc.
Les tableaux sont généralement accompagnés d'une bonne référence, d'un guide d'utilisation et d'exemples de conception. Étudiez-les.
Lire des livres
Vous devrez lire des livres. Dans mon cas, je n'avais pas d'amis qui connaissaient le design numérique, et ce site n'était pas très utile non plus à cause d'une chose simple - je ne savais même pas comment formuler ma question. Tout ce que j'ai pu trouver était comme "Uhm, les gars, il y a une chose dcfifo et j'ai entendu quelque chose sur les défis de franchissement de domaine d'horloge, qu'est-ce que c'est et pourquoi ma conception ne fonctionne pas?".
J'ai personnellement commencé avec ceux-ci:
Les vendeurs de FPGA ont beaucoup de livres de cuisine avec les meilleures pratiques. Étudiez-les avec des modèles de référence. Voici un exemple d'Altera.
Revenez avec des questions plus spécifiques
Pendant que vous parcourez vos livres, simulez une conception, faites clignoter quelques LED sur votre carte de développement, vous auriez très probablement beaucoup de questions. Assurez-vous que vous ne voyez pas de réponse à ceux sur la page suivante du livre ou en ligne (c'est-à-dire dans le forum spécifique à Lattice) avant de les poser ici.