Forum: FPGA, VHDL & Co. Problem mit den Ausgänge


von Michael M. (Firma: Uni Hannover) (babybk)


Angehängte Dateien:

Lesenswert?

Hi Leute,

ich hab ein Problem mit den Ausgänge des ob Block.
Und zwaz:
wenn Dataseingang mit dem Wert "11000001" --193 dann Ausgang f_1en muss 
1 sein.Dies Ausgang hab ich gecheckt durch Oscillopkop,und der Wert ist 
leider immer 0.

Wer kann mir erklären?
Oder es passiert so schnell,deshalb kann man nicht beobachten!!!

von Michael M. (Firma: Uni Hannover) (babybk)


Lesenswert?

Noch en Sache

Nicht nur der Wert 193 sonder von 193-198.Der Fehler kommt wieder

von Klaus F. (kfalser)


Lesenswert?

> Wer kann mir erklären?
> Oder es passiert so schnell,deshalb kann man nicht beobachten!!!

Genau für diesen Zweck hat man die VHDL Simulatoren erfunden. Da kann 
man alles in Ruhe anschauen, und überlegen warum ein Signal nicht so 
kommt wie man denkt.

Simulieren Deinen Code, am besten Du ladest Dir ModelSim herunter.
Der Xilinx ISIM Simulator gefällt mir nicht so...

von Michael M. (Firma: Uni Hannover) (babybk)


Angehängte Dateien:

Lesenswert?

Also,
ich erzeuge noch ein Block in mein Programm mit dem Name RSLATCHX.
f_1en und f2_en sind die Eingänge von S und R
  S <= f_1en;
  R <= f_2en;
Aber es funtioniert nicht in Ordnung:
Wenn ich den Wert 193(d.h f_1en = 1 )schicke,dann Q = 1
Dann schicke ich weiter den Wert 194(d.h f_2en = 1 ),dann Q = 0
Schließlich schicke ich wieder den Wert 193 (d.h f_1en = 1),dann Q ist 
nicht 1 sondern 0.

ich weiße nicht,ob der Fehler aus RSLATCHX Block oder aus dem Eingang 
RS232_data.

Jemand kann mir helfen?

@Klaus Flaser:beim Modelsim hab ich das Problem,um Code zur 
Simulation(Testbench) zu erzeugen.Hast du den Tipp dafür ?

von Klaus F. (kfalser)


Lesenswert?

Du darfst im RSLATCHX keine Befehle wie "after 10 ns" verwenden.
Diese Komponente gehört doch in das FPGA, dort ergeben sich die 
Verzögerungen von selbst durch die Gatterlaufzeiten.
Abgesehen davon enthält ein FPGA keine RS-Flipflops, eine Komponente wie 
diese kann nur Probleme erzeugen.
Du solltest am Anfang alle deine Module streng takt-synchron aufbauen, 
also alle in der Form :

process(clk,reset)
begin
   if (reset = '1') then
       ....
   elsif rising_edge(clk) then
     ....
   endif
end process

Zur Testbench :
Im Gegensatz zu RSLATCHX darfst Du in einer Testbench die Verzögerungen 
verwenden.
Eine Testbench hat keine Ein- und Ausgänge und generiert alle Signale, 
die in deine zu testenden Komponente hineingehen, also als wichtigstes 
Signal zuerst einmal den Takt.
Dann schreibst Du einen Prozess der 1x durchläuft, und der alle 
restlichen Signale erzeugt, z.B.

process
begin
     reset <= '1';
     wait for 10 ns;
     reset <= '0';

     wait for 100 ns;
     rs232_data <= 100;
     wait for 100 ns;
     rs232_data <= 200;
     ....
     wait;
end process;

Du solltest aber vielleicht ein bischen etwas über VHDL lesen.

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.