มัลติเพล็กเซอร์ (หรือ MUX) ซึ่งบางครั้งเรียกว่าตัวเลือกข้อมูล ทำงานโดยเลือกสัญญาณอินพุตแอนะล็อกหรือดิจิทัลหลายสัญญาณและกำหนดทิศทางอินพุตที่เลือกไปยังเส้นเอาต์พุตเส้นเดียว กระบวนการเลือกนี้ควบคุมโดยชุดอินพุตดิจิทัลแยกกันที่เรียกว่าเส้นเลือก กล่าวคือ มัลติเพล็กเซอร์ที่มีอินพุต 2 Nตัวจำเป็นต้องมีเส้นเลือก N เส้น มัลติเพล็กเซอร์มีความสามารถในการทำงานเป็นวงจรผสมสากล ช่วยให้สามารถใช้งานเกตตรรกะมาตรฐานทั้งหมดโดยใช้มัลติเพล็กเซอร์ได้
สัญลักษณ์ที่ใช้โดยทั่วไปในการแสดงมัลติเพล็กเซอร์ในแผนผังวงจรคือรูปทรงสี่เหลี่ยมคางหมูที่มีเส้นอินพุตหลายเส้น (ปกติมี 2 Nเส้น) เส้นเลือก (N) และเส้นเอาต์พุตเส้นเดียว
มัลติเพล็กเซอร์ 2×1 ประกอบด้วยอินพุต 2 ตัว คือ I 0และ I 1เส้นเลือกหนึ่งเส้น คือ S 0และเอาต์พุตเดี่ยว คือ Z เมื่อพิจารณาเส้นเลือกเป็นอินพุตเพิ่มเติม เราสามารถสร้างตารางความจริงที่แสดงพฤติกรรมของ MUX 2×1 ได้ วัตถุประสงค์ของ MUX 2×1 คือเอาต์พุต I 0เมื่อ S 0เป็นศูนย์ และเอาต์พุต I 1เมื่อ S 0เป็นหนึ่ง
ด้านล่างนี้เป็นตารางความจริงโดยละเอียดสำหรับมัลติเพล็กเซอร์ 2×1:
เราจะสังเกตได้ว่าตารางความจริงของ 2X1 MUX คือตาราง 8 แถว มีวิธีทำให้ตารางดูเรียบง่ายขึ้นดังแสดงในตารางที่ 2 ที่นี่เราจะถือว่า I 0และ I 1เป็นตัวแปรที่สามารถกำหนดให้กับ Z ได้
คล้ายกับตารางที่ 2 เราสามารถเขียนตารางค่าความจริงของ MUX 4X1 ได้ เรามีอินพุต 4 ตัวคือ I 0 , I 1 , I 2และ I 3ดังนั้นเอาต์พุต Z จึงสามารถรับตัวแปรอินพุตตัวใดตัวหนึ่งได้ขึ้นอยู่กับชุดค่าผสมของเส้นที่เลือก เพื่อแสดงอินพุตตัวใดตัวหนึ่งจาก 4 ตัว เราต้องการเส้นที่เลือก 2 เส้นที่สามารถสร้างชุดค่าผสมได้ 4 ชุด
วงจรตรรกะสำหรับมัลติเพล็กเซอร์ 2 ต่อ 1 สามารถทำได้โดยใช้เกตตรรกะ ดังที่แสดงในรูปที่ 2 วงจรนี้ประกอบด้วยเกต NOT หนึ่งตัว เกต AND สองตัว และเกต OR หนึ่งตัว
รูปที่ 2: วงจรมัลติเพล็กเซอร์ 2X1 (2 ต่อ 1) โดยใช้เกต NAND และ OR
คำอธิบายของการใช้งานวงจร 2X1 MUX (แสดงในรูปที่ 2) มีดังต่อไปนี้ เมื่อเส้น select S 0เป็นลอจิกศูนย์ AND ด้านบนจะเปิดใช้งาน (ทำหน้าที่เหมือนบัฟเฟอร์ลอจิก) ในขณะที่ AND ด้านล่างถูกปิดใช้งาน (เอาต์พุตของ AND เป็นศูนย์) ดังนั้น เกต OR จะสร้างเอาต์พุตที่เทียบเท่ากับ I 0 เนื่องจากอินพุตอื่นของเกต OR เป็นศูนย์ ในทำนองเดียวกัน หาก S 0 เป็นลอจิก 1 เกต AND ด้านบนจะถูกปิดใช้งาน (เอาต์พุตเป็นศูนย์) ในขณะที่เกต AND ด้านล่างถูกเปิดใช้งานและสามารถผ่าน I 1ได้ ดังนั้น เอาต์พุตของเกต OR จะกลายเป็นI 1
รูปที่ 3: มัลติเพล็กเซอร์ 2X1 แบบเกตส่งสัญญาณ
สามารถสร้าง MUX 2X1 แบบเดียวกันได้โดยใช้ทรานซิสเตอร์จำนวนน้อยลงโดยการใช้เกตส่งผ่าน (TG) เป็นสวิตช์ (ดังแสดงในรูปที่ 3) เมื่อ S 0เป็นศูนย์ เกตส่งผ่านบน (TG 1 ) จะทำให้I 0ผ่านไปได้ ก่อน Z เกต I 0จะถูกกลับทิศอีกครั้งเพื่อสร้าง I 0เมื่อ S 0เป็น 1 เกตส่งผ่านบน (TG 1 ) จะถูกปิด แต่เกตส่งผ่านล่าง (TG 2 ) จะทำให้I 1ผ่านไปได้ ก่อน Z เกตI 1จะถูกกลับทิศอีกครั้งเพื่อสร้างI 1
อินเวอร์เตอร์ถูกเพิ่มเข้ามาเพื่อเพิ่มค่าอิมพีแดนซ์อินพุตและพัดลมเอาต์ของลอจิก หากนำอินเวอร์เตอร์ออกไป ลอจิกของไดรเวอร์จะต้องขับเคลื่อนโหลด เนื่องจาก TG ไม่จ่ายกระแสไฟ TG เป็นเพียงสวิตช์เท่านั้น
นอกจากนี้ยังมีเวอร์ชันที่ไม่มีอินเวอร์เตอร์เรียกว่ามัลติเพล็กเซอร์อนาล็อก เวอร์ชันในรูปที่ 3 สามารถส่งสัญญาณลอจิกสูงหรือต่ำได้เท่านั้น แต่เวอร์ชันที่แสดงในรูปที่ 4 สามารถส่งสัญญาณอนาล็อกได้
รูปที่ 4 : แผนผังวงจรมัลติเพล็กเซอร์ 4 ต่อ 1
โดยใช้แนวคิดข้างต้น สามารถสร้างมัลติเพล็กเซอร์ 4 ต่อ 1 ที่ใช้เกตตรรกะได้ ดังที่แสดงในรูปที่ 4
รูปที่ 5 : มัลติเพล็กเซอร์อนาล็อก 2X1
มัลติเพล็กเซอร์อนาล็อกใช้เส้นเลือกดิจิทัลเพื่อควบคุมเส้นทางของสัญญาณอนาล็อกเป็นอินพุต มัลติเพล็กเซอร์อนาล็อกสามารถใช้เป็นมัลติเพล็กเซอร์ดิจิทัลได้เช่นกัน อย่างไรก็ตาม มัลติเพล็กเซอร์ดิจิทัลไม่สามารถใช้เป็นมัลติเพล็กเซอร์อนาล็อกได้ มัลติเพล็กเซอร์อนาล็อกผลิตขึ้นโดยมีเกตส่งสัญญาณโดยเฉพาะ ดังนั้นจึงมีความต้านทานน้อยที่สุดและสม่ำเสมอตลอดแรงดันสัญญาณ
โค้ด Verilog ของมัลติเพล็กเซอร์ 2 X 1 แสดงอยู่ด้านล่างนี้:
module mux2_1(in1, in2, select, out);
input in1, in2, select;
output out;
assign out = select ? in2 : in1;
endmodule
รูปที่ 6 : เกต NOT, เกต AND และเกต OR โดยใช้ 2 X 1 MUX
เกตตรรกะพื้นฐานสามารถสร้างได้โดยใช้มัลติเพล็กเซอร์ 2X1 สามารถใช้ระเบียบวิธีง่ายๆ เพื่อสร้างตรรกะใดๆ โดยใช้ MUX ได้ เราสามารถเขียนฟังก์ชันตรรกะของ MUX และกำหนดอินพุตอย่างระมัดระวัง ตัวอย่างง่ายๆ มีดังต่อไปนี้:
ไม่ใช่ประตู
ในการสร้างฟังก์ชันตรรกะ NOT เราสามารถเขียนฟังก์ชันตรรกะของ 2 X 1 MUX ก่อน:
ซี-ฉัน0ส0¯-ฉัน1ส0
จากการสังเกตฟังก์ชันข้างต้น หากเราแทนค่า I0=1 และ I1=0 เอาต์พุตจะเป็นS0 หากเกต NOT ที่เรากำลังพยายามสร้างมีxเป็นอินพุตและzเป็นเอาต์พุต เราสามารถแทนที่บรรทัด select S0 เป็น x และรับเอาต์พุตเป็นx
ประตู AND
เมื่อสังเกตฟังก์ชันลอจิกของ 2 X 1 MUX เราสามารถสร้างฟังก์ชันลอจิก AND ได้ สมมติว่าเกท AND ที่เรากำลังพยายามสร้างมีอินพุตเป็นxและy และมีเอาต์พุตเป็น zเราสามารถแทนค่า S 0 = xและ I 1 = yในฟังก์ชันลอจิก 2 X 1 MUX เพื่อสร้างเกท AND ได้
หรือประตู
การสังเกตฟังก์ชันลอจิกของ 2 X 1 MUX ทำให้เราสามารถสร้างฟังก์ชันลอจิก OR ได้ สมมติว่าเกต OR ที่เรากำลังพยายามสร้างมีอินพุตxและy และ เอาต์พุตz เราสามารถแทนค่า S 0 = xและ I 0 = y , I 1 =1 ในฟังก์ชันลอจิก 2 X 1 MUX เพื่อสร้างเกต OR
รูปที่ 7 : มัลติเพล็กเซอร์ 4X1 โดยใช้มัลติเพล็กเซอร์ 2X1
มัลติเพล็กเซอร์ขนาดเล็กสามารถใช้สร้างมัลติเพล็กเซอร์ลำดับสูงตัวเดียวได้ ตัวอย่างเช่น มัลติเพล็กเซอร์ 4 ต่อ 1 สามารถสร้างได้โดยใช้มัลติเพล็กเซอร์ 2 ต่อ 1 จำนวน 3 ตัวตามที่แสดงในรูปที่ 7 มัลติเพล็กเซอร์สองตัวจะสร้างเอาต์พุต 2 ตัวซึ่งจะสร้างอินพุตของมัลติเพล็กเซอร์อีกตัวหนึ่ง เส้นที่เลือกจะถูกแบ่งระหว่างมัลติเพล็กเซอร์แต่ละตัว
ตัวอย่างของ 8 X 1 MUX ที่ใช้ 4 X 1 MUX สองตัวและ 2 X 1 MUX ตัวหนึ่งแสดงอยู่ในรูปที่ 8 โดยที่ s 2คือ MSB ของเส้นที่เลือก ในขณะที่ s 0คือ LSB ของเส้นที่เลือก