14 diamonds

diamonds 1,838 views, 2 today

views, today 110 downloads, 0 today

downloads, today comments

0 favorites 14

0







Feature on profile Embed Report

Download Minecraft Map How to install Minecraft Maps on Java Edition

PMCBBCode [url=https://www.planetminecraft.com/project/16-bit-combinationalsequential-divider-rdf/][img]https://static.planetminecraft.com/files/resource_media/screenshot/1210/2012-01-14_012943_1635482_thumb.jpg[/img] 16 Bit Combinational/Sequential Divider [RDF][/url] by [mn=337673]properinglish[/mn]

HTML <a href="https://www.planetminecraft.com/project/16-bit-combinationalsequential-divider-rdf/" title="16 Bit Combinational/Sequential Divider [RDF] Minecraft Map"><br /><img src="https://static.planetminecraft.com/files/resource_media/screenshot/1210/2012-01-14_012943_1635482_thumb.jpg" alt="16 Bit Combinational/Sequential Divider [RDF]" border="0"/><br/>16 Bit Combinational/Sequential Divider [RDF]</a> by <a href="https://www.planetminecraft.com/member/properinglish/" title="properinglish Profile">properinglish</a>

URL https://www.planetminecraft.com/project/16-bit-combinationalsequential-divider-rdf/



337673 properinglish

Level 32 : Artisan Engineer

Lately I've been exploring large division and multiplication circuitry using combinational logic, sequential logic, and a hybrid combinational/sequential approach.



Combinational logic refers to logic where the output is dependent solely on the input. This means that each step of the algorithm you're implementing in the circuit is wired. This results in a circuit that is fast, but large.



Sequential logic refers to logic where the output is dependent on both the current input and the history of the input. This means that the circuit has memory, resulting in a circuit that is compact, but not necessarily fast because you're saving the output after each step of the algorithm.



My approach to building large arithmetic circuits is to use a hybrid combinational/sequential approach to find a sort of midpoint (though thanks to insta-repeaters and insta-wire, it's not so much a midpoint as it is slightly slower than a purely combinational version would be).



This divider uses restoring division, meaning that in each iteration it subtracts the divisor from the dividend and based on whether the output is positive or negative it either outputs the difference (if positive) or the input you're subtracting from (if negative). The difference is then right-shifted and the process is repeated. For a 16 bit divider you need to do this 16 times. Now, onto the divider.



The divider I've built performs has 4 iterations wired combinationally and this circuit is run 4 times sequentially, for a total of 16 iterations. The schematic I've uploaded has a 38 tick clock, meaning the total run time is approximately 152 ticks. It may be possible to clock it faster without any issues, but I consider this a "safe" speed. Also, note the the schematic I've uploaded is *slightly* different than the screenshots because I did some rearranging to make it a little faster. If you're trying it out you should note that the dividend goes into the inputs beneath the shift register (the levers that are farthest back) and the divisor goes into the inputs that are bussed across the top of the entire circuit. I've marked the button that starts the clock with a sign on blue wool and the reset button is marked by a sign on red wool. Enjoy!



Progress 100% complete Tags