2012-01-26 18 views
2

最後に4ビットの値を表す変数 'a'があるとします。 a = "0011"。この変数への単一のビットは、VHDLインスタンスから読み込まれます。TCL:変数の出力ビットを連結する

VHDL出力の最初のビットが1であると仮定します。今私は、残りのビットは、この変数に連結んか

set a [BUS2INT result_from_VHDL_instance]; # a = 1 

:result_from_VHDL_instance = 1 は、その後、私は私の変数で、この最上位ビットを格納します。 VHDL出力の第2のビットが再び1であると仮定する。 result_from_VHDL_instance = 1.このビットを現在のビットに連結したいと思います。 a = 11.

これが続くので、次のビット(例: result_from_VHDL_instance = 0は、 の値がでなければなりません110など

EDIT:

これまでにあなたの答えのおかげで、私は、私はここに、より基本的な問題を抱えていると思います。最初の質問は、バイナリ表現のためにTCLにそのようなデータ型があるかどうかです。そのa = 1011です。そうでなければ、変数を文字列または整数として表現する必要があります。

+0

をバグのために離れて行くだけで、あなたのコマンドで2番目の$をドロップします。しかし、あなたが本当にやりたいことは明確ではありません。 – schlenk

+0

はい、バグは消えますが、私は望みの結果を得られません。私は自分のポストを編集しました。もう少し意味があります。 – Patrick

+0

@Patrick、kostixはあなたの更新された質問に対する答えを彼の返事に与えました。 – TrojanName

答えて

2

私はあなただけしたいと思う:

append a [BUS2INT result_from_VHDL_instance] 
+0

質問に対する後の編集を考えれば、私はkostixの答えが良く合うと思う。 –

0

はまた、あなただけ行うことができます:

set a "${a}[BUS2INT result_from_VHDL_instance]" 
3

私はちょうどその時、それまでの文字0と1を追加し、文字列を使用し、かつます変数はすべての入力を集めて、b*指定子を使用してbinary formatを使用して実数に変換します。

またexprでゲームをプレイすることができます:

set val 0 
set val [expr {($val << 1) | 0x00}] 
... 
set val [expr {($val << 1) | 0x01}] 
... 
関連する問題