私のW_EN(std_logic)信号が必要に応じて(ある条件を満たす場合)設定されているコードを書きたいと思います。 )はゼロです。 W_ENは、私がこれを行うには、この方法では、「その他」の文を(コード例では、「W_EN」が「one_if_one」と呼ばれている)を使用して行うことができますSTD_LOGIC_VECTORだろう場合:VHDL:std_logic信号の "others-like"コマンド
signal cnt : unsigned (1 downto 0); --incremented at every clk_cycle
signal one_if_one : std_logic;
process (cnt)
begin
one_if_one <= (others => '0');
if (cnt = "01") then
one_if_one <= '1';
end if;
end process;
しかしW_ENは一つだけであるため、ビット、 "他の"それと使用することはできません。 "プロセスで指定されていない場合はゼロに設定する"というコマンドを実装する方法があるかどうか尋ねたいと思います。
PS:ifのelseブランチを書くことができますが、実際のコードではもっと問題になる可能性があるので、私はこれをやりたくありません。 「
one_if_one <= 'L';
で
one_if_one <= (others => '0');
が、これはゼロによって課せられたので、別の意味を持っているでしょう:
PPS:私は一瞬のために見つけた唯一の解決策は、ラインを交換することです他の人たちは強い人です。
ご協力いただきありがとうございます。
'one_if_one <=' 0 '; '...プロセス内では、最後の割り当てが勝つので、同じ信号で複数のドライバを作成していません。 –
問題が明らかでない仮想コードではなく、問題がある場合は実際のコードを投稿してみませんか? – mkrieger1
Brianが示すように、プロセス内には1つのドライバがあり、各ドライバは特定のシミュレーション時間にアクティブな投影された出力波形ごとに1つのトランザクションを持ちます(IEEE Std 1076-2008 10.5シグナル割り当てステートメント、10.5.2.2単純な割り当てステートメントの実行)。 if文の前では、集計値の代わりに '0'を割り当てます。 ifステートメントの条件が真である場合、それは囲まれた代入で、前の代入に値 '1'を代入します。 * if文で異なるように指定されています* "* ...プロセスで異なって指定されました*"。 – user1155120