質問

私はいつも自分のマイクロプロセッサを作りたいと思っていました。どうやって自分のマイクロコントローラーを作ることができますか?

VerilogとVHDLを学習しようと何度も試みました。しかし、私の人生では、言語スタイルに頭を悩ますことはできません。私はC / C ++ / C#のバックグラウンドから来て、Rubyで機能的なプログラミングを行うことに成功しました。

HDL言語をゼロから教えるための本やオンラインリソースを誰でも提案できますか(手順の考え方を学ぶことができるように)

また、HDLプログラムのシミュレーション方法を正確に把握するのに苦労しています。ハードウェアには印刷物などはありませんので、FPGAなしでプログラムをテストする最良の方法は何ですか(ただし、そのうちの1つを注文します!)。シミュレーションはどのように機能しますか?

基本的には、HDLとそのシミュレーションについて頭を悩ませてくれる人が必要です。

役に立ちましたか?

解決

HDLはハードウェアのモデリングを目的としていたことを忘れないでください。ハードウェアを使用すると、すべてが同時に発生します。ハードウェアとは、何らかの方法で他の論理ゲートの入力および出力に接続された論理ゲートの集まりを意味します。これは基本的にFPGAまたはASICです(FPGAでは、これらの接続はプログラム可能です)。入力を揺らすと、エフェクトがロジックゲートのチェーンに波及します。すべてのロジックゲートを、常に入力を評価する小さなプロセッサと考えてください。

したがって、HDLで最初に考慮する必要があるのは、すべての割り当てが同時に行われていることです。物事が起こるのは「通常」の場所だけですsense(通常のプログラミング言語のように別のステートメントに続くステートメント)は、プロセスブロック(VHDL、またはVerilogのalwaysブロック)内にあります。ただし、すべてのプロセスブロック(または常にVerilogのブロック)も同時に実行されていることに注意する必要があります。

HDLは、ハードウェアの同時実行をモデル化しようとしています。

HDLをソフトウェア開発者に教えようとする本に関する限り、私は何もないと思います。ほとんどはハードウェアエンジニアを対象としています。

あなたは、Rubyプログラミングをいくつか行ったことに言及しました。 Rubyで記述されたHDLで遊びたい場合は、RHDLを試すことができます: http://rhdl.rubyforge.org/ 基本的なHDLの概念はあり、VHDLによく似ていますが、Rubyなので、内部でもう少し実験できます。モデルを作成してから、シミュレーションすることができます。いくつかの例が含まれています。

他のヒント

デバッグはシミュレーターとその波形ビューアーで行われます-内部のすべての処理を経時的に見ることができます。さらに、Modelsimを使用すると、プロセス内でソフトウェアのようなブレークポイントを実行することもできます。

" report"を使用してVHDLで印刷できます。ステートメントですが、非常に非SWの方法でフォーマットを行う必要があります。

report"値は"ではありません& integer'image(some_integer_variable);

印刷をやや簡単にするには、 textioパッケージを使用します。

>

別のヒント-多くのコードには use ieee.std_logic_arith.all; が含まれています。そのライブラリは非標準です(IEEEモニカーにもかかわらず)、代わりに ieee.numeric_std.all を使用してください。

シンプルに開始-クロックが刻むたびに1ずつ増加するカウンターを作成します( if rising_edge(clk)then イディオムを使用)。カウンターが特定の値に達したら、信号を切り替えます。

テストベンチを作成してシミュレートします。これは基本的に、clk信号を「0」、「1」、「0」、「1」にすることを意味します。

わかりやすい方法は次のとおりです:

process:
begin
    clk <= '0';
    wait for 5 ns;
    clk <= '1'; 
    wait for 5 ns;
end process;

シムを実行し、カウンターが上がるのを見て、トグル信号が切り替わります。カウンターを十分に大きくした場合、FPGAを構築し、そのトグル信号をLEDピンに配線することでLEDフラッシュのオンとオフを見ることができます。

これは「Hello World」に相当するFPGAです!

Verilogは、デバッグ用に$ displayや$ monitorなどのシステムタスクのようなprintfを提供しています。これらはもちろん合成できませんが、すべてのシミュレーターはそれらを理解する必要があります。 デバッグは、既に述べた$ diplayなどを使用して、信号値などをコンソールに出力することにより、SWデバッグと同様に一方で行われます。一方、病気の場所が見つかるまで信号波形をじっと見つめることによって。 FPGAを必要としないこれらのことについては、必要なのは優れたシミュレーターだけです。しかし、いくつかのLEDを点滅させるFPGAを使用することは常に素晴らしいことです:)

シミュレーションについては、Modelsimをご覧ください。 Windowsを使用している場合は、無料で受講できる学生版があります。
http://www.model.com/content/modelsim- pe-student-edition-hdl-simulation

もう1つのオプションは、XilinxのISE Web-Packです。これはLinuxでも機能し、完全なFPGAフローが含まれています。 http://www.xilinx.com/tools/webpack.htm
ただし、シミュレーションにはModelsimをお勧めします。

手元にあるいくつかの出発点は次のとおりです。
http://www.asic-world.com/
http://www.doulos.com/knowhow/verilog_designers_guide/

私の答えは数年遅れる可能性がありますが、これは同じクエリを持っている可能性のある将来の視聴者向けです。

私はまた、C ++ / C#のバックグラウンドから来ました。私の答えは、VHDLではなくVerilog HDLにのみ関係しています。現在、この用語のコースを受講中です。Verilogをよりよく理解するのに役立つ本を次に示します。

こちらは、 href = "http://www.asic-world.com/verilog" rel = "nofollow noreferrer"> asic-world サイト。

スコルゴンが答えたように、シミュレーションにザイリンクスISEを使用できます。 Verilogに関しては、C ++ / C#を使用するVisual Studioに最も近いものです。しかし、原始的な感覚(IDEなし)の場合は、iVerilogまたは Icarus Verilog を試してください。それは私たちのコースで使用されるものです。 iVerilogを使用してVerilogファイルを実行する方法は次のとおりです。

テキストエディターでコードを入力し、binフォルダー内に .vl として保存します     iVerilogの。コマンドプロンプトで、binフォルダーに移動します。次に、次を入力します。

iverilog -o <name of exe file you want for your .vl file> <your .vl file>
vvp <name of exe file>

例:

iverilog -o samp sample.vl
vvp samp

これがお役に立てば幸いです!

インスタンス名を出力する必要がある場合があります。これは、同じコンポーネントの多くのインスタンスがデザインで使用される場合に便利です。 &quot; ... VERILOG(表示システム関数の%m)では簡単ですが、VHDLではもう少しコードを書く必要があります。 $ display(&quot; dbgインスタンス名%m at%d&quot ;, $ time); systemcでインスタンス名を印刷する方法の例もこのサイトで入手できます。

このようなデバッグ情報の重要性は、デザインにまったく同じコンポーネントの多くのインスタンスが含まれている場合です。

最初のテキストIOライブラリを呼び出す必要があり、行変数を宣言する必要があります。詳細を確認するには、印刷例を参照してください。

次に、2つのオプションから選択する必要があります。1つは、デバッグ文字列のみのインスタンス名で、もう1つのオプションは、エントリ名やアーキテクチャ名などの詳細情報を提供します...&quot; http://bknpk.ddns.net/my_web/MiscellaneousHW/vhdl_path_name_print.html

Cプログラミングが得意であれば、他のプログラミング言語を非常に簡単に学ぶことができます。ハードウェア記述言語はそれほど変わりません。ただし、よく使用されるハードウェアコンポーネントの基本を理解する必要があります。たとえば、全加算器の設計は、ご存知なら非常に簡単です。全加算器の入力と出力は何ですか。また、入力と出力の関係を知る必要があります。 pdf は初心者に役立つかもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top