Forum: FPGA, VHDL & Co. Mariebad Spiel VHDL


von Kingdude (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

nachdem ich mir diesen Thread hier:

Beitrag "FPGA synthetisierung"

zu gemühte geführt habe bin ich mir sicher das meine Frage nicht 
schlimmer sein kann!!

Da ich mir schon vor geraumer Zeit mal ein kleines Eval Board mit dem 
Altera MAX EPM7128SLC84-15 gebastelt habe aber noch nie wirklich viel 
mit VHDL gearbeitet habe, wollte ich dies jetzt einfach mal nachholen. 
Als Aufgabe habe ich mit das Mariebad Spiel vorgenommen welches auch 
bekannt ist als Nim Spiel.

http://de.wikipedia.org/wiki/Marienbad_(Spiel)

Hierbei werden abwechselnd Streichhölzer weggenommen und wer das letzte 
nimmt hat verloren. Einziger unterschied zum Original, in meiner 
Variante darf man max. nur zwei Streichhölzchen nehmen und wer das 
letzte nimmt hat gewonnen!

Das Spiel wird durch die eingabe_set Bestätigung des Spielers gestartet 
oder durch eine Delay Zeit x aber dann darf der PC zu erst ziehen. Der 
Spieler muss jede Eingabe mit eingabe_set bestätigen danach zieht die 
KI.

Da ich mir nicht anders zu helfen wusste habe ich sehr sequentiell 
gearbeitet, soll heißen ich habe alles in Prozessen verarbeitet. Die 
Simulation des Programms geht jetzt auch so weit nur habe ich das 
Problem das er beim Compilieren mehr Makrozellen(399) braucht als der 
EPM7128SLC84-15(128) besitzt. Da ich mir ziemlich sicher bin das dies 
wahrscheinlich an meiner schlechten Programmierung in VHDL liegt, wollte 
ich mal fragen ob ihr nicht mal einen Blick auf meine VHDL Code werfen 
könnt und mir vielleicht ein paar Möglichkeiten der Optimierung zu 
zeigt.

Ich habe das Programm mit QuartusII  Version 7.2 geschrieben. Ich habe 
keine wait und auch keine SHARED VARIABLEN verwendet, dafür aber LOOPS 
bei denn ich mir auch nicht wirklich sicher bin ob dies so gut ist!

Ich bin für jede Hilfe dankbar  und wer weiß vielleicht habe ich ja 
glück und bringe es ja doch noch in den EPM7128SLC84-15 rein ;-).

MFG

von Falk B. (falk)


Lesenswert?

@ Kingdude (Gast)

>Da ich mir nicht anders zu helfen wusste habe ich sehr sequentiell
>gearbeitet, soll heißen ich habe alles in Prozessen verarbeitet. Die

Das ist der normale Weg.

>Simulation des Programms geht jetzt auch so weit nur habe ich das
>Problem das er beim Compilieren mehr Makrozellen(399) braucht als der
>EPM7128SLC84-15(128) besitzt. Da ich mir ziemlich sicher bin das dies

Hmmm.

>Ich habe das Programm mit QuartusII  Version 7.2 geschrieben. Ich habe
>keine wait und auch keine SHARED VARIABLEN verwendet,

Schonmal gut ;-)

> dafür aber LOOPS
>bei denn ich mir auch nicht wirklich sicher bin ob dies so gut ist!

Naja, prinzipiell kann man das machen. Aber das Ergebnis ist NICHT 
eine sequentielle Verarbeitung der Daten, sondern massiv parallele 
Logik. Und das frisst dir deine Makrozellen auf. VHDL ist kein C.

>Ich bin für jede Hilfe dankbar  und wer weiß vielleicht habe ich ja
>glück und bringe es ja doch noch in den EPM7128SLC84-15 rein ;-).

Dein Ansatz ist schonmal gut. Aber die loops musst du über Zähler und 
weitere States realisieren, erst dann wird das ganze wirklich 
sequentiell aufgebaut und verarbeitet. Wobei es fraglich ist wieviel man 
dadurch einsparen kann. Das Hölzchenspiel hat ja nur 7+5+3+1 Hölzchen, 
welche als Bits gespeichert werden müssen. Wahrscheinlich ist sie 
Resourceneinspaarung
nicht soo gross dass es in 128 Makrozellen passt.

MFG
Falk

von alex (Gast)


Lesenswert?

Hallo,

>Ich bin für jede Hilfe dankbar  und wer weiß vielleicht habe ich ja
>glück und bringe es ja doch noch in den EPM7128SLC84-15 rein ;-).

ich würde sagen, das geht nicht, es wird nicht in den CPLD passen. Nimm 
einen kleinen Mikrocontroller, damit wirst Du erfolgreicher sein.
Oder muss das Spiel mit 50 MHz laufen? Wenn ja, dann Respekt...

Gruß,
Alex

von Kingdude (Gast)


Lesenswert?

Hallo,

da es mir ja primär um Erfahrung im Umgang mit VHDL ging, ist es 
natürlich auch keine ding wenn man das Spiel jetzt nicht so weit 
optimieren kann das es doch auf die 128 Makrozellen käme!

Was mich jedoch trotzdem Interessieren würde ist, ob der Code in dieser 
form vernünftig bzw. dem Gedanken von HDL entspricht?

@Falk
dein Kommentar zu den Loop’s hat mir auf alle Fälle schon sehr geholfen 
bezüglich des Verständnisses!!

MFG Kingdude

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.