2016-10-18 4 views
0

私はVHDLでいくつかのコードを持っています。私は連結がどのように機能するのか分かりません。VHDL、連結はどのように機能しますか?

A : IN STD_LOGIC_VECTOR(3 DOWNTO 0); 
B : IN IN STD_LOGIC; 
A <= "1111"; 
B <= '0'; 


A <= A(2 DOWNTO 0) & B; 

"0111"または "1110"ですか?

+0

[最小限の完全で実証可能な例](http://stackoverflow.com/help/mcve)が必要です。上記の「コード」は有効なVHDLではありません。 – user1155120

+0

左から右の順序が維持されます(S_HITS_SRC1の値またはその宣言を指定していないことに注意してください)。 IEEE Std 1076-2008 9.2.5演算子を追加する、パラ2 – user1155120

+0

申し訳ありませんが、更新されました – weider

答えて

1

連結自体については、そういうことをしているようですが、他のエラー(BrianDrummondが指摘しているように入力に割り当てており、コンパイル可能な構文がない)は別として、プロセス外のVHDL信号の割り当ては並行している(つまり、連続して並行して評価される)ため、問題が発生します。

あなたが行うのであれば:

A <= "1111"; 
A <= A(2 DOWNTO 0) & B; 

次の2つのドライバとAのすべてのビットを割り当てることがあります - 「1」となる最下位ビットを除いて、それの左側のビット'B'が割り当てられます。これを実際の銅線で構成すると想像してください。あなたはAのすべてのビットを一緒に結びつけており、それらを正の電圧源に結びつけています。 Bが '1'の場合はすべて '1'にな​​りますが、Bが '0'の場合は短絡のように正と負の電圧端子を効果的に接続します。あなたのシミュレータはあなたに結果が「X」であることを知らせます - 知られていません。

関連する問題