【FPGA】ModelSimをちょこっと使ってみる チュートリアルの演習1まで【Verilog HDL】

タイミングシミュレーション??

FPGAの資料ってたくさんWebにあるけど。。読むのがメンドクサイ上に、VerUpが頻繁なようで、なかなかやりたいことや、初めにするところにたどりつかない(笑)。。

【FPGA】Intel/Altera DE10 standard メモ【リンク集】

で。。SampleやTutorialがついているModelSimをちょこっと動かしてみようかと。。

https://blog.tiqwab.com/2018/03/25/get-started-with-modelsim.html

を参考にはじめてみました。

ModelSimのGUIを使ったTutorial

その前に、こちらで、Tutorialを動かして、だいたいのModelSimの動きを体感しておくのがいいです。

PDF

この通りやると Verilog HDLをコンパイルしてSimulationして波形まで出せます。

ちなみに、TutorialやExampleには、counter と PLIを使った Fibonacci, Transverse_designっていうのが入っています(ModelSimのディレクトリ内)

 

FPGAのプログラミングってちょっと甘く見てました(笑)専門用語多すぎ。。

モジュールとテストベンチの作成

これにMacnicaの資料に演習問題がついているんですが。。。。基本の概要みたいなのが理解できてないときついですね。。 あちこちある資料をざ~っといろいろ眺めてみます。。

設計・プログラミングの手順

RTL:Resister Transfer Level レジスタ転送レベル

レジスタ転送レベル(レジスタてんそうレベル、register transfer level、RTL)は、論理回路の動作記述などにおいて、「ゲートレベル」よりも一段抽象的な記述レベルである。ゲートレベルでは、組合せ論理回路の(すなわち、状態を持たない)ゲートのネットリストを記述するが、レジスタ転送レベルでは、状態を持つラッチ回路など順序回路に相当する最小の部分を「レジスタ」として抽象化(ブラックボックス化)する。その上で、論理回路の動作を、レジスタからレジスタへの転送と、(その転送中に組合せ論理回路を通すことで行われる)論理演算の組み合わせとして記述する。

Verilog HDLの基本

書式のルール
  • ステートメント
    • セミコロン ; 終了につける
    • begin -end  ステートメントが複数になる場合
    • インデント付き改行 複数行でかける インデントは半角スペースかタブ
  • コメント
    • // コメント行
    • /* */  複数行コメント
  • アルファベットの大文字と小文字を区別
  • 数値表現・文字列のルール

あとは、触って覚えますかね??(笑)

モジュール が あってテストベンチがあって、Verilog HDLで書く。

プロジェクト作って、コンパイルして、波形を見るってところまでを自分でするのこんなにハードル高いんだ(笑)FPGLまだまだだな。。って思いながらも。。

演習問題のファイル

Verilog-HDL_Trial_Lab-Manual_r1__1.pdf

Verilog-HDL_Trial_Lab_r1_download__2.zip

演習問題の答えがないので。。それだけ入れておきますかね? Githubに入れるようにしていきます。

演習1

assign文
  • ワイヤ同士をつなげたい場合
  • sum を a と bにつなげます

コード例

module adder (a, b, sum);
input [15:0] a, b;
output [15:0] sum;
assign sum = a + b;
endmodule
演習2

always文
  • あるタイミングで処理を起こしたい場合
  • ループと同じ
assign文・always文とwire・regでの変数

wireで定義する変数 ネット型変数の信号への代入は,assign 文でのみ可能。
regで定義する変数 レジスタ変数の信号への代入は,always 文,initial 文,task,function の中で可能。

つまり,reg =順序回路という訳ではなく,wire や reg は上記の文法的な理由で使い分ける,と理解しておいて間違いなさそうです。いずれの変数も,式の右辺や引数としての利用(値を参照する場合)は可能。

出典

あんまり長くなってきたので。。 ページ分けて書くことにしますね・・

 

投稿者 tom2rd

コメントを残していただけるとありがたいです

Loading Facebook Comments ...

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください