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

小林 優

4.3 シミュレーション記述に役立つ各種構文

 シミュレーション記述の中で,ループ構造を使う場合が多々あります.ループ構造は,プロセス文中やプロシージャ内で記述できます.

● for文
 VHDLのfor文は,純粋にループを作る構文です(図12).ループ変数は,ループを回るたびに1ずつ増減します.ダウン・カウントの場合にはtoの代わりにdowntoを用います.ループ変数は,暗黙的に宣言された整数型の変数です.したがって未宣言で使用できます.また文法上,ループ変数に対して代入することはできません.


図12 for文

 

● while文
 条件判断が先にくるループです(図13).whileの後の条件式が真であればloop以下を繰り返し実行します.ここでは,BUSY信号が0になるまで遅延を与え,シミュレーションを進めています.回路に対して起動信号を与え,処理の終了を待つ場合に使う手法です.処理が終了するクロック数が不明なときに有効な手段です.


図13 while文

 

● シミュレーション結果をチェックするassert文
 シミュレーション結果に応じて,メッセージを出力したりシミュレーションを中止するための構文です.図14に示した例は,あらかじめファイルに保存しておいたシミュレーションのログ・ファイルと現在の結果を比較し,不一致ならメッセージを表示してシミュレーションを中止します.RTL検証とゲート・レベル検証の比較などに有効な手法です.


図14 assert文

 

 条件式が偽なら,report以降の文字列を出力します.厳格度レベルには,

  NOTE, WARNING, FAILURE, ERROR

があります.FAILUREとERRORはシミュレーションを中止します.厳格度レベルを省略するとERRORとして扱います.

 

4.4 デルタ遅延

 VHDLには,仮想の遅延であるデルタ遅延があります.これは,コンピュータ上のシミュレーションで,ハードウェアの並列処理を実現するために考え出された無限小の遅延です.シミュレーション時刻上は遅延量0として扱われます.

 

● デルタ遅延による信号の変化
 図15を用いてデルタ遅延を解説します.3個の直列接続されたインバータを想定します.同時処理代入文を使って,アーキテクチャ直下に記述しました(図15(a)).



(a) 回路とVHDL記述

(b) 各信号のようす

図15 デルタ遅延


 

 入力Aが時刻Tで'1'→'0'に変化したとき,以下の順番で実行されます.

  • 時刻T 代入処理 : A←'0'
  • Bに代入する値の評価 : '1'
  • 時刻T+Δ 代入処理 : B←'1'
  • Cに代入する値の評価 : '0'
  • 時刻T+2Δ 代入処理 : C←'0'
  • Zに代入する値の評価 : '1'
  • 時刻T+3Δ 代入処理 : Z←'1'

 つまり,「評価」と「代入」を交互に行うため,代入する前に値が決まります.このため記述の順番やシミュレータに依存することなく,同一の結果が得られます.

 

● 二つの信号代入文
 信号に対する代入文には,

  • アーキテクチャ直下に記述する同時処理代入文
  • プロセス内で記述する順次処理代入文

があります.

 いずれも記述の順番に関係なく正しく実行されますが,デルタ遅延の考えかたから,動作に若干の違いがあります.

 図16では,いずれも同じ二つの代入文があります.順次処理代入文として記述されているプロセス文では,センシティビティ・リストがAだけとします.同時処理代入文は,すでに解説したように,図16(a)のように信号が変化します.




(a) 同時処理代入



(b) 順次処理代入

図16 同時信号代入と順次信号代入

 

 一方,順次処理代入文では,次のように信号が変化します.初期値を,

  A='1', B='1', Z='x'

とし,時刻TでAが'1'→'0'に変化したと想定します.

  • 時刻T  代入処理  : A←'0'
  • Bに代入する値の評価  : '0'
  • Zに代入する値の評価  : '1'
  • 時刻T+Δ  代入処理  : B←'0'
  •  代入処理  : Z←'1'

 評価と代入が同時に行われないため,記述の順序に関係なく,BとZに正しく値が代入されます.


こばやし・まさる

参考文献
(1) Jayaram Bhasker;A VHDL Primer VHDL言語入門,CQ出版社,1995年.
(2) Douglas L. Perry;VHDL,アスキー,1996年.
(3) Z.ナバビ;VHDLの基礎,日経BP出版センター,1996年.
(4) 長谷川裕恭,VHDLによるハードウェア設計入門,CQ出版社,1995年.
 

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日