Stimulus Signal einmalig verzoegern (Testbench)

OP Persönliche Seite #5928398
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?
OP Persönliche Seite #5928411
Ich habe mir jetzt wie folgt geholfen:
1
   Frame : PROCESS
2
   BEGIN
3
   FCLK <= '0'; wait for 3 ns;
4
   FCLK <= '1'; wait for 12 ns;
5
   FCLK <= '0'; wait for 9 ns;
6
   END PROCESS;
Geht auf jeden Fall, waere nur schoen, wenn man das irgendwie auch 
trennen koennte. Also die Verzoegerung vom eigentlichen Signal.
Gast #5928415
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
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
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

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.