Als je het helemaal in hardware wilt doen (en ik neem aan dat dat de bedoeling is, anders is er geen eer te behalen aan het maken van een digitale rekenmachine, en kan je net zo goed alles in een microprocessor doen), dan hangt het er maar net van af hoe groot de woordbreedte van de binaire rekenmachine is.
Voor een 16-bits woordbreedte heb je al 16 x 74185a nodig, en daarna groeit het nog veel harder.
Met gewone logische schakelingen ("losse poorten") wordt het al snel erg complex.
Ik had laatst zo'n binair naar BCD conversie nodig voor een FPGA projectje, en heb deze video's
gebruikt als leidraad:
YouTube: Lesson 32 - Binary-to-BCD Converter
YouTube: Lesson 33 - VHDL Example 18: 4-Bit Binary-to-BCD Converter Logic
YouTube: Lesson 34 - VHDL Example 19: 8-Bit Binary-to-BCD Converter-for loops
Je hoeft het natuurlijk niet met FPGA's en VHDL te doen, maar het geeft wel inzicht hoe je de conversie met het "Shift and Add-3" algoritme in hardware kunt maken.
Als de woordbreedte van je rekenmachine niet te groot is, kan je ook overwegen om de conversie met look-up tables in één of meer (E)PROM's te realiseren.
Een andere oplossing zou kunnen zijn je rekenmachine direct decimaal (met BCD's) te laten rekenen ipv. binair. Dan heb je de complexe conversie niet nodig, maar wordt wel je rekenmachine zelf weer complexer.
Edit: Oops. Ik zie nu pas in je topic titel staan dat het om een 32-bits woordbreedte gaat. De complexiteit groeit zo snel met de woordbreedte, dat een 32-bits binary naar BCD converter mij veel te complex lijkt om met losse logica te maken, ook niet met 74185a's. Als je het per se in hardware wilt doen, lijkt een FPGA mij de enige optie. Maar dan kan je de rest van de rekenmachine ook net zo goed in de FPGA maken ;-)
[
Voor 12% gewijzigd door
ReneK op 05-03-2019 17:03
]