非常に高速なクロックで非同期デジタル システムを作成しようとしています。入力は、入力を許可する 2 つのスイッチとボタンで決定されます。各入力は、別の状態への移行を許可するかどうかを決定します。digilent basys2 ボードの内部クロック B8 を使用しました。2 番目の状態には正しく到達しているようですが、他の状態には到達できません。ビヘイビア シミュレーションでは、期待どおりの結果が得られました。ここに私の実装があります、
entity states is
Port ( X : in STD_LOGIC;
Y : in STD_LOGIC;
clock : in STD_LOGIC;
input : in STD_LOGIC);
end states;
architecture Behavioral of state is
signal FF : STD_LOGIC_VECTOR (2 downto 0):="000";
begin
process(clock)
begin
if(rising_edge(clock)) then
if(input='1') then
FF(0)<= (((FF(1)) and (FF(2)) and (not X) and Y) or (FF(0)));
FF(1)<= (((not FF(0)) and (not FF(1)) and (FF(2)) and X and (not Y));
FF(2)<= (((not FF(0)) and (not FF(1)) and (not FF(2)) and X and Y)
or ((not FF(0)) and (FF(1)) and (not FF(2)) and (not X) and (not Y)));
Z <= (((not FF(0)) and (FF(1)) and (FF(2)) and (not X) and Y) or (FF(0)));
end if;
end if;
end process;
end Behavioral;
そして、これが理事会の割り当てです。
NET "clock" LOC = "B8" ;
NET "input" LOC = "C11" ;
NET "X" LOC = "L3" ;
NET "Y" LOC = "P11" ;
シミュレーションでは期待どおりの結果が得られたのに、ボードでのテストではそうではなかったのはなぜですか。よろしくお願いします。