現在、私は12時間のデバッグセッションの最中です。私の人生の間、このこぶを渡すことはできません。VHDLの信号値を特定できません
私のコードの設定方法は、8ビットのstd_logic_vectorがDE2-115ボード上の8つのスイッチにマッピングされています。各ビットは、相対スイッチ(0または1)によって起動されるロジックレベルに腐食します。
目標は、タイマーを開始する前に8台のスイッチのいずれかがアクティブになるのを待機するようにすることです。
signal relative_time_enable : STD_LOGIC := '0';
signal signal_in : STD_LOGIC_VECTOR(7 downto 0);
signal_inがマッピングされる:信号relative_time_enableは1の論理状態に設定されているときに信号が示すように、この変数は初期化され、それは最終的に0にリセットされることはありません1に設定されると、これは、活性化されます私のエンティティで宣言されていないポート、またはその逆のポートを使用することができます。しかし、signal_inはスイッチに腐食すると言われています。ここに私が今持っているコードがあります。
process(clk_1MHz_enable, signal_in)
begin
if(clk_1MHz_enable = '1') then
if(relative_time_enable = '0') and (signal_in /= "00000000")then
relative_time_enable <= '1';
end if;
end if;
end process;
私は、if文が常に真となっていることを問題として推測していると思います。まるでsignal_inが最初のサイクル内の複数の状態を通過しているので、値が直ちに1に設定されているように、私は正しい方向に向けることができるオンラインを見つけることができませんでした。
ここでは、 "00000000"を "11111111"、 "UUUUUUUU"、 "ZZZZZZZZ"、 "XXXXXXXX"に置き換え、それらのすべてがまだ通過することを含む値を実際に調べるためにすべてを試しました。
私も試してみました:
process(clk_1MHz_enable, signal_in)
begin
if(clk_1MHz_enable = '1') then
if(relative_time_enable = '0') and (signal_in /= "00000000")then
for i in 0 to 7 loop
if(signal_in(i) = '1') then
relative_time_enable <= '1';
end if;
end loop;
end if;
end if;
end process;
をこの方法では、それは「ダブルチェック」はずのように思えるが、何とかそれはどのスイッチが活性化される前に通り抜けると、その値を1に設定保持します。また、LCD上にsignal_inが表示され、スイッチを移動すると変更され、起動時にすべてが00000000と表示されます。
FYI:このFPGAとVHDLで2週間しか作業していないので、非常に基本的です。また、私はModelSIMでの自分のスキルに100%自信を持っておらず、どのように私が見ているものをコードの問題にどのように変換するのかはわかりません。
ご協力いただければ幸いです。コードをもう一度見る必要がある場合は、必要なものを投稿することができます。私はちょうどそれのすべてを置いていないので、このポストには関係のないLCDを制御するかなり長いステートマシンがあるからです。
また、次のコードは期待どおりに動作することを言及する必要がありますが、このコードの問題は、relative_time_enableを0に戻して戻すことです。私がこれを示している唯一の理由は、クロックを開始する前にスイッチがアクティブになるまで本質的に待機するためですが、スイッチを非アクティブにするとクロックが問題なく動作しなくなります。
process(clk_1MHz_enable, signal_in)
begin
if(clk_1MHz_enable = '1') then
if(relative_time_enable = '0') and (signal_in /= "00000000")then
relative_time_enable <= '1';
else
relative_time_enable <= '0';
end if;
end if;
end process;
Genuis! Bit_Vectorは美しく動作しました。お手伝いありがとう。 – Dylan