2012-01-05 2 views
4

FORループを使用して1つのマルチプレクサを生成する方法を教えてください。ここ は、私が何を意味するか抜粋です:ケースのループ

CASE test IS 
    FOR i IN ... LOOP 
     WHEN i => ... ; 
    END LOOP; 
END CASE; 

私は1つのCASE FOR前に置くことができますが、その場合には、それは多くのマルチプレクサを生成することを承知していますか?

+0

あなたは、 'when i =>'の後に何を入れようとしているのかという疑問が明確になります。これは実際にあなたが望む構造ではない可能性があります。 –

+0

私は同意しません。私は意図的にこう書いた。 – user1131562

答えて

4

case文の式を生成するためのループを作成することはできません。

FOR i IN ... LOOP 
    IF test = i then 
    output <= myarray(i); 
    END IF; 
END LOOP; 

を...しかし、あなたがやっているすべては、上記のような単純なマルチプレクサであるならば、あなたドン:あなたはおそらくちょうどforループを使用して、しかし、あなたはケースなしで欲しいものに近い何かを行うことができます「Tはあなたの選択信号に直接ちょうどインデックス可能な場合またはループを、必要とする:

output <= myarray(to_integer(test)); 
+0

私は最初のスニペットを使うことができると思います。私はマルチプレクサではない優先デコーダと常にIFを接続しました(しかし、それはelsifとelse文がある場合です)。 – user1131562

+0

私は、値の全範囲をカバーしたいときには、IFを使用するのが難しいことを知りました。 testがstd_logicのときは、「他人がいるとき」が必要です。または "if ... else {}"と入力します。 – user1131562

+0

VHDLの壊れたビットをリストし、「なぜこれを行うことができないのですか」と尋ねるのではなく、あなたがしたいことについて正確に少し詳細を述べると、より良い答えが得られるかもしれません! :) –

1

はあなたが何を意味するか、このですか?

+0

助けてくれてありがとう、しかし、それは私が望んでいたケースではありません。 – user1131562

関連する問題