Verilog

1/3ページ

テストベンチでハンドシェイク

 テストベンチでいただく質問で一番多いのがハンドシェイクです。それは、次の図のように2つのモジュール間でのやり取りがあるような場合のモジュールを検査したい時に必要になります。 たとえば、上の図でモジュールBの設計を行っているとき、”データをおくっていい?”という問いに対して、モジュールAから”いいよ”という回答を得てから送信データを送る。という事があります。 このようにモジュール間で何かのスタート […]

テストベンチのパターンをファイルから読む

 今回はVerilogでテストパターンをテキストファイルからリードする方法について解説します。数バイト程度のパターンであれば、テストベンチの中に記載するのが一般的ですが、数百バイトものデータを読むと大変です。  私の場合、ADCのデータをテキストファイルにしておいて、テストベンチ入力として扱う事が多いです。ADCの場合、サンプリングクロックで1ワードのデータになりますので、エクセル等で計算によって […]

デジタル回路の不定とハイインピーダンス

 VHDLやVerilogの教科書にも「不定」や「ハイインピーダンス」という言葉が載っています。デジタル回路はそもそも「1」と「0」の世界で設計するので、「不定」や「ハイインピーダンス」というのは何なのか? 初心者が明確に理解しにくい言葉だと思います。  VHDLやVerilogでは不定を’x’と記し、ハイインピーダンスは’z’で示します。つまり、& […]

Verilogでの配列

 ソフトウェアの経験がある人にとって、配列を使うのは当たり前の事と思われますが、ハードウェアではあまり配列を使う機会がありません。配列で思い浮かぶ用途のRAMは多くの場合、メーカーが用意しているIPを使うからです。  RAMを構築する際に、これから述べる配列を使うのも良いのですが、メーカ性IPを使う方が良い場合がほとんどです。それは、FPGAには予めメモリブロックという領域があり、そこはRAMやF […]

平均化をVHDL,Verilogで設計する

平均化のデジタル回路設計で設計の概念を解説しましたので、実際にVHDLとVerilogで設計してみます。 まず、VHDLのソースコードを示します。  47行目から8ビット×4段のシフトレジスタを作成しています。簡単にするためにクロック同期そのままで設計しています。実際に使う時にはイネーブル等でクロックを間引く事も必要になるでしょう。  64行目から1/4の回路なので説明が必要です。平均化のデジタル […]

Verilogで固定小数点の設計

 こちらで固定小数点の解説をしたので、実際にVerilogで設計してみます。  ソースコードは短いのですが、今回は検証の方が大きくなっています。  乗算しているのは43行目だけです。符号付きを示す$signedを付けて乗算式を書いているだけなので、悩むことは無いでしょう。乗算の場合には桁数(bit数)が増えますので注意してください。丸めについては、テストベンチで解説します。  テストベンチは少しア […]

デジタル信号処理の固定小数点設計方法

 デジタル信号処理を設計したいのだけど、どうすれば良いのかわからない。という相談を受けることがあります。FPGAにADC(ADコンバータ)を接続してFPGAに取り込む設計はできるけど、フィルターの設計ができない。という話です。よく聞けば、フィルターの事もよく勉強していて、FIRとかIIRも教科書で読んで、設計の方法もツールも使いこなすことができる。FPGAにはメーカーが用意したIPでFIRフィルタ […]

PRBSをVerilogで作る

 PRBSをVHDLとVerilogで設計します。CCITT 0.153やITU-T勧告 V.52などで使われているPRBS9を実際に設計してその手法を学びます。  PRBSの生成多項式は次のように記されています。 G(y) = X9+X5+1 したがって、回路図で示すと次のようになります。  この回路をそのまま作成しても面白くないので、PRBS3とPRBS15を切り替えられるように作ります。 P […]

Verilogステートマシンのテストベンチを細かく解説

「ステートマシンの構想」「Verilogのステートマシンを細かく説明」の続きとして、テストベンチの解説を行います。作成したステートマシンが動作しているのかを確認するにはテストベンチでステートマシンの動作を見ます。  テストベンチのソースコードはそれほど難しくありません。全コードを次に示します。  24行目は本テストベンチで使用するクロック周波数の定数宣言です。10MHzで宣言しています。   27 […]

Verilogのステートマシンを細かく説明

 「ステートマシンの構想」でステートマシンの概略を解説しましたので、ソースコードの説明をします。  まず、状態遷移図を次に示します。  大きなステートマシンですが、動作は単純です。各ステートでシリアルクロックを生成しているので、ステートが多くなっています。シリアルのクロックをHi,Loで2ステート使っていますので、慣れているエンジニアであれば、ループを作ってもっとスマートに設計することができるでし […]

1 3