Es ist nicht schwer, eine CPLD oder ein FPGA einzurichten, um binärdatenverschobene MSB-first in Dezimaldaten umzuwandeln. Der Kernbaustein ist ein Modul mit Takt-, Daten- und Löscheingängen, vier Latches D0-D3 und einem kombinatorischen Next-Carry-Ausgang. Kaskadieren Sie die Blöcke wie ein Schieberegister. Nachdem der Binärwert verschoben wurde, enthalten die Register das Äquivalent in BCD.
; Tragen Sie if> = 5NextCarry = D3 | D2 & D1 | D2 & D0; Wird 8 oder 9 sein, wenn der Eingang 4 oder 9D3 war: =! D3 & D2 &! D1 &! D0 | D3 & D0; Wird 4-7 sein, wenn der Eingang 2-3 oder 7-8D2 war: =! D3 &! D2 & D1 | ! D3 & D2 & D1 & D0 | D3 &! D0; Wird 2-3 oder 6-7 sein, wenn der Eingang 1, 3, 6 oder 8D1 war: =! D3 &! D2 & D0 | ! D3 & D2 & D1 &! D0 | D3 &! D0; Wird ungerade sein, wenn der Übertrag auf setD0 gesetzt ist: = CarryIn
Beachten Sie, dass das Register vor jeder Verwendung gelöscht werden muss. Das Verschieben in Nullen reicht NICHT aus. Die Löschschaltung wird nicht angezeigt, sollte jedoch offensichtlich sein.