Forum: FPGA, VHDL & Co. a^b mod m als synthetisierbarer Core


von Hans-Werner (Gast)


Angehängte Dateien:

Lesenswert?

Hier mein erstes etwas komplexeres VHDL-Programm.
Eine Zustandsmaschine die power(basis, exponent) mod m berechnet.
Getestet für power(3,4) mod 256 = 81, power(13,3) mod 256 = 149 und 
power(255,2) mod 256 = 1 und einige andere Fälle.
Verwendet ISE Webpack 10.1 und ISE Simulator.
VHDL und Testbench im Anhang.
Bitte mal in einen FPGA laden (Habe noch kein Board).
Verbesserungsvorschläge sind willkommen.

von Mark (Gast)


Lesenswert?

Hallo Hans-Werner,

auch ohne Board kannst Du doch selbst die Synthese machen. Meckert die 
ISE nicht wegen dem math_real Package?
Mir ist aufgefallen, dass Du im letzten State valid auf '1' setzt, 
danach in zero gehst und dort valid gleich wieder auf 0 setzt. Warum 
das?
Ready ist m.E. auch falsch implementiert, es müsste ja weggehen sobald 
die Berechnung startet und dann wieder auf 1 sobald das Ergebnis da ist. 
OK,
kommt drauf an was man mit den Signalen nachher noch anstellen will.
Du verschenkst außerdem <size> flip-flops im state forth.
Result würde ich aus dem Prozess rausnehmen.
Ansonsten schöner generischer Code, nicht schlecht. Anfänger würden nie 
subtypes vom Typ natural anlegen, also das find ich schon echt 
fortgeschritten ;-)

von Mark (Gast)


Lesenswert?

nochwas zur Testbench:
Du kannst Dir eine procedure schreiben, damit ist ein Testcase dann 
genau 1 Zeile VHDL.
Um die Testabdeckung zu verbessern würde ich auf jeden Fall folgende 
Corner-Tests machen:
power(0,0)
power(0,255)
power(255,0)
power(255,255)
das mit dem assert ist gut gelöst

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.