Probleme mit Verzögerungsmodell: Transport

Gast #4666323
Lesenswert?

Hallo zusammen,

ich bin auf ein Verhalten meines VHDL-Modells gestoßen, dass ich mir 
nicht erklären kann.
Ich erzeuge mir einen Signalverlauf mit Hilfe der Transport Anweisung in 
meiner Testbench. Dieses Signal soll im "DUT" in einem syncronen Prozess 
verzögert werden. Jedeoch findet diese Verzögerung nicht statt.
Hier ein Beispielcode:
1
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.numeric_std.all;
4

5
entity problem is
6

7
end entity problem;
8

9

10

11
architecture behavioral of problem is
12

13
  signal clk      : std_logic := '1';
14
  signal test_sig : std_logic := '0';
15
  signal reg      : std_logic := '0';
16
  signal reg_r    : std_logic := '0';
17

18
  constant clk_period : time := 10 ns;
19

20

21
begin  -- architecture behavioral
22

23
  clk <= not clk after clk_period/2;
24

25
  test_sig <= '0' after 0 ns,
26
              '1' after 20*clk_period;
27

28
  reg <= transport test_sig after 10*clk_period;
29

30
  process(clk)
31
  begin
32
    if rising_edge(clk) then
33
      reg_r <= reg;
34
    end if;
35
  end process;
36

37

38
end architecture behavioral;


Die Simulation zeigt, dass "reg_r" immer gleich "reg" ist. Ohne die 
Verwendung von "transport" (reg <= test_sig) ist das Verhalten wie 
gewünscht und "reg_r" ist um eine Periode gegenüber "reg" verzögert.
Hat jemand eine Idee, woran das liegen kann? Im Anhang befindet sich das 
Beispiel.

Viele Grüße,

Cotton
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren