Ich versuche, Verilog zu lernen, und war neugierig, warum der Block-RAM meines FPGA die von mir angeforderten Daten sofort zu liefern scheint. Ich hatte erwartet, dass es eine gewisse Anzahl von Uhren geben würde, auf die ich warten müsste, bevor meine Ergebnisse verfügbar wären.
Auf der CPU eines herkömmlichen Computers sind die einzigen Daten, die sofort verfügbar sind, das, was in einem Register gespeichert ist, richtig? Daten, die in Caches oder im RAM gespeichert sind, müssten in ein Register geholt werden, bevor sie richtig verarbeitet werden können? Sind diese Block-RAM-Objekte nur über Register auf dem Chip implementiert?
Danke
Haben Sie eine primitive, generierte IP instanziiert oder mit einem Array abgeleitet?
IP hat normalerweise die Wahl zwischen registrierter Ausgabe oder nicht.
Wenn es sich um ein Primitiv oder ein abgeleitetes handelt, entscheiden Sie, ob Sie es in Ihrer RTL registrieren (getakteter Prozess) oder nicht. Das Grundelement ist typischerweise eine asynchrone Ausgabe, abgesehen von allen herstellerspezifischen Attributen, die ihm möglicherweise zugeordnet sind.
Als @EugeneSh. sagte: Das Datenblatt sagt Ihnen alles, was Sie wissen müssen.
Daten, die in Caches oder im RAM gespeichert sind, müssten in ein Register geholt werden, bevor sie richtig verarbeitet werden können?
Sie müssen kein Signal registrieren, um damit zu arbeiten ... Hängt von der Situation ab. Zum Lesen des Gedächtnisses würde ich das wahrscheinlich tun.
Sind diese Block-RAM-Objekte nur über Register auf dem Chip implementiert?
Sie können den Speicher während der Synthese in Register "pushen", aber wenn Sie RAM zur Verfügung haben, würden Sie normalerweise den RAM verwenden (und das Tool würde dies standardmäßig auch implementieren ... insbesondere wenn Sie ein Primitiv verwenden). Das Datenblatt sagt Ihnen, wie viel RAM Sie haben und wie es angeordnet ist. Wie es umgesetzt wurde, erfahren Sie im Synthesebericht.
Um das Leben einfacher zu machen, würde ich einfach auf RAM mit einem Array schließen.
Eugen Sch.
Alter Furz