VHDL Definieren Sie ein signal, wenn Undefinierte

So, ich habe einige VHDL-Hausaufgaben, und ich habe einige Schwierigkeiten mit meiner testbench. Im Grunde, meine testbench ausgeführt wird, durch die verschiedenen Möglichkeiten für eine Reihe von flip-flops. Allerdings, ich bekomme den 'U' - als ein Ergebnis aus einer der flip-flops, und während ich weiß genau, warum, ich habe keine Ahnung wie es zu lösen ist.

Im Grunde, was passiert ist, ist, dass es für meinen T-flip-flop, da Q nicht eingestellt, wenn ich die XOR-operation, das Programm endet nie, bis ein Wert zugewiesen Q nach der XOR-operation. Also im Grunde, ich brauche eine Möglichkeit der Einstellung von Q, sagen wir, 0, iff Q nicht definiert wurde.

Nur als Referenz, hier ist mein code für das T-flipflop

library ieee;
use ieee.std_logic_1164.all;

entity T_FF is
  port (
        T, clk : in std_logic;
        Q : inout std_logic);
end T_FF;

architecture behv of T_FF is
begin
  process (clk) is
    variable hold1, hold2 : std_logic;
    begin
      if (clk'event) then
        hold1 := Q and (not T);
        hold2 := T and (not Q);
        Q <= hold1 or hold2;
      end if;
  end process;
end behv;

Und der testbench:

library ieee;
use ieee.std_logic_1164.all;

entity tb is
end tb;

architecture behv of tb is
  -- Component declaration
  component T_FF is 
    port (
        T, clk : in std_logic;
        Q : inout std_logic);
  end component;

  signal sT : std_logic :='0';
  signal sclk : std_logic :='0';

  signal sQT : std_logic :='0';

  for TFF : T_FF use entity work.T_FF(behv);

  begin
    TFF: T_FF port map (T=>sT, clk=>sclk, Q=>sQT);

    sclk <= not sclk after 50 ns;
    sT <= not sT after 100 ns;

end;
  • Herzlich willkommen auf Stack Overflow! Deine Frage könnte besser geeignet sein, auf electronics.stackexchange.com, einer unserer Schwester-Websites.
Schreibe einen Kommentar