デジタル設計には、ソフトウェア開発との共通点はあまりありません(Verilog構文がC言語に少し似ているが、見た目が違うだけかもしれません)。したがって、このタイプの質問に適切に答えることは非常に困難です。しかし、ソフトウェア開発からハードウェア設計までの道を歩んだ男として、試してみます。自分のことを振り返ってみると、今知っていることを知っていたら、当時の自分にアドバイスしていたはずです。
ゼロから始めます
ソフトウェア開発に関するすべてを忘れてください。特にプログラミング言語。これらの原則は、デジタル設計には適用されません。CPUを設計した人にとっては、おそらくアセンブラーまたはCでプログラミングするのは簡単でしょうが、アセンブラープログラマーはCPUを設計することはできません。
あなたの学習経路では、ソフトウェアからの既存の知識で簡単な問題と思われるものを解決する傾向はありません。古典的な例の1つは「forループ」です。たとえば、Verilogでforループを記述できますが、それは別の目的を果たします。主にコード生成に使用されます。また、ソフトウェア開発者が見るようにforループの場合もありますが、シミュレーション以外の用途には適していません(つまり、FPGAをそのようにプログラムすることはできません)。
そのため、取り組む必要のあるすべてのタスクについて、その方法を知っているとは思わず、代わりに調査を行います。本や例の確認、経験豊富な人への質問などです。
ハードウェアとHDL言語を学ぶ
最も一般的なHDL言語は、VerilogとVHDLです。AHDL(Altera HDL)のようなベンダー固有のものもあります。これらの言語はハードウェアコンポーネントの記述に使用されるため、ほとんど同じ構文を異なる構文で同じことを表現するために使用されます。
Cのように見えるので、Verilogを学ぶことを勧める人もいます。はい、その構文はCとAdaを組み合わせたものですが、ソフトウェア開発者が学習しやすいわけではありません。実際、VerilogでCを記述する誘惑があるため、さらに悪化する可能性があると思います。それは非常に悪い時間を過ごすための良いレシピです。
それを念頭に置いて、VHDLをじっと見ることをお勧めします。ただし、上記を考慮する限り、Verilogも問題ありません。
覚えておくべき重要なことの1つは、その言語で何を表現しているのかを理解する必要があるということです。どのようなハードウェアが「記述」され、どのように機能するか。
そのため、エレクトロニクス全般に関する本と、このような優れた本— HDL Chip Design(別名ブルーブック)を入手することをお勧めします。
シミュレーターを入手する
ハードウェアで何かを開始し、ベンダー固有の機能などを使用する前に、シミュレータを入手してください。私はVerilogで始めていましたが、GTK WaveとともにIcarus Verilogを使用しました。これらは無料のオープンソースプロジェクトです。本で見る例を実行し、自分の回路を設計して練習して、それを味わってください。
開発ボードを入手する
前進したいときは、開発ボードを入手してください。雇用主がラティスと一緒に行きたいことを知っている場合は、ラティスボードを入手してください。
プログラミング方法は非常に似ていますが、異なる詳細があります。たとえば、さまざまなツール、さまざまなオプション、さまざまなインターフェイス。通常、1つのベンダーでの経験があれば、切り替えるのは難しくありません。しかし、おそらくこの余分な学習曲線を避けたいと思うでしょう。
また、使用する予定のコンポーネントまたは拡張可能なコンポーネントがボードに付属していることを確認します。たとえば、ルーターのようなネットワークデバイスを設計する場合は、ボードにイーサネットPHYがあるか、HSMCコネクタなどを介して拡張できることを確認してください。
通常、ボードには適切なリファレンス、ユーザーガイド、および設計例が付属しています。それらを研究します。
本を読む
本を読む必要があります。私の場合、デジタルデザインを知っている友人はいませんでした。また、このサイトは1つの簡単な理由からあまり役に立ちませんでした。質問の言い回しも知りませんでした。私が思いついたのは、「ああ、みんな、dcfifoというものがあり、クロックドメインの交差の課題について聞いたことがあります。それは何で、なぜデザインが機能しないのですか?」
私は個人的にこれらから始めました:
FPGAベンダーには、ベストプラクティスを備えたクックブックがたくさんあります。リファレンスデザインと共にそれらを研究します。これは、たとえばアルテラのものです。
より具体的な質問で戻ってきます
本を読みながら、デザインをシミュレートし、開発ボード上のいくつかのLEDを点滅させると、多くの質問があります。ここで質問する前に、本の次のページまたはオンライン(ラティス固有のフォーラム)で回答が表示されていないことを確認してください。