FPGAによるコンピューター将棋「スーパー田舎将棋」作ってます!!

FPGAでコンピューター将棋を作っちゃうブログ

verilog入門 完全版

Verilogに関しては入門書を買わずにネット上の情報だけでなんとかしようと思います。 勉強に使ったURLを書いていきます。簡単な順番に並べてあります。

 

 

Verilog-HDL入門

http://cas.eedept.kobe-u.ac.jp/~arai/Verilog/

→ 文法のところだけ流し読み しました。

 

初めてでも使えるVerilog HDL文法ガイド ―― 記述スタイル編

http://www.kumikomi.net/archives/2009/07/verilog_hdl.php

 初めてでも使えるVerilog HDL文法ガイド ―― 文法ガイド編
→ 記述スタイルのほうは参考になりました。文法ガイドのほうは、こういうのが使えるということはわかるのですが、使い方の説明が雑なのであまり参考になりませんでした。
 
HirokiNakaharaOboe-Tips
DE0のことや、順序回路・組み合わせ回路の説明がわかりやすく書かれていたので参考になりました。
 
「完全マスター! 電子回路ドリル II」最新記事一覧
→ デジタル回路(フリップフロップ回路関連) 必要になりそうなら読むことにします。
 
「完全マスター! 電子回路ドリル III」最新記事一覧
verilog入門記事。全14回。一番わかりやすかったです。
 
Verilog 自習帳 
→ verilogによるサンプルプログラムがたくさん書いてあって参考になりました。
 
verilog-HDL 入門
→ 筑波大学の講義資料のようです。丁寧かつ網羅的に書かれていて、これを読めば本を買う必要はなさそうです。 
 
パイプラインの記述とその RTL シミュレーション
→ 同じく筑波大学の講義資料です。verilogでパイプライン実行するCPUを製作するときに役立ちました。また、あるmoduleがどこまではクロックサイクル内で実行できているのかを理解するのに役立ちました。
 
組み込み屋の為のVerilog入門
組み込み屋の為のVerilog入門 その2
組み込み屋の為のVerilog入門 その3
組み込み屋の為のVerilog入門 その4
組み込み屋の為のVerilog入門 その5 VALID&READYのハンドシェーク
組み込み屋の為のVerilog入門 その6 続VALID&READYのハンドシェーク
→  Verilogのハマりどころを書いた記事。後半は私には関係なさそうだったので読み飛ばしました。
 
Verilog 「脱」入門
→ wire 、ブロッキング代入/ノンブロッキング代入について理解が深まりました。verilogを使い始めて9年という大ベテランの人で、非常に深い考察だと思いました。
 
ブロッキング代入は何時おきるか
→ 上記のVerilog「脱」入門のブロッキング代入に対する反論的なもの。
 
TINYCPU / MINICPU
→ 広島大学の講義資料のようです。100行足らずのverilogのコードで実装されているTINYCPU。そしてそれをパイプライン化して高速化したものや、高機能化したMINICPU。あとそれら用のコンパイラアセンブラソースコード(それぞれわずか30行程度!)が公開されており、非常にためになります。ただ解説はそこまで詳しくはないのでverilogソースコードを読むための力は必要となります。
 
Verilogを用いてファンクションを実装する例 -- altera公式
→ より高度なサンプルがいろいろ掲載されています。まだ読んでいません。
 
わかるVerilog HDL入門―文法の基礎から論理回路設計、論理合成、実装まで (トランジスタ技術SPECIAL)
VHDLによる論理合成の基礎―合成に向いたコーディングを考える
インターネットの情報だけで勉強しようと思っていたのですが、assignとregに対する理解が不十分であることに気づき、左の2冊の本を購入しました。
 
1つ目の本は、verilogの文法について詳細かつ網羅的に書かれており、例も豊富で、ミーリ型、ムーア型回路についてもわかりやすかったです。
 
2つ目の本には、いつラッチが生成されるか詳しく豊富な例とともに言及してあり、これが非常にためになりました。moduleの出力手前のところにラッチが生成される場合、その後段に別のmoduleをつくっけた場合、そのmoduleへの入力は、ひとつ前のクロックでの出力になるわけですが、ここの部分が正しく理解できていなかったことがよくわかりました。
 
これらの点を踏まえて上記のTINYCPUのソースコードを見なおしたところすんなり理解できました。 
 
インターネットの情報だけではサンプルコードの例示が不十分であったり、説明が間違っていたりとなかなか独習には厳しかったです。verilogの学習のための必要知識の4割ぐらいはインターネットの情報だけでなんとかなるのですが、あとの3割は本を見て、そして残り3割は自分で試してみる、みたいな方法が一番習得が早いかなぁと思いました。参考になれば幸いです。