2

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

いくつかのVerilogとVHDLを学ぶために何度も試しました。しかし、私の一生の間、私は言語スタイルに頭を悩ませることができません。私はC/C ++ / C#のバックグラウンドを持っており、Rubyで機能的なプログラミングを行うことで(成功して)いくつかを軽くたたきました。

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

また、HDLプログラムをシミュレートする方法を正確に理解するのに苦労しています。印刷やハードウェアのようなものはないので、FPGAなしでプログラムをテストする最良の方法は何ですか(私はいつかそれらの1つを注文するつもりです!)。それをシミュレートすることはどのくらい正確に機能しますか?

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

4

6 に答える 6

3

HDLはハードウェアをモデル化することを目的としていたことを忘れないでください。ハードウェアを使用すると、すべてが一度に行われます。ハードウェアとは、何らかの方法で他の論理ゲートの入力と出力に接続された論理ゲートの集合を意味します。これは基本的にFPGAまたはASICです(FPGAではこれらの接続はプログラム可能です)。入力を小刻みに動かすと、論理ゲートのチェーン全体に影響が波及します。すべての論理ゲートは、入力を常に評価している小さなプロセッサと考えてください。

したがって、HDLで最初に考慮する必要があるのは、すべての割り当てが同時に行われているということです。「通常の」意味(通常のプログラミング言語のように1つのステートメントが次々に続く)で発生する唯一の場所は、プロセスブロック(VHDLの場合、またはVerilogのalwaysブロック)の内部です。ただし、すべてのプロセスブロック(またはVerilogでは常にブロック)も同時に実行されていることを理解する必要があります。

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

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

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

于 2009-11-26T17:03:30.603 に答える
2

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

「report」ステートメントを使用してVHDLで印刷することもできますが、フォーマットはSW以外の方法で行う必要があります。

report "The value is not " & integer'image(some_integer_variable);

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

もう1つのヒント-そこにはたくさんのコードがあります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の点滅を監視できます。

これは「HelloWorld」に相当するFPGAです。

于 2009-12-01T17:36:58.103 に答える
0

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

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

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

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

于 2009-11-27T12:57:29.303 に答える
0

私の答えは何年も遅れるかもしれませんが、これは同じ質問をするかもしれない将来の視聴者のためのものです。

私もC++/ C#のバックグラウンドから来ました。私の答えはVerilogHDLにのみ関係し、VHDLには関係しません。私は現在今期コースを受講しています。Verilogをよりよく理解するのに役立った本は次のとおりです。

asic-worldサイトにリストされているように、ここにはたくさんの本があります。

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

テキストエディタでコードを入力し、.vliVerilogのbinフォルダ内に保存します。コマンドプロンプトで、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

お役に立てれば!

于 2014-12-07T18:20:08.077 に答える
0

インスタンス名を出力する必要がある場合があります。これは、同じコンポーネントの多くのインスタンスがデザインで使用されている場合に役立ちます。 "... VERILOG(ディスプレイシステム関数では%m)では単純ですが、VHDLではもう少しコードを記述する必要があります。$ display(" dbgインスタンス名%mat%d "、$ time); systemcでインスタンス名を出力する方法の例は、このサイトでも入手できます。

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

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

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

于 2014-12-27T15:43:31.997 に答える
0

Cプログラミングに長けている場合は、他のプログラミング言語を非常に簡単に学ぶことができます。ハードウェア記述言語はそれほど違いはありません。ただし、一般的に使用されるハードウェアコンポーネントの基本を知っておく必要があります。たとえば、全加算器の入力と出力がわかっている場合、全加算器の設計は非常に簡単です。また、入力と出力の関係を知っている必要があります。PDFは初心者に役立つかもしれません。

于 2015-08-26T07:23:48.407 に答える