verilog HDL

  

wireにおけるwireとregの違いは、まっすぐに進む、つまり入力が変化し、出力が無条件に直ちに反映されることを意味します(NANDゲートとの単純な接続など)。

regはトリガーがなければならないことを示し、出力は入力の状態を反映します。

regはストレージユニットに相当し、wireは物理的な接続に相当します。入力がない場合は元の値を維持できますが、実際のハードウェア回路とは直接関係ありません。

この2つの違いは、レジスタタイプのデータが最後の割り当てのままであるのに対し、ラインタイプのデータは継続的に駆動される必要があるということです。 wireは連続代入文で使用され、regはプロセス代入文で使用されます(初期、常に)。ワイヤがドライブなしで接続されている場合、その値はzであり、regのデフォルトの初期値は未定義の値xです。

連続代入文では、式の右側の計算結果によって、式の左側がすぐに更新されます。理解すると、線に直接接続されている論理と等価で、この論理は式の右側に対応し、この線はワイヤに対応します。プロセス割り当てステートメントでは、式の右側の計算結果は、条件のトリガーのもとで変数に入れられ、この変数はregタイプとして宣言することができます。トリガー条件に応じて、プロセス割り当てステートメントはさまざまなハードウェア構造をモデル化することができます:条件がクロックの立ち上がりまたは立ち下がりエッジの場合はハードウェアモデル、トリガーが高レベルの信号の場合は低レベルの場合、このハードウェアモデルはラッチであり、この条件が代入文の右側にあるオペランドの変更である場合、ハードウェアモデルは組み合わせロジックです。

組合せ論理出力変数の場合は、直接割り当てを使用できます。つまり、regタイプとして指定されていない場合、デフォルトは1ビットワイヤタイプです。したがって、1ビットワイヤタイプ変数を指定する必要はありません。もちろん、ワイヤータイプは具体的に指定されています。これは複数ビットである場合や、プログラムを読みやすくするための場合があります。 wireはassignによってのみ連続して割り当てることができます。regはinitialとalwaysでのみ割り当てることができます。

入力ポートはwire /regで駆動できますが、入力ポートはwireのみ、出力ポートはwire /regタイプ、出力ポートはwireのみを駆動、出力ブロックがプロセスブロックで割り当てられている場合はregです。タイプ、プロセスブロックの外側に割り当てられている場合は、ネットタイプ(wire /tri)です。キーワードinoutを使用して双方向ポートを宣言するinoutポートはreg型として宣言することはできず、wire型だけとして宣言することができます。

デフォルトのシグナルはワイヤータイプで、regタイプが宣言されています。ここでのデフォルトは、出力信号がワイヤのときに出力として宣言されていることを示します。モジュール内部シグナルの場合は、wireまたはregとして宣言する必要があります。always <ステートメント>の場合、代入はregとして宣言する必要があり、代入を継続的に割り当てる場合はワイヤを使用する必要があります。

モジュールが呼び出されたとき信号の種類を判別する方法は次のようにまとめられます。

?信号はポート信号と内部信号に分けられます。ポートリストに表示される信号はポート信号で、他の信号は内部信号です。

?ポート信号の場合、入力ポートはnetタイプのみです。出力ポートはネットタイプかレジスタタイプのどちらかです。出力ポートがプロセスブロック内で割り当てられている場合はレジスタタイプが使用され、プロセスブロックの外部(インスタンス化ステートメントを含む)が割り当てられている場合はネットタイプになります。

内部信号タイプは出力ポートと同じであり、タイプはnetまたはregisterです。判定方法も出力ポートと同じです。値がプロセスブロック内で割り当てられている場合はレジスタタイプで、プロセスブロック外で割り当てられている場合はネットタイプです。

?シグナルをプロセスブロック内とプロセスブロック外の両方に割り当てる必要がある場合。このような状況は、決定信号などで発生する可能性があります。このとき、中間信号変換が必要です。


以下は一般的なエラーとそれに対応するエラーメッセージです。

?ネット型を与えるか宣言された型のシグナルを忘れるために手続き文を使用してください。割り当て

情報:不正な……代入

?インスタンスの出力をレジスタ型として宣言された信号に接続します。

情報:< name>に不正な出力ポート指定があります

?モジュールの入力信号をレジスタタイプとして宣言します。

情報:互換性のない宣言、<シグナル名>……

Copyright © Windowsの知識 All Rights Reserved