+++ /dev/null
-library ieee;
-use ieee.std_logic_1164.all;
-
-
-entity is_unstable is
- generic (
- T: time := 0 ns;
- T_HOLD: time := 0 ns
- );
- port (
- sig_in: in std_logic;
- sig_out: out std_logic
- );
-end is_unstable;
-
-
-architecture behavioral of is_unstable is
-begin
-
- sig_out <= '1' when (sig_in'delayed(T_HOLD) /= sig_in'delayed(T)) or
- (sig_in'last_event < T and sig_in'last_event >= T_HOLD)
- else '0';
-
-end behavioral;
+++ /dev/null
-library ieee;
-use ieee.std_logic_1164.all;
-
-
-entity is_unstable_v is
- generic (
- T: time := 0 ns;
- T_HOLD: time := 0 ns
- );
- port (
- sig_in: in std_logic_vector;
- sig_out: out std_logic
- );
-end is_unstable_v;
-
-
-architecture behavioral of is_unstable_v is
-begin
-
- sig_out <= '1' when (sig_in'delayed(T_HOLD) /= sig_in'delayed(T)) or
- (sig_in'last_event < T and sig_in'last_event >= T_HOLD)
- else '0';
-
-end behavioral;
-- Generate mask for periods of time with invalid data
-- FIXME: this may break hold time
- xm_addr: entity simulated.is_unstable_v generic map (T => T_AA, T_HOLD => T_OH)
+ xm_addr: entity simulated.changed_within_t_vec generic map (T => T_AA, T_HOLD => T_OH)
port map (sig_in => a, sig_out => xmask_addr);
- xm_ce: entity simulated.is_unstable generic map (T => T_CO, T_HOLD => T_HZ)
+ xm_ce: entity simulated.changed_within_t generic map (T => T_CO, T_HOLD => T_HZ)
port map (sig_in => ce_n, sig_out => xmask_ce_n);
- xm_oe: entity simulated.is_unstable generic map (T => T_OE, T_HOLD => T_OHZ)
+ xm_oe: entity simulated.changed_within_t generic map (T => T_OE, T_HOLD => T_OHZ)
port map (sig_in => oe_n, sig_out => xmask_oe_n);
- xm_ub: entity simulated.is_unstable generic map (T => T_BA, T_HOLD => T_BHZ)
+ xm_ub: entity simulated.changed_within_t generic map (T => T_BA, T_HOLD => T_BHZ)
port map (sig_in => ub_n, sig_out => xmask_ub_n);
- xm_lb: entity simulated.is_unstable generic map (T => T_BA, T_HOLD => T_BHZ)
+ xm_lb: entity simulated.changed_within_t generic map (T => T_BA, T_HOLD => T_BHZ)
port map (sig_in => lb_n, sig_out => xmask_lb_n);
xmask_hi <= xmask_addr or xmask_ce_n or xmask_oe_n or xmask_ub_n;
xmask_lo <= xmask_addr or xmask_ce_n or xmask_oe_n or xmask_lb_n;