mikrocontroller.net

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


Autor: Hans-Werner (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.