「べりろぐ」(2005/11/21 (月) 22:48:57) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
<p>とりあえず簡単なところから書いていくとする</p>
<p>
ハードウェア言語において関数みたいなものとしてモジュールというものがある。基本的にモジュール単位でファイル作るのが最初はイイと思う。</p>
<br>
<p>
とりあえずモジュールの書き方は作成するモジュール名がtestなら</p>
<br>
<p><strong>module test(clk ,rst , , ,);</strong></p>
<p><strong>モジュールの中身</strong></p>
<p><strong>endmodule</strong></p>
<br>
<p>といった書き方になる</p>
<br>
<br>
<br>
<p>とりあえず簡単なところから書いていくとする</p>
<p>
ハードウェア言語において関数みたいなものとしてモジュールというものがある。基本的にモジュール単位でファイル作るのが最初はイイと思う。</p>
<br>
<p>
とりあえずモジュールの書き方は作成するモジュール名がtestなら</p>
<br>
<p><strong>module test(clk ,rst , , ,);</strong></p>
<p><strong>モジュールの中身</strong></p>
<p><strong>endmodule</strong></p>
<br>
<p>
といった書き方になる。rstにつづくものはそのモジュールにおける引数、出力になる。,で区切ること。あと必ずしもclk,rst必要はないのであしからず。</p>
<p><br>
<br>
<br>
次に回路の構成になるがまず、変数の型としてwireとregがある。</p>
<p>
<strong>wireはただ単にデータをつなげる、regは値を保存するためにとだけ理解しておけばまずよい。</strong></p>
<br>
<p>
データの大きさとしてはainという名前の4bit幅のwireを宣言するなら</p>
<p><strong>wire[3:0] ain;</strong></p>
<p>といった形になる。</p>
<br>
<p>
あと値の代入に関して、ブロッキング代入(=)、ノン・ブロッキング代入(<=)があるが、とりあえずハードウェア記述言語に慣れるまではwire型はブロッキング、regはノンブロッキングとして統一しておいたほうがいい。(混乱すると思う)</p>
<br>
<p>で実際どういう風に使うというと</p>
<p><em>wire [3:0] ain;</em></p>
<p><em>assign ain = ain + 4'h6;</em></p>
<p><em>reg [5:0] cnt;</em></p>
<p><em>always(posedge clk or negedge rst)begin</em></p>
<p><em> if(!rst)</em></p>
<p><em> cnt <= 6'h0;</em></p>
<p><em> else</em></p>
<p><em> cnt <= cnt + 6'h1;</em></p>
<p><em>end</em></p>
<br>
<br>
表示オプション
横に並べて表示:
変化行の前後のみ表示: