Stimulus Signal einmalig verzoegern (Testbench)

OP 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?
Gast #5928415
Lesenswert?
• ▲
▼
So sollte es gehen:
(Syntaxcheck ungeprüft)
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;

Wobei ich die erste Zuweisung weglassen würde und stattdessen das Signal 
auf 0 Initialisieren würde, aber das ist Geschmackssache.
OP 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