mikrocontroller.net

Forum: FPGA, VHDL & Co. Umwandlung nach BCD


Autor: Silvia A. (silvia)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich binn grad auf Lothars Seite auf die BCD Umwandlung gestossen:
http://www.lothar-miller.de/s9y/archives/34-Vektor...

Dort ist zu Lesen:
Der Vektor wird von rechts in die BCD-Zahlen hineingeschoben und beim 
Überlauf die entsprechende BCD-Stelle mit einer Addition +6 korrigiert.

Irgendwie versteh ich nicht warum das so geht, ich habe mir mal mit 
Excel einen versuch gemacht und die Zahl 99 nach BCD konvertiert.
Beim 5. Shift kommt es zum Überlauf und ich rechne dann 6 Dazu. Aber am 
Ende kommt nicht 99 raus, sondern 93. Wieso ? Wo ist mein Denkfehler ?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Silvia A. schrieb:
> Beim 5. Shift kommt es zum Überlauf und ich rechne dann 6 Dazu.
Gut so.

> Aber am Ende kommt nicht 99 raus, sondern 93. Wieso ?
> Wo ist mein Denkfehler ?
99 und 93?
Evtl. mußt du noch 6 addieren wegen dem Überlauf in der letzten 
Zeile....

Autor: Silvia A. (silvia)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Du mußt noch 6 addieren wegen dem Überlauf in der letzten Zeile....  :-o

Aber da ist doch kein Überlauf. Erste Ziffer = 9. Zweite = 3. Wo siehst 
du da einen Überlauf ?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, langsam:
99 =      01100011
Z    E
---- ---- 01100011
---- ---0 1100011
---- --01 100011
---- -011 00011
---- 0110 0011      E>4 --> E = E+3 = 6+3 = 9 = 1001
---- 1001 0011
---1 0010 011
--10 0100 11
-100 1001 1         E>4 --> E = E+3 = 9+3 = 12 = 1100
-100 1100 1
1001 1001     -> 9 9

Ich habe in meinem VHDL-Code das Shift-Add-3 Verfahren verwendet, weil 
das Addieren von 3 und das gleichzeitige Schieben im FPGA wie eine 
Addition von 6 ist...

Z    E
---- ---- 01100011
---- ---0 1100011
---- --01 100011
---- -011 00011
---- 0110 0011
---0 1100 011       E>9 -->
---1 0010 011       E = E+6 = 12+6 = 18 = 1 0010 --> Z=1, E=0010
--10 0100 11
-100 1001 1
1001 0011           Überlauf, weil E nach Shift E>9 -->  ****
1001 1001           E = E+6 = 3+6 = 9 = 1001 --> E=1001 -> 9 9
                   (****Diesen zweiten Überlauf hast du nicht 
erkannt...)

Das Shift-Add-6 Verfahren hat die etwas unangenehme Eigenschaft, dass 
der Übertrag nicht so leicht zu erkennen ist, weil er entweder bei >9 
oder bei einem Übertrag einer 1 in die nächste Stelle stattfindet. Zudem 
muß auch die rechnerische Korrektur (+6) evtl. die nächste Stelle 
manipulieren...


Siehe auch dort etwa in der Mitte:
http://www.scribd.com/doc/47896259/Digital-Logic-F...

Autor: Silvia A. (silvia)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>oder bei einem Übertrag einer 1 in die nächste Stelle stattfindet
Das war die Information, die mir fehlte, Danke Lothar.

PS. das solltest du vielleicht noch auf deiner Seite dazuschreiben

Autor: Würstle-Horst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Lothar,

na wie läuft es in der Wurst-Fabrik ?  :-)

VG, Würstle-Horst



P.S.

>PS. das solltest du vielleicht noch auf deiner Seite dazuschreiben
Leute, Ihr solltet mal damit anfangen, selber nachzudenken!

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Würstle-Horst schrieb:
> na wie läuft es in der Wurst-Fabrik ?  :-)
Gut läuft es in der Wurst-MASCHINEN-fabrik... ;-)

Autor: Würstle-Horst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja klar, MASCHINEN, sorry, für irgendetwas müssen die PLDs ja gut sein 
;-)

Autor: Würstle-Horst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gerade einen heissen Tip erhalten:

http://www.freepatentsonline.com/EP1623627.html

:-))

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.