Verilog構文

2858 ワード

1基礎知識2データ型3演算子
一.基礎知識
論理値論理0:ローレベル、対応回路GND論理1:ハイレベル、対応回路VCC論理X:未知、可能性ハイレベル、可能性ローレベル肯定高またはローレベル論理Z:高抵抗状態、外部に励起信号がない、宙状態彼は入力していない、可能性高低は中間にある
デジタル進数フォーマットのバイナリ8進数十進数b o d hバイナリ4′b 0101 4はビット幅bがバイナリを表し、0101が10進数5であれば'b 0101がデフォルトの32'b 0101 10進数4'd 2が4桁の10進数2(バイナリ0010)100がデフォルトの32'd 100が16進数4'haが4桁の16進数a(バイナリ1010)16'b 1001_を表す1010_1010_1001=16’h 9 AA 9下線コンパイル時に無視するのは可読性を高めるためです
識別子はモジュール名ポート名信号名などの任意のアルファベット数字$記号と下線を定義するために使用され、最初はアルファベットまたは下線でなければならない.
二.データ型
三大データ型:1.レジスタデータ型2.ネットワークデータ型3.パラメータデータ型が本当にデータ回路で機能するのはレジスタデータ型とネットワークデータ型です
1.レジスタタイプレジスタは抽象的なデータ記憶部を表し、付与文によってレジスタ記憶の値キーがreg regタイプデータのデフォルト初期値が不定値X regであることを変更できる[31:0]delay_cnt; [31:0]31~0はレジスタのビット幅を表し、32ビットのレジスタであることを示し、上位は前であり、下位は後ろdelay_に書かれている.cntはレジスタ名reg key_reg; keyという名前が定義されていることを示します.regの1ビットのレジスタregタイプのデータは、always文およびinitial文にのみ割り当てられます.プロシージャ文がタイミングロジック、すなわちalways文にクロック信号がある場合、レジスタ変数はトリガに対応します.プロシージャ文が組合せロジック、すなわちalways文にクロック信号がない場合、レジスタ変数はハードウェア配線に対応します.
2.ウェブタイプウェブデータ型は、ゲートなどの構造エンティティ間の物理的なウェブタイプの変数が値を格納できないことを示し、その値は、彼を駆動する要素によって決定されるウェブデータ型であり、wireタイプとtriタイプを含み、最も一般的に使用されるのはwireタイプwire key__である.flagが1ビットのwireタイプの変数を表すワイヤネットタイプ変数の素子は2、連続付与文、assignなどあり、駆動素子がワイヤネットタイプの変数に接続されていない場合、この変数は高抵抗であり、すなわちその値はZである
3.パラメータタイプパラメータは、Verilog HDLでparamrterで定数parameter H_を定義する定数です.SYNC = 11’d41;//行の同期とC言語のdefineは、複数のパラメータを一度に定義できるように似ています.パラメータとパラメータの間には、各パラメータ定義の右側をカンマで区切る必要があります.定数式のパラメータデータで、ステートマシンの状態を定義するためによく使用される必要があります.データビット幅や遅延サイズなどは識別子を用いて定数を表すことで、モジュール呼び出し時にパラメータ伝達によって呼び出されたモジュールで定義されたパラメータを変更することができ、プログラムの可読性とメンテナンス性を向上させることができる.
三.演算子1.算術演算子
  • /%/または
  • の完全除去しか実現できない.


    2.関係演算子
    <<= >= == !=
    3.論理演算子非!および&&または
    4.条件オペレータ?result=(a>=b)?a : b ;
    5.ビット演算子~取反~a a aはaの各ビットをそれぞれ取反&a&bはaの各ビットとbの同じビットを相与|各ビットを相或^各ビットを異或
    6.シフト演算子
      <<
    

    4’b 1001<<2=6’b 100100の2つのシフト演算はいずれも0で空格子点を補充する4’b 1001>>1=4’b 0100左シフト時のビット幅増加右シフト時のビット幅は変わらない
  • 接合演算子{}{a,b}は、aとbを新しい信号c={a,b[3:0]}として接合する.aのビット幅が8ビットbのビット幅が4ビットc[11:0]={a[7;0],b[3:0]}の接合後cが12ビット
  • であると仮定する.
    プログラムフレームワークプログラムフレームワークプログラムフレームワークプログラムフレームワークプログラムフレームワークプログラムフレームワークプログラムフレームワークプログラムフレームワークプログラムフレームワークプログラムフレームワーク
    プログラムフレーム1.コメント///**/
    2.キーワードがたくさんある多くのmodulモジュールはinput入力ポート定義output出力ポート定義inout双方向ポート定義を定義し始めました...など
    3.プログラムフレームワークVerilogの基本設計ユニットはモジュールC言語の基本設計ユニットである.1つのモジュールが2つの部分から構成され、一部の記述インタフェースと一部の記述論理機能module block(a,b,c,d)/モジュール名が与えられるモジュールのポートリストinput a,bを定義する.//ポートにどのような入力信号があるかを示すoutput c,d;//ポートにどのような出力信号IOがあるかを示す説明
    assign c = a | b;//assignネットワークタイプのデータにassign d=a&b;//モジュールの機能定義
    endmodule各Verilogプログラムは4つの主要部分ポート定義IO説明内部信号宣言機能定義Verilog統合可能なモジュールがあり、物理的な実際の回路の統合不可能なモジュールを生成してシミュレーションファイルを作ることができ、テストモジュールはalwaysブロックの中で、論理は順次実行され、複数のalwaysブロックの間は並列である.
    4.モジュール呼び出し