Modelsim Probleme

Gast #252125
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
Gast #252128
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
Gast #252138
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
Gast #252139
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.
Gast #252141
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren