mikrocontroller.net

Forum: FPGA, VHDL & Co. Verilog Assembler (a<n) Abfrage durchführen


Autor: user0009 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe folgende Frage:

Ich möchte ein Assemblerprogramm schreiben, welches in Verilog 
inkludiert wird. Da ich mit dem Assemblerprogramm die PHI Funktion 
berechnen möchte,
muss ich am Anfang eine Abfrage (a<n) machen.
Jetzt möchte ich wissen, wie mache ich diese Abfrage am besten. Es wäre 
nicht so ein Problem, wenn ich mehr Befehle zur Verfügung hätte, aber 
die Vorgabe ist, dass es nur 8 Befehle gibt. Darunter: read, write, 
write indirect, jump, increment, complement, return from interrrupt and 
skip if zero.

Es gebe die Möglichkeit die beiden Variablen zu komplenetieren und dann 
solange 1 dazu zuählen, bis man durch erneutes komplementieren bei einer 
der beiden Zahlen bei 0 angelangt ist oder auch beiden. Dann hat man ein 
Resultat.

Allerdings weiß ich das das ganze etwas lange dauert und möchte nun eine 
einfacher Lösung verwenden. Leider fällt mir keine ein.

Kann mir jemand helfen?

lg user0009

Autor: Günter -.. (guenter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
user0009 wrote:
> Hallo!
>
> Ich habe folgende Frage:
>
> Ich möchte ein Assemblerprogramm schreiben, welches in Verilog
> inkludiert wird. Da ich mit dem Assemblerprogramm die PHI Funktion
> berechnen möchte,
> muss ich am Anfang eine Abfrage (a<n) machen.
> Jetzt möchte ich wissen, wie mache ich diese Abfrage am besten. Es wäre
> nicht so ein Problem, wenn ich mehr Befehle zur Verfügung hätte, aber
> die Vorgabe ist, dass es nur 8 Befehle gibt. Darunter: read, write,
> write indirect, jump, increment, complement, return from interrrupt and
> skip if zero.

Wenn dein Prozessor in Verilog implementiert ist, kannst du dann Logik 
dazupacken? Also, z.B. du scheinst Assemblerbefehle zu haben um auf 
Speicher zu zugreifen. Was wenn du den Wert von a in Speicherstelle  0 
und n in Speicherstelle 1 schreibst. Dann aus Speicherstelle 2 kannst du 
das Ergebnis a<n auslesen?

Autor: user0009 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Abfrage muss mit den Befehlen erfolgen. Ich darf keine Befehle dazu 
packen. Für die Ausführung des Algorithmus Abfrage ob a<n ist darf man 
nur die genannten Assemblerbefehle verwenden.

Derzeit mache ich es so, dass ich a und n komplementiere, 1 addiere, 
wieder komplementiere und dann schaue ob a schon 0 ist, wenn ja dann 
auch bei n wenn n nicht null ist, arbeitet der algorithmus weiter, 
ansonst wird mit a und n komplementieren wieder von vorne begonnen, bis 
er das 255 mal gemacht hat.

Das dauert eben viel zu lange. Daher möchte ich gerne wissen, wie man es 
schneller machen kann.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Jetzt möchte ich wissen, wie mache ich diese Abfrage am besten. Es wäre
> nicht so ein Problem, wenn ich mehr Befehle zur Verfügung hätte, aber
> die Vorgabe ist, dass es nur 8 Befehle gibt. Darunter: read, write,
> write indirect, jump, increment, complement, return from interrrupt and
> skip if zero.

Mit diesen acht Befehlen hast du IMHO keine signifikant bessere 
Möglichkeit als die von dir beschriebene. Der Grund ist, dass du keinen 
einzigen Befehl zur Verfügung hast, der irgendwas mit zwei Operanden 
macht, wie Addition.

Deine einzige Chance könnte noch selbstmodifizierender Code sein, aber 
auch damit fällt mir gerade keine Lösung in weniger als O(n) ein.

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.