Comments
Description
Transcript
Verilog-AMS入門講座
Verilog-AMS 入門講座 桜井 至 第2 回 Verilog-AMS 言語の基本構文 アナログ/ミックスト・シグナル対応のハードウェア記述言語である 「Verilog-AMS」の入門講座の第 2 回をお届けします.今回は, Verilog-AMS 言語の基本構文のうち,モジュール,パラメータ,変数,アナログ手続き的ブロック文などについて説明します. Verilog-AMS は,従来のVerilog-HDL を拡張した言語仕様であるため,既存のディジタル設計用の構文も含まれています. 本講座では,ディジタル設計用の構文の説明は最小限にとどめ,アナログ設計用の構文を中心に解説します. (編集部) 前回は,ディジタル回路だけでなくアナログ回路の構造や 数,16 進数,8 進数,2 進数,および実数を表現できます. 動作の記述を可能とするハードウェア記述言語の基本概念, アナログ値では,整数 (integer) と実数 (real) を用いることが および HDL を利用したミックスト・シグナル設計のフロー, できます. Verilog-AMS のサンプル回路の記述例を紹介しました.ま た,基礎知識としてCMOS トランジスタの基本原理を解説し ディジタル値のベクタは,以下のように表します. サイズ'基数 値 ました. 今回より,Verilog-AMS 言語のより詳細な構文を紹介し ここで,サイズはベクタの幅を示します.基数については, 10 進数がd,16 進数がh,8 進数がo,2 進数がb になります. ます.なお,Verilog-AMS の構文は,従来のディジタル設 実数は,小数点形式または指数形式で表現します.以下に記 計用言語としてのVerilog-HDL とアナログ設計用言語として 述例を示します. のVerilog-A を合わせたものです.そこで本講座では,従来 4'b1001 ―― ベクタ幅 4の2 進数 のVerilog-HDL を,ディジタル設計用であることを強調する 16'h7a5f ―― ベクタ幅 16の16 進数 意味で 「Verilog-D」 と呼ぶことにします. 16'b1001_0111_0011_1011 ―― ベクタ幅 16の2 進数 1.字句に関する規約 Verilog-AMS の記述は,Verilog-D と同様にフリー・フォ 697 ―― 整数 2.0e9 ―― 指数形式 (実数) 3.1415 ―― 小数点形式 (実数) ーマットです.つまり,字句の句切りや記述の見やすさのた めに,改行,スペース,タブを自由に用いることができます. ●識別子 まずVerilog-AMS を記述するための字句の規約に触れます. 識別子はモジュール名,信号名,パラメータ名などの識別 のために使用します.使用可能な文字は,以下の4 種類です. ●コメント コメントの表記には,1 行のコメントと複数行に渡るコメ ントの2 種類があります.1 行のコメントは // で始まります (その行が終了するまで,コメントとして扱われる).一方, 複数行に渡るコメントでは, /*と */ で囲まれた部分がコメ ントとして扱われますが,ネストすることはできません.コメ ントを効果的に用いることで,記述が見やすくなります. 英字 (a ∼ z,A ∼ Z) 数字 (0 ∼ 9) $ アンダ・スコア (_) ただし,最初の文字は英字かアンダ・スコアでなければなり ません. 大文字と小文字は区別されます.たとえばclock とCLOCK は,異なった識別子として認識されます.すべてのキーワード ●定数 定数は,代入式やパラメータで使用します.定数にはディ ジタル値とアナログ値があります.ディジタル値では,10 進 148 Design Wave Magazine 1999 December (予約語) は小文字で定義されており,キーワードと同じスペル の大文字による文字列は識別子として使用できます. エスケープ文字である\ (バック・スラッシュ) を使うと,任 Verilog-AMS 入門講座 意のASCII 文字から成る識別子を作成できます.アスタリス ク (*) や正符号(+) を含む識別子を作成するには,識別子名 の最初の文字にエスケープ文字を使用します.以下に記述例 を示します. \(a+b)*c \*error/warning* \bus1+bus2 いずれも数式ではなく識別子として認識されます. ●文字列 文字列は,""(2 重引用符) で囲まれた文字の並びで表しま 〔リスト1〕モジュールの基本構造 module (ポート・リスト); >ポート定義 >ネット宣言(ディジタル) >ディスプリン定義(アナログ) >パラメータ宣言 >変数宣言 >ブランチ宣言(アナログ) > always / initial ブロック(ディジタル) > analog ブロック(アナログ) >コンポーネント・インスタンス >プリミティブ(ディジタル) endmodule す.ただし,必ず1 行以内に収まる必要があります.文字列 (n は文字数) のパラメータまたはレジスタ は,8 × n ビット幅 を宣言することで保持することができます.以下に記述例を 示します. "Hello World" "** Error **" $display($time,, "DATA = %b ", DATA); 3 行目の例では,DATA = %b が文字列として認識されます. ● module 文と endmodule 文 モジュール定義はmodule 文で始まり,endmodule 文で 終わります.module 構文は,次のようなものです. module モジュール名 (ポート・リスト) ; モジュール本体 endmodule module 文の次にモジュールの名前を指定します.ポー 2.モジュール Verilog-AMS の設計データは複数の構文から構成されてい ます.そのなかで,設計回路を定義するのがモジュール (module) です.モジュールは,デザイン名,入出力ポート, ト・リストはオプションで,モジュールへの入力,出力また は入出力のポート名を指定します.一つの設計ファイルには, Verilog-AMS の複数のモジュールを含めることができます. すべての回路は最上位 (トップ・レベル) のモジュールから データ・タイプなどのインターフェース部分と,回路機能を構造 始まります.最上位モジュールでは,通常,外部に接続する 記述または動作記述によって定義した機能部分で構成されます. ポート・リストをもちません. 構造記述では,他のモジュールやプリミティブを下位階層 ブロックや論理ゲートとしてインスタンス化し,それらの接 続を定義します.動作記述では,Verilog-D のディジタル構 文または Verilog-A のアナログ構文を用いて回路機能を定 義します. ●ポート定義 ポート・リストで定義した信号に対して,入力 (input), 出力 (output),双方向 (inout) を宣言します. ディジタル・ポートに接続された信号は,論理値として1, Verilog-AMS では,同一モジュール内にアナログ動作とデ 0,x (不定) ,z (ハイ・インピーダンス) のいずれかの論理値 ィジタル動作の両方を混在して記述できます.その場合,ア をもちます.また,ベクタのポートでは,ポート定義の際に ナログ動作はanalog 手続き的ブロック,ディジタル動作は ビット幅を指定します. initial 手続き的ブロックおよびalways 手続き的ブロッ アナログ・ポートに接続された信号は,ディスプリン クに記述します.Verilog-AMS のanalog ブロックでは,連 (d i s c i p l i n e )で定義された特性をもちます.たとえば, 続的な時間によるアナログ動作を定義します.一方,initial electrical ディスプリンで指定された信号は,電位と電流の ブロックとalways ブロックでは,イベントに基づいたディ 特性をもちます. ジタル動作を記述します. ここでは,モジュール構文と,モジュール内に含まれる構 ●データ・タイプ宣言 (ディジタル) 文をリスト1 の項目に従って,簡単に紹介します.以下でア Verilog-D の重要なデータ・タイプは,ネット (wire) とレ ナログやディジタルと明記していない部分は,両者に共通で ジスタ (reg) です.ネットは,モジュールやゲート同士を接 あることを意味します.なお,ここではディジタル構文の詳 続する物理的な接続状態を示し,ゲートや継続代入文によっ 細には触れません. てドライブされます.ドライブされていないときは,ハイ・イ Design Wave Magazine 1999 December 149