I have built a fully working converter that converts 16-bit binary code to BCD.
I wanted a mode with a small amount of gates instead of millions of cells connected in series to ROM. As a result, I designed the converter in a slightly different way, using only 5 ROM cells, one register, one shift register and, of course, since this is an algorithm where the operation is performed by cyclically changing one piece of data, we also need a control unit. This is only for clock control and a few minor details.
This conversion method is generally referred to as double-dabble, also known as shift-and-add-3. In fact, it is a large number of ROM cells, each cell handling a 4-bit or BCD code. It works by adding 3 to all numbers greater than or equal to 5, then shifting the entire range of bits to the left once. This cycle is repeated as many times as the length of the input bits, for example we have 8 bits and the cycle will be repeated eight times.
The main difference between my converter and the others is that mine is done by a clock that is constantly blinking, and drives the cyclical circulation of a piece of data continuously across exactly the same pair of cells. This method reduces the number of gates, but may be slightly slower and more complicated. While other circuits are mostly built with series connected ROM cells and this results in a simple circuit but a higher gate count compared to mine.
Below I have attached an image of
one ROM cell that converts binary code to BCD. There is also a table that
describes the behaviour of this cell perfectly.
For a better user experience, don't forget to read the instructions below.
1. Reset your device before conversion!
(RST = Reset button)
2. Enter the binary form of a number!
(Input binary code)
3. Press the button to start the conversion!
(BGN = Begin)
4. The clock must be on, it must blink 16 times!
(CLK = Clock)
5. Read the BCD value!
If you like my project, please give me a star (the button is on the bottom right), because it means a lot to me!
I hope you like the plan. I hope you enjoy the experience.