

I am writing because I need some tips on creating a 4WayMux16. It turns out that as progress the "contracts" with the Mux gates are becoming complex in the sense of me not being able to add together the contracts. I created a Mux16 of which carries one sel. Then a two way mux 16 carries two sel's. So how do I add a 4 way mux being the numbers keep adding up unevenly. the contract for a mux4way16 is 2 BUT a mux 8 way 16 is 3 sel's? This is confusing nothing is adding up. Please help.

Administrator

A 2 way Mux 16 only has a single select input. Look at section 1.2.3 more closely.
The number of available options (input channels in the case of a multiplexer or output channels in the case of a demultiplexer) is 2^n where n is the number of select bits.
If you have:
1 select bit, you have 2^1 = 2 channels.
2 select bit, you have 2^2 = 4 channels.
3 select bit, you have 2^3 = 8 channels.
4 select bit, you have 2^4 = 16 channels.
etc.


So what you are saying is that when I create a logic gate that has 4 16 bit inputs the numbers of the Sel's can be represented somehow with 00, 01, 10, and 11? So more or less I get 4 Sel's to work with? Because it looks like that I only get to Sel's to work with because in the Contract of the Mux4Way16 it says IN sel[2] of the interface. Like this shows?
/**
* 4way 16bit multiplexor:
* out = a if sel == 00
* b if sel == 01
* c if sel == 10
* d if sel == 11
*/

Administrator

Your 4way mux has two select bits. With two select bits you can support four channels numbered, as you indicated, {00, 01, 10, 11}.

