VHDL-Zustand-Maschine testbench

Beschreibung:

Ich versuche, generieren Sie ein test-bench für ein 5-state sequential state-Maschine, die erkennt, 110 oder jede Kombination von (2) 1 und (1) 0. Ich habe bereits geschrieben, der code. siehe unten. Ich habe ein Problem mit dem Prüfstand, das ist falsch. Ich möchte zum testen für alle möglichen Sequenzen sowie Eingabe-Kombinationen, die aus-Sequenz.

Bitte geben Sie mir Beispiele für eine gute Prüfstand zu erreichen, was brauche ich für einen mealy-Maschine.

vhdl-code:

library IEEE;
use IEEE.STD_LOGIC_1164.all;

entity state is
port( clk, x : in std_logic;
      z : out std_logic
      );
end entity;

architecture behavioral of state is
type state_type is (s0,s1,s2,s3,s4);
signal state,next_s: state_type;

------------------------------------------------------------------------------

begin
process (state,x)
begin
if clk='1' and clk'event then

case state is
 when s0 =>
   if(x ='0') then
     z <= '0';
     next_s <= s4;
   else
     z <= '0';
     next_s <= s1;
   end if;

 when s1 => --when current state is "s1"
   if(x ='0') then
     z <= '0';
     next_s <= s3;
   else
     z <= '0';
     next_s <= s2;
   end if;

 when s2 =>  --when current state is "s2"
   if(x ='0') then
     z <= '1';
     next_s <= s0;
   else
     z <= '0';
     next_s <= s0;
   end if;

 when s3 =>  --when current state is "s3"
   if(x ='0') then
     z <= '0';
     next_s <= s0;
   else
     z <= '1';
     next_s <= s0;
   end if;

 when s4 => --when current state is s4
   if (x = '0') then
     z <= '0';
     next_s <= s0;
   else
     z <= '0';
     next_s <= s3;
   end if;
end case;
end if;

end process;
end behavioral;

Prüfstand-code:

library ieee;
use ieee.std_logic_1164.all;

-- Add your library and packages declaration here ...

entity state_tb is
end state_tb;

architecture TB_ARCHITECTURE of state_tb is
-- Component declaration of the tested unit
component state
port(
    clk : in STD_LOGIC;
    x : in STD_LOGIC;
    z : out STD_LOGIC );
end component;

-- Stimulus signals - signals mapped to the input and inout ports of tested entity
signal clk : STD_LOGIC;
signal x : STD_LOGIC;
-- Observed signals - signals mapped to the output ports of tested entity
signal z : STD_LOGIC;

-- Add your code here ...

begin

-- Unit Under Test port map
UUT : state
    port map (
        clk => clk,
        x => x,
        z => z
    );

-- CLOCK STIMULI
CLOCK: process
begin
CLK <= not clk after 20 ns;
wait for 40 ns;
end process; 

-- X input STIMULI
X_Stimuli: process
begin
X <= not x after 40 ns;
wait for 80 ns;
end process;

end TB_ARCHITECTURE;

configuration TESTBENCH_FOR_state of state_tb is
for TB_ARCHITECTURE
    for UUT : state
        use entity work.state(behavioral);
    end for;
end for;
end TESTBENCH_FOR_state;
  • In welcher Weise ist der TB falsch? Was passiert, wenn Sie das problem beheben?
  • Ich glaube, mein Reiz ist falsch, weil, wenn ich mein Grundstück waveform ich nicht alle möglichen Kombinationen von (2) 1 und (1) 0. hätten Sie einen Vorschlag für einen besseren Reiz? Und ich bin nicht sicher, was du meinst, wenn du das problem beheben?
InformationsquelleAutor user2444074 | 2014-02-27
Schreibe einen Kommentar