Forum: FPGA, VHDL & Co. Modelsim Probleme


von Dirk (Gast)


Lesenswert?

Hi,

leider ist es mir fast peinlich soviele Fragen zustellen, aber ich will
lernen und finde zu diesem Problem keine Lösung. Ich hoffe auf eure
Hilfbereitschaft.

Wie im anderen Thread zuerfahren bin ich dabei mir ein Memory
Controller zubauen. Ich kann aber in Modelsim keine Daten erkennen die
z.B. zum adressout: out std_logic_vector(18 downto 0) gehen. Besser
ausgedrückt ich sehe im Ablauf keine Binaeren Daten. Ich sehe nur
direkte Flankenwechsel. Ist das normal?

Ich habe mir schon extra ein Counter programmiert wo der
std_logic_vector(2 downto 0) inkremiert wird. Leider sehe ich da auch
keine Aenderungen.

Im Testbench koennte ich die Ausgaenge selber setzen, aber sollte das
nicht schon durch den eigentlich VHDL Code gesehen? Ich würde es
verstehen wenn der std_logic_vector als Eingang programmiert ist das
ich die Werte von Hand aendern muss, aber nicht wenn es ein Ausgang
ist.

Ich hoffe jemand kann mir ein Tipp geben oder mich aufklaeren ob es
ueberhaupt moeglich ist.

Gruß,
Dirk

von Dirk (Gast)


Lesenswert?

PS.: Ich stelle mir das so wie beim AVR Studio vor das ich mir die Daten
zu einem Zeitpunkt anschaun kann. Std_logic's werden richtig gesetzt,
aber Vectoren binhalten keine Information.

von FPGA-User (Gast)


Lesenswert?

was siehst Du, wenn Du das Signal im Wave-Fenster
hast? Nur den Signalnamen oder einen Signalverlauf, der
sich nicht ändert ?
Mach doch mal einen Screenshot oder gib genauere Infos.

von Dirk (Gast)


Lesenswert?

Hi,

ein Signalverlauf kann man erkennen (Flankenwechsel). Am Anfang steht
auch z.B. "UUUUUUUUUUUUUU" gehe ich nun mit dem Cursor in den Bereich
wo Daten geschrieben wurden (z.B. write wird gesetzt und Daten werden an
das Logic Vector uebergeben) sehe ich die Flankenwechsel, aber keine Bit
o. Hex Werte die im Logic Vector stehen.

Ein Bild kann ich heute abend online stellen.

Gruß,
Dirk

von Dirk (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

endlich Feierabend anbei das komplette Project (ISE7.1).

Ich hoffe mir kann dann jemand weiterhelfen wieso ich keine Werte
sehe.


Gruß,

Dirk

von Kest (Gast)


Lesenswert?

Ich dachte, Du wolltest ein Bild anhängen. Oder sollen wir hier alles
herunterladen? :-o

Troubleshooting:
- hineinzoomen
- hineinzoomen
- hineinzoomen

Kest

von Dirk (Gast)


Angehängte Dateien:

Lesenswert?

Hi an der Cursorposi sollte adressout 3 sein .

von Kest (Gast)


Lesenswert?

Also ich sehe was: UUUUUUUUUUUUUUUU

Das liegt nicht an ModelSIM sondern an Deinem Code, die DAten werden
eben nicht initialisiert, danach (so ab 900 ns) hast Du da gar einen
Kurzschluß.

Kest

von Dirk (Gast)


Lesenswert?

Hi,

ok danke. Der Kurzschluss kam sicherlich vom zuvielen rumprobieren
gestern nacht.

Teste es und melde mich ;)

Gruß,
Dirk

von Dirk (Gast)


Angehängte Dateien:

Lesenswert?

Danke es funktioniert. Langsam wird es immer besser schoen waere es sich
auch endlich von der ISE 7.1 zuloesen und per cmdline die Synthese
zumachen und gleich per button an Modelsim zuuebergeben.

Gruß,

Dirk

von Xenu (Gast)


Lesenswert?

Dein Design ist übrigens asynchron (=> nicht gut).

Der Synthesizer generiert mehrere Latches, und vier durch
kombinatorische Logik erzeugte Takte.

Wirf mal 'nen Blick in den Synthesizerreport.

von Dirk (Gast)


Lesenswert?

Hi,

ja das war mir gestern abend erst wirklich bewusst geworden. :( jetzt
fuege alles in andere Prozesse ein.

Gruß,
Dirk

von Dirk (Gast)


Lesenswert?

PS.: eigentlich duerfte es nicht so schlimm sein weil des SRAM async.
ist.

Gruß,
Dirk

von Dirk (Gast)


Lesenswert?

Hi,

jetzt bin ich verunsichert. Mein SRAM Controller soll fuer ein
asynchrones SRAM sein, deshalb habe ich die FSM asynchron
programmiert.

Kriege ich nun Probleme wenn der Rest (z.B. Main FSM o. andere
Bausteine) synchron arbeitet ?


Gruß,
Dirk

von Xenu (Gast)


Lesenswert?

>Kriege ich nun Probleme wenn der Rest (z.B. Main FSM o. andere
>Bausteine) synchron arbeitet ?

Asynchrone FPGA-Designs sind so gut wie immer eine schlechte Idee.
Man muss schon sehr genau wissen, was man tut, wenn man sich auf sowas
einlässt (Anfänger wissen das in der Regel nicht).

Zum Thema Latches:
Latches sind pegelgesteuerte Flip-Flops. Das Problem mit
pegelgesteuerten Flip-Flops ist, daß sie, äh, pegelgesteuert sind.

Wenn jetzt der Enable-Eingang des Latches durch ein Signal angesteuert
wird, welches selber wieder durch kombinatorische Logik erzeugt wird
(und so ist es meistens bei asynchronem VHDL-Murks-Code) bekommt man
folgendes Problem: Kombinatorische Logik mit mehr als einem Eingang hat
die unangenehme Eigenschaft, durch Laufzeitverzögerungen am Ausgang
Störimpulse ("Glitches") zu erzeugen. D.h. das Latch speichert zu
einem Zeitpunkt, wenn es nicht soll. Und das ist nicht fein.
Die Gatterlaufzeiten und damit die Länge der Glitches sind ausserdem
auch noch temperaturabhängig, was die ganze Sache nicht unbedingt
berechenbarer macht.

Deine Logik, da Du asynchronen Speicher ansprechen willst, müsstest Du

Dein Design auch asynchron machen, ist falsch.

Über ein Minenfeld zu laufen wird nicht dadurch sicherer, daß ich mir
einen Gurt mit Handgranaten umschnalle.

von Dirk (Gast)


Lesenswert?

Hallo,

danke Xenu.... dann werde ich den Code in Papierkorb packen und wieder
bei 0 % anfangen

Dirk

von Dirk (Gast)


Lesenswert?

Hallo,

ich bin immer noch dabei alles synchron zu programmieren (jetzt ist das
nicht mehr so easy).

Eine kleine Frage haette ich aber diesbezueglich. Bei rising edge von
Clock fuehre ich ein Lese/Schreibzugriff aus. Die Daten werdem an die
Adresse 0 geschrieben oder von Adresse 0 gelesen. Ich wuerde gerne im
gleichen Taktzyklus die Adresse erhoehen. Kann ich das bei fallender
Flanke von Clock machen? oder kann ich den Adresscounter erst bei
naechster steigender Flanke von Clock erhoehen?

Bei der naechsten steigenden Flanke von Clock soll er damit gleich die
Adresse 1 lesen/schreiben.

Gruß,
Dirk

von Mentorwürger (Gast)


Lesenswert?

Ich denke, Du hast inzwischen rausbekommen, daß man den Adresszaehler in 
dem clock-Moment erhöhen kann, in dem mam ihn benutzt.

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.