2016-09-20 9 views
0

このコードは2対1マルチプレクサのデータフロー用で、奇妙な構文エラーが返ってきて何が原因なのかわからない。エラーは示された行のセミコロンにあります。奇数VHDL 2対1マルチプレクサの構文エラー

entity TwotoOne is 
PORT 
(
    w0, w1 : IN STD_LOGIC; 
    s  : IN STD_LOGIC_VECTOR (1 DOWNTO 0); 
    f  : OUT STD_LOGIC 
); 

end TwotoOne; 

architecture Dataflow of TwotoOne is 
BEGIN 

    WITH s SELECT 
    f <= ((not s) and w0) or (s and w1); -- Error here 

END Dataflow ; 
+0

一つの問題であなたのエンティティの本体内のすべての行を交換する定期的な信号の割り当てを使用します)。 's'は2つの選択肢の中から選択的に配列の値として宣言されます。これはスカラー型(例えばstd_logic)でなければなりません。これは[this](http://i.stack.imgur.com/xZO7k.jpg)のように 'w0'または' w1'の間で選択します。あなたの質問を[MCVE](http://stackoverflow.com/help/mcve)にしてください。あなたはエラーを提供することに加えて、文節を欠いているので、VHDLをコードとしてフォーマットすることを検討してください。 'not'演算子は優先度が高く、' not s'には括弧は不要です。 – user1155120

答えて

0
  • あなたの2入力マルチプレクサは、2ビットの選択入力、sを有します。それは単一のビットである必要があります。
  • 単一ビットのベクトルのandは実行できません。
  • withステートメントは完全に無効です。

あなたは、単にwith行を削除し、sstd_logicを作る場合、私はあなたのコードが動作する疑いがあります。あなたは4対1マルチプレクサを書くことを計画している場合を除き

0

は、sは、/ select文でエラーが発生した不完全であるだけ1 bit

entity TwotoOne is 
PORT 
(
    w0, w1, s : IN STD_LOGIC; 
    f  : OUT STD_LOGIC 
); 

end TwotoOne; 

architecture Dataflow of TwotoOne is 
BEGIN 

    f <= ((not s) and w0) or (s and w1); 

END Dataflow ; 
0

です。 あなたはどちらかを完全WITH s SELECT行を削除することができ、または(選択された信号の割り当てのための構文を満たしていない勇気づけラインに加えて

with s select f <= 
    w0 when '0', 
    w1 when others; 
関連する問題