2012-01-05 53 views
4

如何使用FOR迴路生成單個多路複用器。 這裏有一個片段我的意思:案例迴路

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

據我所知,一個能放在前CASE,但在這種情況下它會產生很多多路複用器?

+0

如果你在'when I =>'後面說了要放什麼,問題會更清楚。這可能不是你想要的結構。 – 2012-01-05 14:46:33

+0

我不同意。我故意這樣寫。 – user1131562 2012-01-06 06:58:10

回答

4

您不能像這樣產生循環來生成case語句的表達式。你也許可以做一些接近你想要的東西沒有的情況下,但是,只要使用for循環:

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

...但如果你正在做的是像上面的,你不要簡單多路複用器「T需要的情況下循環,你可以直接與您的選擇信號指標:

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

我認爲我可以使用第一個片段。我總是連接IF與優先解碼器而不是多路複用器(但是當存在elsif和else語句時就是這種情況)。 – user1131562 2012-01-06 06:57:13

+0

我剛纔發現,當你想要覆蓋整個範圍的值時,很難使用IF。當測試是std_logic時,你需要有「當其他人」;或「if ... else {}」。 – user1131562 2012-01-06 07:09:02

+0

如果您提供了更多關於您想要做什麼的更多細節,而不是列出一些VHDL的碎片並詢問「爲什麼我不能這樣做」,您可能會得到更好的答案! :) – 2012-01-06 13:31:13

1

這是什麼意思?

+0

感謝您的幫助,但那不是我想要的案例。 – user1131562 2012-01-06 06:58:41