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!!!
Noch en Sache Nicht nur der Wert 193 sonder von 193-198.Der Fehler kommt wieder
> 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...
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 ?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.