次の回路VHDLコードでSとRが両方とも '0'のときにSR-Latchが発振することがわかりました。ここVHDLでのシンプルなSRラッチシミュレーションが発振しない
はSRLATCH
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity SRLATCH_VHDL is
port(
S : in STD_LOGIC;
R : in STD_LOGIC;
Q : inout STD_LOGIC;
NOTQ: inout STD_LOGIC);
end SRLATCH_VHDL;
architecture Behavioral of SRLATCH_VHDL is
begin
process(S,R,Q,NOTQ)
begin
Q <= R NOR NOTQ;
NOTQ<= S NOR Q;
end process;
end Behavioral;
のVHDLで、以下は、テストベンチのコードでプロセスであり、そのシミュレーションが
-- Stimulus process
stim_proc: process
begin
S <= '1'; R <= '0'; WAIT FOR 100NS;
S <= '0'; R <= '0'; WAIT FOR 100NS;
S <= '0'; R <= '1'; WAIT FOR 100NS;
S <= '0'; R <= '0'; WAIT FOR 100NS;
S <= '1'; R <= '1'; WAIT FOR 500NS;
end process;
を生じ、完全に私はシミュレーションが反映されていない理由を任意のアイデアを持っていません。 ..
(クリックで拡大)
振動を実証する[最小、完全であり、検証可能な例](https://stackoverflow.com/help/mcve)も提供していません。治療法は、遅延をアンバランスにすることで、1つが勝つようにすることです。コンセンサスの言葉を提供するのと同じです。クロックド・フリップフロップでは、マスタ・スレーブ・フリップフロップを使用するための刺激と同様に、セットアップ・アンド・ホールド時間が発生します。我々は、デジタルデザインの喪失した技術とゼロゲート遅延による抽象化に取り組んでいます。 – user1155120
QとNOTQの割り当てに均一な遅延を追加する場合、1ns後に 'Q <= R NOR NOTQ;同じオクターブサイクル(介在するWAITなし)でSとRの両方で '0'から '1'への遷移を提供し、[発振](https:// i .stack.imgur.com/d23rt.png "srlatch_vhdl_with_delay.png")、デルタサイクルを表示したりデルタサイクルの最大数を超えたりする可能性のある波形表示を必要としません。 – user1155120