Hallo,
ich habe mir das Cyclone 10 LP Entwicklungsboard von intel zugelegt. Auf
diesem ist Hyperram vorhanden. Es gibt einige Tutorials, in denen der
Hypperram auch angesteuert wird. Diese habe ich bereits durchgearbeitet.
Darin wird dann mittels QSys Plattform Designer z.B. ein Nios 2
eingerichtet, der auf den Ram zugreift. Soweit, so gut. Ich als Anfänger
möchte nun jedoch mal ganz schlicht und einfach mittels VHDL ein paar
bytes in den Ram schreiben und wieder auslesen... Jedoch fehlt mir das
Wissen, wie ich so eine "kleine" Aufgabe lösen kann. Kennt ihr ein ganz
einfaches Tutorial, in dem man wirklich lernt, was man tut und nicht nur
durchklickt, was geschrieben steht? nach dem Durcharbeiten habe ich Null
ahnung, wie der Zugreif auf den Speicher überhaupt erfolgt.
Ich habe folgendes probiert: Auch mittels Platform Designer habe ich die
Hyperbus IP erstellt und generiert. Das qip File habe ich in Quartus
eingefügt. Ist diese Vorgehensweise grundsätzlich richtig? Und wie mache
ich nun weiter?
Danke im Voraus
Du solltest nicht direkt mit etwas wie RAM anfangen. Klingt nicht nach
sonderlich viel, komplex klingt es auch nicht, ist es aber. Wenn du es
trotzdem machen willst Nutz den IPCore und schau dir an wie das Avalon
Interface funktioniert.
@ Donni D: Ich möchte es auf jeden Fall mit der IP Core realisieren.
Hast Du ein empfehlendswertes Tutorial für das Avalon Interface? Habe
auch schon einige Infos dazu durch google gefunden. Aber vielleicht hast
Du ja einen besonders guten Tipp?
@Weltbester-FPGA Pongo: Ich möchte für den Anfang z.B. einfach Werte,
die über einen ADC rein kommen im Speicher ablegen und anschließend
auslesen (und über RS232 an den PC senden). Dies soll eine Übung sein.
Und ja: Der Hyperram ist vom Hersteller Cypress.
FPGA Neuling schrieb im Beitrag #5623790:
> Ich möchte für den Anfang z.B. einfach Werte,> die über einen ADC rein kommen im Speicher ablegen und anschließend> auslesen (und über RS232 an den PC senden).
Dann würde ich mir erstmal eine passende State-Machine für die Aufgabe
ausdenken.
Duke
Vielen Dank für Deinen Hinweis. Wie geschrieben, habe ich jedoch
Probleme, den Hyperram anzubinden. Um alles weitere, was nur der
Beantwortung der Frage für "Weltbester-FPGA Pongo" diente, der wissen
wollte, was ich vor habe, müsst ihr nicht weiter beachten. Das bekomme
ich schon hin. Aber danke nochmal.
Hi, mein tipp, auch noch ziemlich grün hinter den Ohren was die ganze
hardware design Sache angeht, schaue dir einfach an wie das RAM im QSYS
instanziert wird, sollten man eigentlich in dessen Haupt-entity finden.
Was für Signale und Parameter braucht die Komponente? Kopiers nicht
einfach nur sondern versuche zu verstehn warum und wofür diese gebraucht
werden, warscheinlich (nur geschätzt da ich das Hyperram nicht kenne)
Takt, read und write Adressen, data in und out, read und write enable,
leg diese entspechend in deinem entity an, instanzier damit das RAM,
schmeiss das QSYS raus (natürlich nicht dessen files aus dem Projekt
entfernen) und dann brauchste warscheinlich eine statemachine in der du
die Signale des RAMs, je nachdem was du tun möchtest (schreiben /
lesen), manipulierst. Sollte gehen ausser ich hab falsch verstanden was
das Problem ist.
Viel Erfolg.
FPGA Neuling schrieb im Beitrag #5623027:
> Jedoch fehlt mir das> Wissen, wie ich so eine "kleine" Aufgabe lösen kann. Kennt ihr ein ganz> einfaches Tutorial, in dem man wirklich lernt, was man tut und nicht nur> durchklickt, was geschrieben steht? nach dem Durcharbeiten habe ich Null> ahnung, wie der Zugreif auf den Speicher überhaupt erfolgt.
Tutorial ist der falsche Ansatz, du musst dir ein Datenblatt nehmen und
daraus die Ansteuerung ermitteln. Sowas wird an der Hochschule in
Fächern wie Digitaltechnik unterrichtet. Oder schau mal in eine
Quellcodesammlung wie opencores.org.
Für den Einstieg kanns du ja mit einem internen SRAM üben, der Cyc10-LP
hat etliche davon. Dazu nimmst du einen RAM: 1-Port aus dem IP - Catalog
(siehe Anhang).
Dann bastelst du eine statemachine drumherum und schaust dir das in der
Simu an und überlegst dir eine Testschaltung (BIST) mit der du das ganze
testest, eventuell hilft Signal-Tap.
Dann Uart und ADC drm und das meiste steht erst mal. Jetzt kann man sich
dran machen den internen RAM durch den externen Hyperram (im prinzip
SRAM mit DDR-dateninterface) ersetzen.
Danke nochmal an alle für die Tipps. Ich leider jetzt erst dazu
gekommen, weiter zu machen.
C.A. Rotwang:
Diese Vorgehensweise hat mir sehr geholfen. ich habe einen 1-Port Ram
angelegt, und eine Statemachine zum Füllen geschrieben. Ich habe es zum
Testen so gemacht, wenn ich button1 drücke, wird gelesen. Button 2-4
füllen an Adresse 0x01 einfach eine 1, 3 oder 7, die ich mir über LEDs
anzeigen lasse. Ich habe eine Testbench erzeugt und es mir in Modelsim
angeschaut. Dort funktioniert es scheinbar, wie ich möchte. Wenn ich es
aber auf den FPGA lade, dann leuchtet eine beliebige LED, wenn ich einen
button drücke. Und zwar manchmal mehrmals hintereinander die gleiche
LED, manchmal aber auch eine andere für ein und denselben Button. Kann
mir vielleicht jemadn weiter helfen? Anmerkung: bitte achtet nicht auf
die Entity bezeichnungen. Ich wollte erst SDRAM nehmen, hab ich jetzt
aber doch nicht.
FPGA Neuling schrieb im Beitrag #5640079:
> Kann> mir vielleicht jemadn weiter helfen?
erzeug mit einem simulator ein wave-diagramm der signale am ram und
vergleich die mit der Darstellung im Datenblatt.
Benutze "Signal Tap" zur Aufzeichnung der Signale am RAM und vergleiche
diese mit dem Datenblatt.
FPGA Neuling schrieb im Beitrag #5640079:
> Wenn ich es> aber auf den FPGA lade, dann leuchtet eine beliebige LED, wenn ich einen> button drücke.
Hast Du deine Taster-Signale vernünftig entprellt und einsynchronisiert?