VHDLのif文の問い合わせ

D

drifterz

Guest
こんにちは、私はVHDLに新たなんだと、そう私の "愚かさ"をご容赦ください。私は'1として信号(signal_a)を宣言し、私はサインを確認したいとき、有効な以下の文ですか?もし(signal_a> = 0)場合、または明示的に特定すべきである私がMSB:事前にするif(がsignal_aのMSB = '0 ')をありがとうございます。
 
例えばの信号、 "10001010"です。ここMSBが'1 'であるため、これはサインです-VE(私が推測する)とその逆を意味.... '1 =((7)の場合は、必ずこの方法でチェック')THEN {ステートメント;} END IF;私はあなたがそれを取得するために...私が間違っRegrds正しい場合は大丈夫だと思う。
 
が'1、のように認めていないように、署名された比較を実行するために署名に変数をキャストしなければならないでしょう。 [コード]場合署名(signal_a)> = 0の場合は、[/コード]私はパッケージIEEE.STD_LOGIC_ARITHデザインで使用されていることを、前提としています。あるいは、署名としてすべて'1を扱うことを、使用することができるIEEE.STD_LOGIC_SIGNED。適切な解決策は、あなたのデザインで他の算術演算を使用しているかどうかによって異なります。署名として拡張算術演算では、符号付きの値を表す変数が定義されている可能性が最も高いでしょう。示唆したように、符号ビットを直接テストでは、パッケージと競合するパッケージに依存せず、また決してしないという利点があります。
 
次のパッケージを使用することの意味は、何ですか?使用IEEE.STD_LOGIC_ARITH.ALL;;使用IEEE.STD_LOGIC_UNSIGNED.ALL;感謝IEEE.STD_LOGIC_1164.ALLを使用しています。
 
パッケージは、論理合成で使用する演算子と関数をdeclarare。私の意見に、STD_LOGIC_1164とSTD_LOGIC_ARITHは、ほとんどのデザインに適しているべきパッケージです。 std_logic_unsignedでは、追加を使用することができる。すべて'1も符号なしの数値とみなされるようにそれはVerilogの似たような行動を紹介しています。個人的に、私はおそらくいくつかの付加的な型キャストを必要とするが、より明確になって、明示的に符号付きおよび符号なしの宣言を好む。
 
気を付けろ、使用IEEE.STD_LOGIC_ARITH.ALL、使用IEEE.STD_LOGIC_UNSIGNED.ALL、パッケージは、IEEE名前空間を "ハイジャック"という両方の非標準のSynopsysパッケージです。 std_logic型で、符号付きおよび符号なしの演算を行うための正しい方法だけ含めることです:use IEEE.numeric_std.all、それはあなたが、符号付きおよび符号なしの型を使用し、それらの計算を行うことができ、それ以降、すべてです。そして、それは公式のIEEEだ。
 

Welcome to EDABoard.com

Sponsor

Back
Top