0

ザイリンクス ISE Web パックと ModelSim を使用して TFF をシミュレートしようとしましたが、次のブロック ダイアグラムが使用され、構造コードは VHDL を使用して記述されました。しかし、正しい波形を取得できません。Tフリップフロップは順序回路であるため、まず1つの出力(Q)に対して出力値を1または0として与えてプロセスを開始します。

T フリップフロップの真理値表とブロック図

シミュレーション波形

AND ゲートのコード:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;



entity AND_GATE is
Port ( X : in  STD_LOGIC;
       Y : in  STD_LOGIC;
          W : in STD_LOGIC;
       Z : out  STD_LOGIC);
end AND_GATE;

architecture Behavioral of AND_GATE is

begin
Z <= X AND Y AND W;

end Behavioral;

NOR ゲートのコード:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity NOR_GATE is
Port ( A : in  STD_LOGIC;
       B : in  STD_LOGIC;
       C : out  STD_LOGIC);
end NOR_GATE;

architecture Behavioral of NOR_GATE is

begin

c   <= A NOR B;

end Behavioral;

T-FF のコード:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity TFF_2 is
Port ( T : in  STD_LOGIC;
       CLK : in  STD_LOGIC;
       Q : inout  STD_LOGIC;
       s : inout  STD_LOGIC);
end TFF_2;

architecture STRUCTURAL of TFF_2 is

--declare components being used in T -FF
component TFF is
Port ( T : in  STD_LOGIC;
       CLK : in  STD_LOGIC;
       RST : in  STD_LOGIC;
       Q : out  STD_LOGIC);
end component;

component NOR_GATE is
Port ( A : in  STD_LOGIC;
       B : in  STD_LOGIC;
       C : out  STD_LOGIC);
end component;

component AND_GATE is
Port ( X : in  STD_LOGIC;
       Y : in  STD_LOGIC;
          W : in STD_LOGIC;
       Z : out  STD_LOGIC);
end component;

--declare signals

signal S1, S2 : STD_LOGIC;

begin

C1 : AND_GATE port map (Q, T, CLK, S1);
C2 : AND_GATE port map (S, T, CLK, S2);
C3  : NOR_GATE port map (S1, S, Q);
C4  : NOR_GATE port map (S2, Q, S);

end STRUCTURAL;

これらのファイルはエラーなしで合成されましたが、シミュレーションでは期待される出力が得られませんでした。

4

1 に答える 1

0

私が持っているいくつかの提案があります。

  1. 初期化されていない変数があります。:= '0';宣言の最後に追加します。シミュレーションでは、「X」または不明が表示される場合があります。ハードウェアが 1 または 0 になるため、合成されたデザインは問題なく動作しますが、シミュレータを指示する必要があります。

  2. 一部の出力変数には、入力へのフィードバックがあります。設計は非同期であり、繰り返しの時間を計測するために何らかの説明のクロックを使用していません。プロセスなどの使用を検討してください if rising_edge(clk)

于 2016-09-28T12:01:38.690 に答える