記事 ID: 000080098 コンテンツタイプ: 製品情報 & ドキュメント 最終改訂日: 2021/08/28

Verilog HDL のシフト演算子は、MAX PLUS® II ソフトウェアでどのように合成されますか?

環境

BUILT IN - ARTICLE INTRO SECOND COMPONENT
詳細 シフト演算子 (>) の実装は、 < and > ユーザーが宣言した変数のサイズに依存します。例えば、Verilog HDL の次のコードを考えてみましょう。
reg [3:0] in;
                  output [3:0] shfta;

assign shfta = {in

この場合 shfta 、4 ビット幅であるため、{in<<2} の値は 4 ビット以上になります。もし in = 4'b0100 、 場合 、 shfta = 4'b0000 .6 ビットシフトされた値の最も重要な 2 ビットは失われます。

次のコードでは、6 ビットシフトされた値が保持され shfta 、正しい値が割り当てられます。もし in=4'b0100 、 場合 、 shfta = 6'b010000 .

              reg [3:0] in;
             output [5:0] shfta;

             assign shfta = {in<<2};

MAX PLUS II ソフトウェアは、割り当てステートメントの左側にある変数のサイズに応じて、シフト操作に適したサイズを推論します。次のコードを考慮してください。

             reg [3:0] in;
             output [7:0] shfta;

             assign shfta = {in<<2}   7'h10;

8 shfta ビット幅であるため、{in<<2} には 8 ビットが割り当てられます。>>オペレーターにも同様の規則が適用されます。しかし、>>演算子の性質上、結果はシフト演算子の実装の幅の影響を受けません。例えば in =4'b1000 、{in>>2} が 4'b0010 .シフトされたデータの左側にはゼロが表示されます。ここで最も重要なビットは失われることはありません。その代わり、幅に依存しないシフト演算のために、最下位ビットが失われます。 シフト演算子の実装。

関連製品

本記事の適用対象: 1 製品

インテル® プログラマブル・デバイス

1

このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。