Forum: FPGA, VHDL & Co. Testbench für mux4x1


von Ninovic P. (ninovic_p)


Lesenswert?

Hallo zusammen,
versuche grade mich in das FPGA/VHDL Thema einzufinden.
Dazu arbeite ich mich durch das Buch "VHDL-Synthese" von Reichardt und 
Schwartz und benutze zur Simulation das ISim aus dem Xilinx ISE Webpack 
V14.4.

Leider stoße ich schon in dem ersten Beispiel, einen 4 zu 1 Multiplexer 
auf einen HDL-Compiler Fehler, den ich leider nicht lösen kann.
Ich erhalten folgende Meldung:

- ERROR:HDLCompiler:104 - "C:/Xilinx/multiplexer4x1/mux4x1.vhd" Line 16: 
Cannot find <mux4x1> in library <isim_temp>. Please ensure that the 
library was compiled, and that a library and a use clause are present in 
the VHDL file.

Vielleicht könnte mir einer von euch weiterhelfen?
Vielen Dank schon mal im voraus!

Gruß,  Nino
1
-- TestBench fuer 4x1 Multiplexer
2
3
  entity TEST is
4
  end TEST;
5
6
  architecture VERHALTEN of TEST is
7
  signal S1 :  bit_vector(1 downto 0);
8
  signal E1 :  bit_vector(3 downto 0);
9
  signal Y1 :  bit;
10
  
11
  component MUX4X1
12
          port(   S1 : in bit_vector(1 downto 0);
13
                  E1 : in bit_vector(3 downto 0);       
14
                  Y1 : out bit);
15
  end component;
16
  for all: MUX4X1 use entity work.MUX4X1(VERHALTEN); -- hier ist der Fehler
17
      
18
  begin
19
          E1 <= "1010", "0101" after 400 ns;
20
       S1 <= "00","01" after 100 ns ,"10" after 200 ns, "11" after 300 ns,
21
            "00" after 400 ns, "01" after 500 ns, "10" after 600 ns,
22
            "11" after 700 ns;
23
  C1: MUX4X1 port map (S1, E1, Y1);
24
  
25
  end VERHALTEN;

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


Lesenswert?

Wo ist der Code für den eigentlichen Multiplexer?
BTW: VHDL Beschreibungen beginnen mit dem Keyword use
Den Beitrag "Testbench für MUX4x1" hast schon gesehen?

von Ninovic P. (ninovic_p)


Lesenswert?

Danke für die schnelle Antwort.

Ich glaub jetzt ist es etwas klarer geworden durch deinen verlinkten 
Thread. Es fehlte also der Code für den eigentlichen Multiplexer, 
richtig?

Für mein Verständnis, sehe ich das richtig, dass in dem Code für den 
Multiplexer das eigentliche Model/ das Verhalten des Multiplexers 
abgespeichert ist und in der Testbench das Verhalten mit zugeschalteten 
Eingangssignalen simuliert wird?

Auf alle Fälle funktioniert es jetzt wie erwartet. Vielen Dank!

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


Lesenswert?

Ninovic P. schrieb:
> Für mein Verständnis, sehe ich das richtig, dass in dem Code für den
> Multiplexer das eigentliche Model/ das Verhalten des Multiplexers
> abgespeichert ist und in der Testbench das Verhalten mit zugeschalteten
> Eingangssignalen simuliert wird?
Ja.
Eine Testbench ist eine "ganz normale" VHDL Beschreibung, nur hat die 
keine Ports nach aussen. In der Testbench werden dann 
Stimuli/Anregungssignale fü das zu testende Objekt erzeugt.
Du kannst auch "direkt" den Multiplexer simulieren. Nur wird dann nichts 
passieren, weil ja niemand ein Signal anregt oder ändert...

von (unknown) (Gast)


Lesenswert?

hello zusammen,
ich bin neu und arbeite gerade mit VHDL,
mein Problem ist diese wie programmiert man ein Testbench fuer ein 
D_FLIPFLOP. die meine Code.
1
library ieee;                 -- die verwendete Bibliothek
2
use ieee.std_logic_1164.all;  -- die Definition der Grundtypen und Werte
3
4
entity  FlipFlopP is
5
    port (
6
     d   : in std_logic;  -- Dateneingang
7
           clk : in std_logic;  -- Taktsignal    
8
     q   : out std_logic ; -- Datenausgabe
9
          );
10
end FlipFlopP;
11
12
architecture archLane of FlipFlopP is
13
    
14
begin
15
    
16
    ff_behavior : process(d, clk) -- Prozess hängt von CLK ab
17
    begin
18
19
     if(clk'event and clk = '1') then -- CLK ist 1 und der Wert hat sich geändert
20
   q <= d;     -- load register abhängig vom Signalverlauf
21
      end if;
22
23
    end process ff_behavior;
24
25
end architecture archLane;

Vielleicht könnte mir einer von euch weiterhelfen?
Vielen Dank schon mal im voraus!

Gruß, Franck

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


Lesenswert?

Franck W. schrieb:
> mein Problem ist
Bitte hänge eine NEUE Frage nicht an einen ALTEN Thread an!
Und verwende die [ vhdl ] Tokens, wie es ein paar Zeilen über der 
Eingabebox beschrieben ist:
1
Wichtige Regeln - erst lesen, dann posten!
2
    :
3
Formatierung (mehr Informationen...)
4
    :
5
    [vhdl]VHDL-Code[/vhdl]

>  wie programmiert man ein Testbench fuer ein D_FLIPFLOP.
Du bindest dein Modul als Komponente in eine VHDL Entity ohne Ports 
ein. Denn eine Testbench erkennt man daran, dass sie nichts nach 
aussen gibt oder von aussen empfängt. Eine Testbench hat also keinen 
Port und damit sieht die Deklaration etwa so aus:
1
entity das_ist_eine_testbench is
2
  -- kein Port, keine Generics
3
end das_ist_eine_testbench;

Franck W. schrieb:
> ff_behavior : process(d, clk) -- Prozess hängt von CLK ab
Warum steht dann d auch in der Liste?

Also, wie gesagt: neuen Thread mit passendem Titel anfangen. Ich werde 
diesen hier sperren.

: Bearbeitet durch Moderator
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.