Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Multiplexer
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Device that selects between several analog or digital input signals}} {{About|electronics switching|telecommunications|multiplexing}} [[File:Multiplexer2.svg|thumb|300px|Schematic of a 2-to-1 multiplexer. It can be equated to a controlled switch.]] [[File:Demultiplexer.png|thumb|270px|Schematic of a 1-to-2 demultiplexer. Like a multiplexer, it can be equated to a controlled switch.]] In [[electronics]], a '''multiplexer''' (or '''mux'''; spelled sometimes as '''multiplexor'''), also known as a '''data selector''', is a device that selects between several [[Analog signal|analog]] or [[Digital signal (electronics)|digital]] input signals and forwards the selected input to a single output line.<ref name="Network+ Guide to Networks">{{cite book | last = Dean | first = Tamara | title = Network+ Guide to Networks | publisher = Delmar | year = 2010 | pages = 82–85 | isbn = 978-1423902454 | url = https://books.google.com/books?id=UD0h_GqgbHgC&q=network%2B+guide+to+networks}}</ref> The selection is directed by a separate set of digital inputs known as select lines. A multiplexer of <math>2^n</math> inputs has <math>n</math> select lines, which are used to select which input line to send to the output.<ref>{{cite book | last = Debashis | first = De | title = Basic Electronics | publisher = Dorling Kindersley | year = 2010 | pages = 557 | isbn = 9788131710685 | url = https://books.google.com/books?id=mT_j4F1bJx4C&q=Basic+Electronics+By+De+Debashis}}</ref> A multiplexer makes it possible for several input signals to share one device or resource, for example, one [[analog-to-digital converter]] or one communications [[transmission medium]], instead of having one device per input signal. Multiplexers can also be used to implement [[Boolean algebra|Boolean functions]] of multiple variables. Conversely, a '''demultiplexer''' (or '''demux''') is a device that takes a single input signal and selectively forwards it to one of several output lines. A multiplexer is often used with a complementary demultiplexer on the receiving end.<ref name="Network+ Guide to Networks"/> An electronic multiplexer can be considered as a [[System analysis#Characterization of systems|multiple-input, single-output]] switch, and a demultiplexer as a [[System analysis#Characterization of systems|single-input, multiple-output]] switch.<ref>{{cite book | last = Lipták | first = Béla | title = Instrument engineers' handbook: Process software and digital networks | publisher = CRC Press | year = 2002 | pages = 343 | isbn = 9781439863442 | url = https://books.google.com/books?id=KPjLAyA7HgoC&q=instrument+engineers'+handbook:+Process+software+and+digital+networks+By+B%C3%A9la+G.+Lipt%C3%A1k}}</ref> The schematic symbol for a multiplexer is an [[isosceles trapezoid]] with the longer parallel side containing the input pins and the short parallel side containing the output pin.<ref>{{cite book | last = Harris | first = David | title = Digital Design and Computer Architecture | publisher = Penrose | year = 2007 | pages = 79 | isbn = 9780080547060 | url = https://books.google.com/books?id=5X7JV5-n0FIC&q=Digital+design+and+computer+architecture+By+David+Money+Harris,+Sarah+L.+Harris}}</ref> The schematic on the right shows a 2-to-1 multiplexer on the left and an equivalent switch on the right. The <math>sel</math> wire connects the desired input to the output. ==Applications== Multiplexers are part of computer systems to select data from a specific source, be it a memory chip or a hardware peripheral. A computer uses multiplexers to control the data and address buses, allowing the processor to select data from multiple data sources. [[File:Telephony multiplexer system.gif|thumb|300px|The basic function of a multiplexer: combining multiple inputs into a single data stream. On the receiving side, a demultiplexer splits the single data stream into the original multiple signals.]] In digital communications, multiplexers allow several connections over a single channel by connecting the multiplexer's single output to the demultiplexer's single input (Time-Division Multiplexing). The image to the right demonstrates this benefit. In this case, the cost of implementing separate channels for each data source is higher than the cost and inconvenience of providing the multiplexing/demultiplexing functions. At the receiving end of the [[data link]] a complementary ''demultiplexer'' is usually required to break the single data stream back down into the original streams. In some cases, the far end system may have functionality greater than a simple demultiplexer, and while the demultiplexing still occurs technically, it may never be implemented discretely. This would be the case when, for instance, a multiplexer serves a number of [[Internet Protocol|IP]] network users; and then feeds directly into a [[router (computing)|router]], which immediately reads the content of the entire link into its [[routing]] processor; and then does the demultiplexing in memory from where it will be converted directly into IP sections. Often, a multiplexer and demultiplexer are combined into a single piece of equipment, which is simply referred to as a ''multiplexer''. Both circuit elements are needed at both ends of a transmission link because most communications systems transmit in [[Duplex (telecommunications)|both directions]]. In [[analog circuit]] design, a multiplexer is a special type of analog switch that connects one signal selected from several inputs to a single output. ==Digital multiplexers== In [[digital circuit]] design, the selector wires are of digital value. In the case of a 2-to-1 multiplexer, a logic value of 0 would connect <math> I_0</math> to the output, while a logic value of 1 would connect <math> I_1</math> to the output. In larger multiplexers, the number of selector pins is equal to <math> \left \lceil \log_2(n) \right \rceil</math> where <math> n</math> is the number of inputs. For example, 9 to 16 inputs would require no fewer than 4 selector pins and 17 to 32 inputs would require no fewer than 5 selector pins. The binary value expressed on these selector pins determines the selected input pin. A 2-to-1 multiplexer has a [[Boolean equation]] where <math> A</math> and <math> B</math> are the two inputs, <math> S_0</math> is the selector input, and <math> Z</math> is the output: : <math>Z = ( A \wedge \neg S_0) \vee (B \wedge S_0)</math> or : <math>Z = ( A \cdot \overline{S_0}) + (B \cdot S_0)</math> [[File:Multiplexer 2-to-1.svg|thumb|175px|A 2-to-1 mux]] Which can be expressed as a [[truth table]]: {| class="wikitable" |- ! <math> S_0</math> !! <math> A</math> !! <math> B</math> !! <math> Z</math> |- | 0 || 0 || 0 || 0 |- | 0 || 0 || 1 || 0 |- | 0 || 1 || 0 || 1 |- | 0 || 1 || 1 || 1 |- | 1 || 0 || 0 || 0 |- | 1 || 0 || 1 || 1 |- | 1 || 1 || 0 || 0 |- | 1 || 1 || 1 || 1 |} Or, in simpler notation: {| class="wikitable" |- ! <math> S_0 </math> !! <math> Z </math> |- | 0 || A |- | 1 || B |} These tables show that when <math> S_0 = 0</math> then <math> Z = A</math> but when <math> S_0 = 1</math> then <math> Z = B</math>. A straightforward realization of this 2-to-1 multiplexer would need 2 AND gates, an OR gate, and a NOT gate. While this is mathematically correct, a direct physical implementation would be prone to [[race condition]]s that require additional gates to suppress.<ref>{{cite book |last1=Crowe |first1=John |first2=Barrie |last2=Hayes-Gill |chapter=The multiplexer hazard |chapter-url=https://books.google.com/books?id=97w8luwEIAsC&pg=PA111 |title=Introduction to Digital Electronics |publisher=Elsevier |date=1998 |isbn=9780080534992 |pages=111–3 }}</ref> Larger multiplexers are also common and, as stated above, require <math> \left \lceil \log_2(n) \right \rceil</math> selector pins for <math>n</math> inputs. Other common sizes are 4-to-1, 8-to-1, and 16-to-1. Since digital logic uses binary values, powers of 2 are used (4, 8, 16) to maximally control a number of inputs for the given number of selector inputs. <gallery> File:Multiplexer 4-to-1.svg|4-to-1 mux File:Multiplexer 8-to-1.svg|8-to-1 mux File:Multiplexer 16-to-1.svg|16-to-1 mux </gallery> The Boolean equation for a 4-to-1 multiplexer is: :<math>Z = (A \wedge \neg {S_1} \wedge \neg S_0) \vee (B \wedge \neg S_1 \wedge S_0) \vee (C \wedge S_1 \wedge \neg S_0) \vee (D \wedge S_1 \wedge S_0)</math> or :<math>Z = (A \cdot \overline{S_1} \cdot \overline{S_0}) + (B \cdot \overline{S_1}. S_0) + (C \cdot S_1 \cdot \overline{S_0}) + (D \cdot S_1 \cdot S_0)</math> Which can be expressed as a [[truth table]]: {| class="wikitable" |- ! <math> S_1</math> !! <math> S_0</math> !! <math> Z</math> |- | 0 || 0 || A |- | 0 || 1 || B |- | 1 || 0 || C |- | 1 || 1 || D |} The following 4-to-1 multiplexer is constructed from [[3-state buffers]] and AND gates (the AND gates are acting as the decoder): [[File:4to1 MUX using basic gates.jpg|alt= 4:1 MUX circuit using 3 input AND and other gates|thumb|396x396px|A 4:1 MUX circuit using 3 input AND and other gates]] [[File:Mux from 3 state buffers.png|200px]] The subscripts on the <math> I_n</math> inputs indicate the decimal value of the binary control inputs at which that input is let through. ===Chaining multiplexers and mux trees=== Larger Multiplexers can be constructed by using smaller multiplexers by chaining them together in what are called "mux trees". For example, an 8:1 multiplexer can be made with two 4:1 multiplexers and one 2:1 multiplexer. The two 4:1 multiplexer outputs are fed into the 2:1 with the selector pins on the 4:1's put in parallel giving a total number of selector inputs to 3, which is equivalent to an 8:1. ===List of ICs which provide multiplexing=== [[File:54S157 Signetics 8014 package top.jpg|thumb|[[Signetics]] S54S157 quad 2:1 mux]] For [[7400 series]] part numbers in the following table, "x" is the logic family. {| class="wikitable" |- ! IC No. !! Function !! Output State |- | 74x157 | Quad 2:1 mux. | Output same as input given |- | 74x158 | Quad 2:1 mux. | Output is inverted input |- | 74x153 | Dual 4:1 mux. | Output same as input |- | 74x352 | Dual 4:1 mux. | Output is inverted input |- | 74x151A | 8:1 mux. | Both outputs available (i.e., complementary outputs) |- | 74x151 | 8:1 mux. | Output is inverted input |- | 74x150 | 16:1 mux. | Output is inverted input |} ==Digital demultiplexers== {{See also|Inverse multiplexer}} Demultiplexers take one data input and a number of selection inputs, and they have several outputs. They forward the data input to one of the outputs depending on the values of the selection inputs. Demultiplexers are sometimes convenient for designing general-purpose logic because if the demultiplexer's input is always true, the demultiplexer acts as a [[binary decoder]]. This means that any function of the selection bits can be constructed by logically OR-ing the correct set of outputs. If X is the input and S is the selector, and A and B are the outputs: <math display="block">A = ( X \wedge \neg S)</math> <math display="block">B = ( X \wedge S)</math> [[File:Demultiplexer Example01.svg|thumb|450px|left|Example: A Single Bit 1-to-4 Line Demultiplexer]] {{clear}} ===List of ICs which provide demultiplexing=== [[File:ROCKY-518HV - Fairchild 74F138-2387.jpg|thumb|[[Fairchild Semiconductor|Fairchild]] 74F138 1:8 demultiplexer]] For [[7400 series]] part numbers in the following table, "x" is the logic family. {| class="wikitable" |- ! IC No. (7400) !! IC No. (4000) !! Function !! Output State |- | 74x139 | | Dual 1:4 demux. | Output is inverted input |- | 74x156 | | Dual 1:4 demux. | Output is [[open collector]] |- | 74x138 | | 1:8 demux. | Output is inverted input |- | 74x238 | | 1:8 demux. | |- | 74x154 | | 1:16 demux. | Output is inverted input |- 1:8 demux. | 74x159 | CD4514/15 | 1:16 demux. | Output is open collector and same as input |} == Bi-directional multiplexers == Bi-directional multiplexers are built using [[analog switch]]es or [[transmission gate]]s controlled by the select pins. This allows the roles of input and output to be swapped so that a bi-directional multiplexer can function both as a demultiplexer and multiplexer.<ref>{{Cite web |title=Are switches & multiplexers bidirectional? {{!}} Video {{!}} TI.com |url=https://www.ti.com/video/6112994495001 |access-date=2023-08-03 |website=[[Texas Instruments]]}}</ref> ==Multiplexers as PLDs== Multiplexers can also be used as [[programmable logic device]]s, to implement Boolean functions. Any Boolean function of ''n'' variables and one result can be implemented with a multiplexer with ''n'' selector inputs. The variables are connected to the selector inputs, and the function result, 0 or 1, for each possible combination of selector inputs is connected to the corresponding data input. If one of the variables (for example, ''D'') is also available inverted, a multiplexer with ''n''−1 selector inputs is sufficient; the data inputs are connected to 0, 1, ''D'', or ~''D'', according to the desired output for each combination of the selector inputs.<ref>{{cite book| title=The TTL Cookbook| first=Donald E. |last=Lancaster| publisher=H.W. Sams | date=1974 | pages=140–3 |isbn=9780672210358}}</ref> == Unconventional use of multiplexers for arithmetic == Multiplexers have found application in unconventional [[stochastic computing]] (SC), particularly in facilitating arithmetic addition. In this paradigm, data is represented as a probability bitstream where the number of '1' bits signifies the magnitude of a value. Thus, the function of a 2-to-1 multiplexer can be conceptualized as a probability function denoted as: <math>y = P(a) \times P(1-s)+P(b)\times P(s)</math> , where a and b are the input bitstream and s is the select input. Using the select input = 0.5 yields: <math>y=\frac{P(a)+P(b)}{2}</math> While this approach doesn't yield exact addition but rather scaled addition, it is deemed acceptable in most SC studies. Multiplexers are extensively utilized for tasks such as average addition, average pooling, and median filtering within SC circuits. Moreover, more sophisticated applications of multiplexers include serving as Bernstein polynomial function generator,<ref>{{Cite journal |last1=Najafi |first1=M. Hassan |last2=Li |first2=Peng |last3=Lilja |first3=David J. |last4=Qian |first4=Weikang |last5=Bazargan |first5=Kia |last6=Riedel |first6=Marc |date=2017-06-29 |title=A Reconfigurable Architecture with Sequential Logic-Based Stochastic Computing |url=https://dl.acm.org/doi/10.1145/3060537 |journal=ACM Journal on Emerging Technologies in Computing Systems |volume=13 |issue=4 |pages=57:1–57:28 |doi=10.1145/3060537 |issn=1550-4832}}</ref> capable of producing arbitrary mathematical functions within the SC domain. Recent research has also revealed that combinations of multiplexers can facilitate large-scale [[multiply-accumulate]] operation,<ref>{{Cite journal |last1=Lee |first1=Yang Yang |last2=Halim |first2=Zaini Abdul |last3=Wahab |first3=Mohd Nadhir Ab |last4=Almohamad |first4=Tarik Adnan |date=2024-03-04 |title=Stochastic Computing Convolutional Neural Network Architecture Reinvented for Highly Efficient Artificial Intelligence Workload on Field-Programmable Gate Array |journal=Research |language=en |volume=7 |page=0307 |doi=10.34133/research.0307 |issn=2639-5274 |pmc=10911856 |pmid=38439995|bibcode=2024Resea...7..307L }}</ref> demonstrating feasibility in accelerating [[convolutional neural network]] on [[field-programmable gate array]]s. ==See also== * [[Digital subscriber line access multiplexer]] (DSLAM) * [[Inverse multiplexer]] * [[Multiplexing]] ** [[Code-division multiplexing]] ** [[Frequency-division multiplexing]] ** [[Time-division multiplexing]] ** [[Wavelength-division multiplexing]] ** [[Statistical multiplexing]] ** [[Charlieplexing]] * [[Priority encoder]] * [[Rule 184]], a [[cellular automaton]] in which each cell acts as a multiplexer for the values from the two adjacent cells * [[Statistical multiplexer]] * [[Ternary conditional operator]] ==References== {{Reflist}} ==Further reading== *{{cite book | first1=M. Morris |last1=Mano | first2=Charles R. |last2=Kime | title=Logic and Computer Design Fundamentals | edition=4th | isbn=978-0-13-198926-9 | publisher=[[Prentice Hall]] |year=2008}}. ==External links== *{{Commons category-inline|Multiplexers}} *{{Wiktionary-inline|multiplexer}} {{CPU technologies}} {{Authority control}} [[Category:Multiplexing]] [[Category:Digital circuits]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:About
(
edit
)
Template:Authority control
(
edit
)
Template:CPU technologies
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:Clear
(
edit
)
Template:Commons category-inline
(
edit
)
Template:Reflist
(
edit
)
Template:See also
(
edit
)
Template:Short description
(
edit
)
Template:Wiktionary-inline
(
edit
)