Stimulus Signal einmalig verzoegern (Testbench)

Persönliche Seite #5928398
Lesenswert?

Hallo,

ich frage mich gerade, wie ich ein kontinuierliches Signal oder Takt 
einmalig am Beginn der Simulation verzoegern kann. Und zwar nicht 
Taktabhaengig.
So generiere ich es mir derzeitig:
1
   FCLK <= '0', '1' after 3 ns, '0' after 15 ns, '1' after 27 ns, '0' after 39 ns, '1' after 51 ns;
Ich benoetige also ein Signal mit 24 ns Periode, aber starten soll es 
erst nach 3 ns, mein Takt hat eine Periode von 4 ns.
So geht es jedenfalls nicht:
1
   Frame : PROCESS
2
   wait for 3 ns;
3
   BEGIN
4
   FCLK <= '1'; wait for 12 ns;
5
   FCLK <= '0'; wait for 12 ns;
6
   END PROCESS;
Wo koennte ich die 3 ns Verzoegerung einbauen?
Persönliche Seite #5928437
Lesenswert?

FPGA zum Spass schrieb im Beitrag #5928415:
> So sollte es gehen:
> (Syntaxcheck ungeprüft)

Ja, geht auch so.
>
>
1
> Frame : PROCESS
2
> BEGIN
3
>    FCLK <= '0';
4
>    wait for 3 ns;
5
>    while (true) loop
6
>       FCLK <= not FCLK;
7
>       wait for 12 ns;
8
>    end loop;
9
> END PROCESS;
10
>
>
> Wobei ich die erste Zuweisung weglassen würde und stattdessen das Signal
> auf 0 Initialisieren würde, aber das ist Geschmackssache.

Hab ich dann jetzt zwei Schreibweisen.
Gast #5944081
Lesenswert?

Mark W. schrieb:
> ich frage mich gerade, wie ich ein kontinuierliches Signal oder Takt
> einmalig am Beginn der Simulation verzoegern kann. Und zwar nicht
> Taktabhaengig.
Dafür gibt es das transport-Keyword:
1
library ieee;
2
use ieee.std_logic_1164.all;
3

4
entity transport_test is
5
end entity transport_test;
6

7
architecture test of transport_test is
8

9
    signal FCLK         : std_ulogic;
10
    signal FCLK_delayed : std_ulogic;
11

12
begin
13

14
    Frame : PROCESS
15
    BEGIN
16
        FCLK <= '1'; wait for 12 ns;
17
        FCLK <= '0'; wait for 12 ns;
18
    END PROCESS;
19

20
    FCLK_delayed <= transport FCLK after 3 ns;
21

22
end architecture test;

Duke
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