パイプ記号「|」の意味は何ですか 変数の前


10

私はいくつかのverilogコードを分析していて、次のようなものを見つけました

wire z = |a & b;

シミュレーション中、コードは次のように動作します

wire z = a & b;

|(パイプ)シンボルの意味は何だろうと思っていましたか?シミュレーション/合成に影響はありますか?

回答:


17

これはビット単位の削減演算子です。|a & bは、a(単一ビットを生成する)のすべてのビットに論理ORを適用し、そのビットとの論理ANDを実行することを意味しますb|aaシングルビットの場合は効果がありません。

それにもかかわらず、ビット単位の削減が単一ビット値に適用されるのを見るのは非常に一般的です。典型的な例の1つは、自動生成されたコードで、実際の幅はa構成によって異なる場合があります。別の可能性は、これがaかつていくつかのビットを持っていたレガシーコードであることです。aがシングルビット値になったとき、この行は技術的には正しいので、不要になったリダクション演算子はそのまま残されていました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.