Das Schreiben eines Werts in den RAM ist ein kleiner Teil meines Projekts, alles funktioniert, aber ich kann eine Sache im Zusammenhang mit RAM / digitalem Timing nicht erklären.
Ich werde eine Beschreibung in Bezug auf das Bild schreiben, das ich hinzugefügt habe.
Soweit ich die Idee von RAM hatte, schreibt es direkt auf die steigende Flanke der Uhr. Daten, die auf data_in an der steigenden Taktflanke gesehen werden, werden also in den RAM geschrieben. Selbst wenn sich data_in im selben Takt ändert wie write_high wird, werden die alten Daten geschrieben. Warum schreibt RAM dann in meinem Fall -36 und nicht -10.
Jetzt habe ich versucht, den data_in-Wert mit einem Uhrwert (0/1) zu ändern, und jetzt tut es so, wie es tun sollte. Was ist los? ram_in ist in diesem Fall data_in des RAM.
macc_out == ram_in == data_in
Da Ihr Taktsignal nicht angezeigt wird, gehe ich davon aus, dass es mit der Änderung der anderen Signale zusammenhängt.
Basierend darauf scheint der erste korrekt zu funktionieren, da das Schreiben nur auf der steigenden Flanke des Takts und dem logischen Hoch des *write_en*-Signals funktioniert. Aus diesem Grund sehen Sie, dass die Daten nur in einem Zyklus geschrieben werden, nachdem das Freigabesignal hoch geht.
Bei der zweiten Simulation scheint das Taktsignal direkt mit dem *ram_in*-Signal verbunden zu sein. Dies würde es erklären. Die Daten werden an der ansteigenden Flanke des Takts zwischengespeichert. In diesem Fall sind die einzigen Daten, die jemals zwischengespeichert werden, 0. Bei der steigenden Flanke ist *ram_io* immer 0.
Das Photon
Artur Vancans