I'm under the impression that sub-busing is the linchpin to understanding how to tackle multi-way, multi-bit gates: such as Mux4Way16.
I started playing with an implementation that piped the output of one Mux16 into another Mux16, similarly to how I implemented the Or8Way; however, that brought to the surface another challenge: how to manage sel. Even if I pipe the output of one Mux16 into another I still have to manage sel and sel. At that point the arrangement of Mux16s got all arbitrary, and I felt this was a dead-end.
Please help me understand how to leverage sub-busing to solve implementation. If it's not about sub-busing please point me to the correct topics, concepts, techniques, etc.
In the "HDL Survival Guide", under section "Bit Numbering and Bus Syntax":
"Hardware bits are numbered from right to left, starting with 0. When a bus is carrying a number, bit n is the bit with weight 2n. (2 to the nth power)
For example, when the book says sel=110, it means that a bus named sel receives the inputs 110. That means sel=1, sel=1 and sel=0"
Not sure what the highlighted text means. I'm trying to map the sentence with the example that follows and don't see the connection.
The key to the highlighted sentence is that it is referring specifically to cases where a bus is carrying a number. For instance, the output from the ALU after doing an addition operation. So say that the bits on the bus happen to be
0000 0101 1010 1111
Note that the spaces are there just to make things more readable for us humans.
Which of those bits is the least significant and which is the most? That sentence is simply telling you that the left bit is the most significant and the right bit is the least significant. Remember that, as far as the hardware is concerned, these are just sixteen different bits on sixteen different wires, we need to understand how to determine what value that pattern of sixteen bits represents. So number from right to left starting with 0 and ending with 15. Then the weight of a given bit is just 2^(bit position number). You then multiply each bit in the pattern (either a 0 or a 1) by the weight for that position and add up the results.
I know it's not good to post in 2 locations, so I'm going to delete this post; unless you can rename the post to something like "Bit Numbering and Bus Syntax question"? Then I can remove the copy above P.S. and dedicate the post to the question of bit positioning, etc.