Forum: FPGA, VHDL & Co. FPGA Vhdl Lauflicht (variable Geschwindigkeit)


von edneti (Gast)


Lesenswert?

Hallo,
Ich habe ein kleines Problem. Ich soll ein Lauflicht mit variabler 
Geschwindigkeit mit Quartus 2 auf einem Cyclone II erstellen.
Aktuell habe ich ein Programm geschrieben für ein Lauflicht mit fester 
Geschwindigkeit, jedoch kann ich es nicht kompilieren und ich finde die 
Fehlerquelle nicht. Die variable Geschwindigkeit soll dann anschließend 
folgen.

library ieee;
use ieee.std_logic_1164.all;

entity lauflicht is
  generic (n: integer := 50000000); -- Teilerverhaeltnis
  port(
    clk: in std_logic;
    y1: buffer std_logic;
    y2: buffer std_logic;
    q: buffer std_logic;
    clken: out std_logic;
    schalter: in bit;
    l0,l1,l2,l3,l4,l5,l6,l7,l8,l9: in bit;
    zwischen2: buffer bit_vector(9 downto 0);
    zwischen: buffer bit_vector(9 downto 0)
    );
end lauflicht;

architecture behavior of lauflicht is
  signal Z: integer range 0 to n-1;
  signal input1: boolean;
  signal output: bit_vector(9 downto 0);
  begin
  output <= l0 & l1 & l2 & l3 & l4 & l5 & l6 & l7 & l8 & l9;
  zwischen <= l0 & l1 & l2 & l3 & l4 & l5 & l6 & l7 & l8 & l9;
  clock: process (clk,q,y1)
  begin
    if clk='1' and clk'event then  --L/H Flanke
      if Z = n then Z <= 0;
        else Z <= Z +1 ;
      end if;
      if Z = 0 then
              q <= not q;

            end if;
    end if;
    y1 <= q;
  end process clock;
  lauf: process (y2,zwischen,zwischen2)
  begin
      wait until rising_edge(y2);
      if (zwischen="0000000001") then
        zwischen <= "1000000000";
        output <= "1000000000";
      else
        zwischen2 <= zwischen srl 1;
        output <= zwischen2;
      end if;
  end process lauf;
 end behavior;


Die Fehlermeldungen:

Warning (10541): VHDL Signal Declaration warning at lauflicht.vhd(11): 
used implicit default value for signal "clken" because signal was never 
assigned a value or an explicit default value. Use of implicit default 
value may introduce unintended design optimizations.
Warning (10036): Verilog HDL or VHDL warning at lauflicht.vhd(22): 
object "output" assigned a value but never read
Error (10441): VHDL Process Statement error at lauflicht.vhd(39): 
Process Statement cannot contain both a sensitivity list and a Wait 
Statement
Error (12153): Can't elaborate top-level user hierarchy
Error: Quartus II 64-Bit Analysis & Synthesis was unsuccessful. 2 
errors, 2 warnings
  Error: Peak virtual memory: 516 megabytes
  Error: Processing ended: Tue May 10 15:52:57 2016
  Error: Elapsed time: 00:00:01
  Error: Total CPU time (on all processors): 00:00:01
Error (293001): Quartus II Full Compilation was unsuccessful. 4 errors, 
2 warnings


Kann mir da jemand behilflich sein und mir das Problem/die Probleme 
aufzeigen?

Grüße

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

edneti schrieb:
> Warning (10541): VHDL Signal Declaration warning at lauflicht.vhd(11):
> used implicit default value for signal "clken" because signal was never
> assigned a value or an explicit default value. Use of implicit default

 clken wird niemals ein Wert zugewiesen.

Weise dem Signal einfach einen Wert zu.

CLKEN<='1';

von Falk B. (falk)


Lesenswert?

@ edneti (Gast)


>Ich habe ein kleines Problem. Ich soll ein Lauflicht mit variabler
>Geschwindigkeit mit Quartus 2 auf einem Cyclone II erstellen.

Hmm.

>Aktuell habe ich ein Programm geschrieben für ein Lauflicht mit fester
>Geschwindigkeit, jedoch kann ich es nicht kompilieren und ich finde die
>Fehlerquelle nicht.

Dann sollte man die Fehlermeldungen lesen.

>entity lauflicht is
>  generic (n: integer := 50000000); -- Teilerverhaeltnis
>  port(
>    clk: in std_logic;

OK.

>    y1: buffer std_logic;
>    y2: buffer std_logic;
>    q: buffer std_logic;

Buffer sollte man besser nicht nutzen, nur OUT, IN oder INOUT.

>    clken: out std_logic;
>    schalter: in bit;

bit nutzt man auch eher nicht, nutzt std_logic;

>    l0,l1,l2,l3,l4,l5,l6,l7,l8,l9: in bit;
>    zwischen2: buffer bit_vector(9 downto 0);
>    zwischen: buffer bit_vector(9 downto 0)

Das sind doch interne Signale, die gehören NICHT in die PORT-Definition!

>  signal output: bit_vector(9 downto 0);

Nutzte std_logic_vector bzw. signed/unsigned.


>  begin
>  output <= l0 & l1 & l2 & l3 & l4 & l5 & l6 & l7 & l8 & l9;
>  zwischen <= l0 & l1 & l2 & l3 & l4 & l5 & l6 & l7 & l8 & l9;

Zum Debuggen im Simulator muss man keine Signale nach außen führen, man 
kann interne SIgnale im Simulator direkt anzeigen.

>  clock: process (clk,q,y1)
>  begin
>    if clk='1' and clk'event then  --L/H Flanke

schreib doch gleich rising_edge(clk)

>      if Z = n then Z <= 0;
>        else Z <= Z +1 ;
>      end if;
>      if Z = 0 then
>              q <= not q;
>
>            end if;
>    end if;
>    y1 <= q;
>  end process clock;

>  lauf: process (y2,zwischen,zwischen2)
>  begin
>      wait until rising_edge(y2);

Wo wird y2 erzeugt? Trotzdem sit der Ansatz falsch. Nutz ein RICHTIGES 
clock enable Signal.

https://www.mikrocontroller.net/articles/Taktung_FPGA/CPLD#Clock_Enable

>      if (zwischen="0000000001") then
>        zwischen <= "1000000000";
>        output <= "1000000000";
>      else
>        zwischen2 <= zwischen srl 1;
>        output <= zwischen2;
>      end if;
>  end process lauf;
> end behavior;

Das ist eine reichlich umständliche BEschreibung eines Schieberegisters.


>Warning (10541): VHDL Signal Declaration warning at lauflicht.vhd(11):
>used implicit default value for signal "clken" because signal was never
>assigned a value or an explicit default value.

Es gibt keinen, der clken erzeugt.

>Warning (10036): Verilog HDL or VHDL warning at lauflicht.vhd(22):
>object "output" assigned a value but never read

outout wird zugewiesen aber nirgendwo weiter benutzt.

>Error (10441): VHDL Process Statement error at lauflicht.vhd(39):
>Process Statement cannot contain both a sensitivity list and a Wait
>Statement

Man kann nicht sowohl eine Sensitivity List als auch ein wait-Statement 
verwenden.

Das wait -Statement nutzt man eigentlich nur in nicht synthetisierbaren 
Testbenches.

>  Error: Peak virtual memory: 516 megabytes

Mein Gott, für so ein bissel Code braucht ein moderner VHDL-COmpiler 516 
MB?

von edneti (Gast)


Lesenswert?

So ich hab das Programm nun noch einmal überarbeitet.

Mein aktuelles problem ist, dass ich die leds (l1,l2 usw) als out bit 
deklariert wurden, was auch so richtig ist. Ich diese nun aber 
komischerweise nicht dem vektor zuordnen kann um sie dann leichter 
bearbeiten zu können.

Fehlermeldung "Error (10309): VHDL Interface Declaration error in 
Lauflicht.vhd(41): interface object "l0" of mode out cannot be read. 
Change object mode to buffer."

library ieee;
use ieee.std_logic_1164.all;

entity Lauflicht is
  generic (n: integer := 50000000); -- Teilerverhaeltnis
  port(
    clk: in std_logic;
    y1: out std_logic;
    q: buffer std_logic;
    l0,l1,l2,l3,l4,l5,l6: out bit
    );
end Lauflicht;

architecture behavior of Lauflicht is
  signal Z: integer range 0 to n-1;
  signal leds: bit_vector(6 downto 0);
  signal zwischen1: bit_vector(6 downto 0);
  signal zwischen2: bit_vector(6 downto 0);
  begin

--Clock
  clock: process (clk)
  begin
    if clk='1' and clk'event then  --L/H Flanke
      if Z = n then Z <= 0;
        else Z <= Z +1 ;
      end if;
      if Z = 0 then
              q <= not q;

            end if;

    end if;
    y1 <= q;
  end process clock;


-- Prozess des Lauflichts
  lauflicht: process (q,l0,l1,l2,l3,l4,l5,l6)
    begin
      leds <= l0 & l1 & l2 & l3 & l4 & l5 & l6;      -- led Ausgänge l1 
l2 usw werden zu vektor "leds" zusammengefasst
      zwischen1 <= leds;                    -- zwischen1 = 
zwischenspeicher1 soll die Werte von leds annehmen
      wait until rising_edge(q);
      if(zwischen1="0000001") then
          zwischen1 <= "1000000";
          leds <= zwischen1;
      else
          zwischen2 <= zwischen1 srl 1;
          leds <= zwischen2;
      end if;
  end process lauflicht;

end behavior;

von -gb- (Gast)


Lesenswert?

Z ist einer der möglichen Zustände von std_logic. Ein Signal Z zu nennen 
ist daher nicht ratsam. Auch Namen wie 10 sind sehr schlechter Stil.

Und: Wenn Du etwas als out deklariert hast, kannst Du es nicht lesen.
Z. B. ist 10 bei dir ein Ausgang. Hier liest Du aber davon:

leds <= l0 ...

von edneti (Gast)


Lesenswert?

Ich weiß nicht ob du es eventuell falsch abgelesen hast, aber die leds 
sind jeweils mit einem buchstaben "L" und einer Zahl beschriftet. Es 
soll also nicht 10,11,12 oder 16 heißen.

von edneti (Gast)


Lesenswert?

Habe nun die verschiedenen Geschwindigkeiten mit eingefügt. Mit nur 
einer Geschwindigkein konnte ich es kompilieren nun mit 3 nicht mehr.

Code:

library ieee;
use ieee.std_logic_1164.all;

entity Lauflicht is
  generic (n: integer := 50000000); -- => 1 Hz
  port(
    clk: in std_logic;
    y1: inout std_logic;
    q1: buffer std_logic;
    q2: buffer std_logic;
    q3: buffer std_logic;
    s1: in bit;
    s2: in bit;
    s3: in bit;
    l0,l1,l2,l3,l4,l5,l6: inout bit
    );
end Lauflicht;

architecture behavior of Lauflicht is
  signal Z: integer range 0 to n-1;
  signal leds: bit_vector(6 downto 0);
  signal zwischen1: bit_vector(6 downto 0);
  signal zwischen2: bit_vector(6 downto 0);

  begin

  leds <= l0 & l1 & l2 & l3 & l4 & l5 & l6;
--Clock1
  clock1: process (clk,s1)
  begin
    if(s1='1') then
      if (rising_edge(clk)) then  --L/H Flanke

        if Z = n then Z <= 0;
          else Z <= Z +1 ;
        end if;


        if Z = 0 then
          q1 <= not q1;
        end if;

      end if;
      y1 <= q1;
    end if;
  end process clock1;

--Clock2
  clock2: process (clk,s2)
  begin
    if(s2='1') then
      if (rising_edge(clk)) then  --L/H Flanke

        if Z = 2*n then Z <= 0;
          else Z <= Z +1 ;
        end if;


        if Z = 0 then
          q2 <= not q2;
        end if;

      end if;
      y1 <= q2;
    end if;
  end process clock2;

--Clock3
  clock3: process (clk,s2)
  begin
    if(s3='1') then
      if (rising_edge(clk)) then  --L/H Flanke

        if Z = 4*n then Z <= 0;
          else Z <= Z +1 ;
        end if;


        if Z = 0 then
          q3 <= not q3;
        end if;

      end if;
      y1 <= q3;
    end if;
  end process clock3;



-- Prozess des Lauflichts
  lauflicht: process (y1)
    begin
      if (y1='1') then
        if(zwischen1="0000001") then
            zwischen1 <= "1000000";
            leds <= zwischen1;
        else
            zwischen2 <= zwischen1 srl 1;
            leds <= zwischen2;
        end if;
      else
      end if;
  end process lauflicht;

end behavior;

Fehlermeldungen:

Error (10028): Can't resolve multiple constant drivers for net "y1" at 
Lauflicht.vhd(49)
Error (10029): Constant driver at Lauflicht.vhd(29)
Error (10028): Can't resolve multiple constant drivers for net "Z[25]" 
at Lauflicht.vhd(52)
Error (10029): Constant driver at Lauflicht.vhd(32)
Error (10028): Can't resolve multiple constant drivers for net "Z[24]" 
at Lauflicht.vhd(52)
Error (10028): Can't resolve multiple constant drivers for net "Z[23]" 
at Lauflicht.vhd(52)
Error (10028): Can't resolve multiple constant drivers for net "Z[22]" 
at Lauflicht.vhd(52)
Error (10028): Can't resolve multiple constant drivers for net "Z[21]" 
at Lauflicht.vhd(52)
Error (10028): Can't resolve multiple constant drivers for net "Z[20]" 
at Lauflicht.vhd(52)
Error (10028): Can't resolve multiple constant drivers for net "Z[19]" 
at Lauflicht.vhd(52)
Error (10028): Can't resolve multiple constant drivers for net "Z[18]" 
at Lauflicht.vhd(52)
Error (10028): Can't resolve multiple constant drivers for net "Z[17]" 
at Lauflicht.vhd(52)
Error (10028): Can't resolve multiple constant drivers for net "Z[16]" 
at Lauflicht.vhd(52)
Error (10028): Can't resolve multiple constant drivers for net "Z[15]" 
at Lauflicht.vhd(52)
Error (10028): Can't resolve multiple constant drivers for net "Z[14]" 
at Lauflicht.vhd(52)
Error (10028): Can't resolve multiple constant drivers for net "Z[13]" 
at Lauflicht.vhd(52)
Error (10028): Can't resolve multiple constant drivers for net "Z[12]" 
at Lauflicht.vhd(52)
Error (10028): Can't resolve multiple constant drivers for net "Z[11]" 
at Lauflicht.vhd(52)
Error (10028): Can't resolve multiple constant drivers for net "Z[10]" 
at Lauflicht.vhd(52)
Error (12153): Can't elaborate top-level user hierarchy
Error: Quartus II 32-bit Analysis & Synthesis was unsuccessful. 20 
errors, 9 warnings
  Error: Peak virtual memory: 389 megabytes
  Error: Processing ended: Tue May 10 18:54:18 2016
  Error: Elapsed time: 00:00:01
  Error: Total CPU time (on all processors): 00:00:01
Error (293001): Quartus II Full Compilation was unsuccessful. 22 errors, 
9 warnings

Was sollen diese Fehlermeldungen mir sagen?

von Falk B. (falk)


Lesenswert?

@edneti (Gast)

>Mein aktuelles problem ist, dass ich die leds (l1,l2 usw) als out bit
>deklariert wurden, was auch so richtig ist.

Nicht unbedingt.

> Ich diese nun aber
>komischerweise nicht dem vektor zuordnen kann um sie dann leichter
>bearbeiten zu können.

Doch.

>Fehlermeldung "Error (10309): VHDL Interface Declaration error in
>Lauflicht.vhd(41): interface object "l0" of mode out cannot be read.
>Change object mode to buffer."

Falscher Tip. Nimm ein internes Signal (std_logic_vector) und arbeite 
damit. Das kann man dann auch ganz easy den Ausgangssignalen zuordnen.
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.NUMERIC_STD.ALL;
4
5
entity lauflicht is
6
    generic (n: integer := 50000000
7
    ); 
8
    Port ( clk : in  STD_LOGIC;
9
           y1 : out  STD_LOGIC;
10
           q : out  STD_LOGIC;
11
           led : out  unsigned (6 downto 0));
12
end lauflicht;
13
14
architecture Behavioral of lauflicht is
15
16
signal Z: integer range 0 to n-1;
17
signal shift: unsigned(6 downto 0);
18
signal q_int: std_logic;
19
signal clken: std_logic;
20
21
begin
22
23
-- signal assignments
24
25
  q <= q_int;
26
  led <= shift;
27
  
28
-- Clock prescaler
29
30
  clock: process (clk)
31
  begin
32
    if rising_edge(clk) then
33
      Z <= Z +1;
34
      clken <= '0';
35
      if Z = (n-1) then
36
        Z <= 0;
37
        clken <= '1';
38
        q_int <= not q_int;
39
      end if;
40
    end if;
41
  end process clock;
42
43
-- Prozess des Lauflichts
44
45
  lauflicht: process (clk)
46
  begin
47
    if rising_edge(clk) then
48
      if clken = '1' then    
49
        if(shift="0000001") then
50
          shift <= "1000000";
51
        else
52
          shift <= shift srl 1;
53
        end if;
54
      end if;
55
    end if;
56
  end process lauflicht;
57
58
end Behavioral;

von Falk B. (falk)


Lesenswert?

@ edneti (Gast)

>Habe nun die verschiedenen Geschwindigkeiten mit eingefügt. Mit nur
>einer Geschwindigkein konnte ich es kompilieren nun mit 3 nicht mehr.

Dann solltest du endlich mal anfangen, die Grundlagen von VHDL zu lernen 
und nicht nur planlos rumprobieren! Mittels deiner Eingangssignale S1-S3 
musst du EIN clock enable Signal auswählen, das dein Lauflicht steuert. 
Dazu gibt es viele Möglichkeiten.

1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.NUMERIC_STD.ALL;
4
5
entity lauflicht is
6
    generic (n: integer := 50000000
7
    ); 
8
    Port ( clk     : in  STD_LOGIC;
9
           y1      : out STD_LOGIC;
10
           q       : out STD_LOGIC;
11
           control : in  unsigned (1 downto 0);
12
           led     : out unsigned (6 downto 0));
13
end lauflicht;
14
15
architecture Behavioral of lauflicht is
16
17
signal Z: integer range 0 to n-1;
18
signal div: integer range 0 to 100;
19
signal cnt: integer range 0 to 100;
20
signal shift: unsigned(6 downto 0);
21
signal q_int: std_logic;
22
signal clken: std_logic;
23
signal clken_var: std_logic;
24
25
begin
26
27
-- signal assignments
28
29
  q <= q_int;
30
  led <= shift;
31
  
32
-- Clock prescaler
33
34
  clock: process (clk)
35
  begin
36
    if rising_edge(clk) then
37
      Z <= Z +1;
38
      clken <= '0';
39
      if Z = (n-1) then
40
        Z <= 0;
41
        clken <= '1';
42
        q_int <= not q_int;
43
      end if;
44
    end if;
45
  end process clock;
46
47
-- prescaler selector
48
49
  process (control)
50
  begin
51
    case control is
52
      when "00" => div <= 5;
53
      when "01" => div <= 10;
54
      when "10" => div <= 50;
55
      when "11" => div <= 100;
56
      when others => null;
57
    end case;
58
  end process;
59
  
60
-- variable prescaler
61
62
  process (clk)
63
  begin
64
    if rising_edge(clk) then
65
      clken_var <= '0';
66
      if clken='1' then
67
        cnt <= cnt +1;
68
        if cnt = div then
69
          cnt <= 0;
70
          clken_var <= '1';
71
        end if;  
72
      end if;
73
    end if;
74
  end process;
75
76
-- Lauflicht
77
78
  process (clk)
79
  begin
80
    if rising_edge(clk) then
81
      if clken_var = '1' then    
82
        if(shift="0000001") then
83
          shift <= "1000000";
84
        else
85
          shift <= shift srl 1;
86
        end if;
87
      end if;
88
    end if;
89
  end process;
90
91
end Behavioral;

von edneti (Gast)


Angehängte Dateien:

Lesenswert?

Ich danke euch für eure Bemühungen! Habt mir sehr geholfen.
Vielen vielen dank!

Hier ist nun das Endresultat mit einstellbarer Geschwindigkeit. 
Kompilieren war erfolgreich. Gibt es noch irgendwelche groben Mängel die 
der kompiler nicht erfasst hat?

von Duke Scarring (Gast)


Lesenswert?

edneti schrieb:
> groben Mängel
1. Die Testbench fehlt und
2. Deine VHDL-Datei hat die Endung txt :-(

Duke

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

edneti schrieb:
> if clk='1' and clk'event then  --L/H Flanke

edneti schrieb:
>       if (rising_edge(clk)) then  --L/H Flanke

Dein Kommentar passt nicht zu der durch ihn beschriebenen Anweisung. Du 
solltest Dich dringend mit den Grundlagen von VHDL vertraut machen, d.h. 
insbesondere den IEEE 1164-Datentypen und den Wertebereichen.

In Deiner ersten Anweisung fragst Du nämlich nicht eine L/H-Flanke ab, 
sondern einen beliebigen Wechsel zu 1. Und in der zweiten Anweisung wird 
ein beliebiger Wechsel von einem niedrigen zu einem hohen Pegel 
abgefragt, z.B. auch "0->1", "0->H", "L->1".

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

edneti schrieb:
> Gibt es noch irgendwelche groben Mängel die der kompiler nicht erfasst
> hat?
Es ist ein Synthesizer, der deine VHDL Beschreibung zuerst in eine 
Netzliste übersetzt. Danach kommt der Mapper, der bausteinspezifische 
Komponenten einsetzt. Danach kommen Place&Route, die das Ganze im FPGA 
verdrahten. Danach wird der Bitstrom fürs FPGA erzeugt.

Oder andersrum: sieh dir einfach mal deine Toolchain an...

Und du solltest unbedingt die Sache mit dem Simulator anpacken. Das ist 
der Debugger der Hardware.

Zum Thema "Lauflicht" siehe dort:
http://www.lothar-miller.de/s9y/archives/61-Lauflicht.html
Und zum Thema "Simulation" das da:
http://www.lothar-miller.de/s9y/archives/80-Hello-World!.html

: Bearbeitet durch Moderator
von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Andreas S. schrieb:
> In Deiner ersten Anweisung fragst Du nämlich nicht eine L/H-Flanke ab,
> sondern einen beliebigen Wechsel zu 1.

Mir war zwischenzeitlich aufgefallen, dass ich an der Stelle sogar 
ausführlich hätte sein können: Ein beliebiger Wechsel zu 1 kann auch 
bedeuten, dass er von H nach 1 erfolgt. Man könnte also in der 
Simulation(!) einen Taktgenerator bauen, der nur die Zustände 1 und H 
kennt, und damit munter sein System takten, wenn es das Konstrukt "if 
clk='1' and clk'event then" verwendet. Bei der Umsetzung in Hardware, 
d.h. FPGA/CPLD, wird da natürlich nichts getaktet, weil 1 und H 
natürlich einen eletrischen High-Pegel bedeuten.

von Duke Scarring (Gast)


Lesenswert?

Andreas S. schrieb:
> Man könnte also in der
> Simulation(!) einen Taktgenerator bauen, der nur die Zustände 1 und H
> kennt, und damit munter sein System takten, wenn es das Konstrukt "if
> clk='1' and clk'event then" verwendet.

Theoretisch richtig, praktisch aber vollkommen irrelevant.
Ich verwende rising_edge, weil damit der Code gut lesbar ist.

Duke

von otto (Gast)


Lesenswert?

Ich rate von eine Testbench ab.
Es ist eine 2 Fehlerquelle die ein in die Irre führen kann.

Mach dich mit dem konstruktiven Aufbau eine VHDL-Beschreibung vertraut.
Die Handvoll Beschreibungsbefehle hat man schnell im Griff. Den Rest der 
Zeit verwendest du , um fein Säuberlich deine Aufbaubeschreibung zu 
durchforsten.

Alle Konstrukte in VHDL werden in einem Takt gleichzeitig ausgeführt am 
Ende der Beschreibung.
Das ist sehr wichtig.

Bau dir kleine fertige Schaltungen zusammen  UND/ODER... und setze die 
sozusagen in deine Schaltung ein...es ist eine wunderbare leichte 
Spielerei in kurzer Zeit.

Gruss

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

otto schrieb:
> Ich rate von eine Testbench ab.
> Es ist eine 2 Fehlerquelle die ein in die Irre führen kann.
Eine "Testbench" die lediglich einen Takt für die Darstellung einer 
Waveform erzeugt, kann nicht viele Fehler beinhalten...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.