4 To 1 Mux Design
جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 65 من 90.
التحدي
مُبدِّل من 4 إلى 1
يحتوي المُبدِّل من 4 إلى 1 على أربعة مداخل للبيانات (in0، in1، in2، in3)، وبتَّي اختيار (sel[1:0])، ومخرج واحد (out). يختار بتّا الاختيار أيّ مدخل سيمر إلى المخرج:
- عندما تكون
sel = 2'b00، يكون المخرجin0 - عندما تكون
sel = 2'b01، يكون المخرجin1 - عندما تكون
sel = 2'b10، يكون المخرجin2 - عندما تكون
sel = 2'b11، يكون المخرجin3
ستبني هذا المُبدِّل بطريقتين: أولًا باستخدام عبارات if-else، ثم في الدرس التالي باستخدام عبارة case. تعمل كلتا الطريقتين، لكن تكون case غالبًا أوضح عندما يكون لديك العديد من الخيارات.
يختار المُبدِّل من 4 إلى 1 واحدًا من أربعة مداخل ويمرّره إلى المخرج استنادًا إلى إشارة اختيار من بتَّين.
جدول الحقيقة
| sel1 | sel0 | out |
|---|---|---|
| 0 | 0 | out = in0 |
| 0 | 1 | out = in1 |
| 1 | 0 | out = in2 |
| 1 | 1 | out = in3 |
عندما تكون sel هي 00، يتبع المخرج in0. وعندما تكون sel هي 01، يتبع المخرج in1. وعندما تكون sel هي 10، يتبع المخرج in2. وعندما تكون sel هي 11، يتبع المخرج in3.
ما يجب فعله:
- أنشئ وحدة باسم
mux4to1 - أضف مدخل
in0(بت واحد) - أضف مدخل
in1(بت واحد) - أضف مدخل
in2(بت واحد) - أضف مدخل
in3(بت واحد) - أضف مدخل
sel(بتّان) - أضف مخرج
out(بت واحد، من النوعreg) - أضف كتلة
always @(*) - داخلها، أضف عبارة
if-elseتتحقق منsel:- إذا كانت
sel == 2'b00، فعيّنout = in0 - وإلا إذا كانت
sel == 2'b01، فعيّنout = in1 - وإلا إذا كانت
sel == 2'b10، فعيّنout = in2 - وإلا، فعيّن
out = in3
- إذا كانت
- اختتم باستخدام
endmodule
جرّب بنفسك
// الخطوة 1: أنشئ وحدة باسم mux4to1
// الخطوة 2: أضف مدخل in0
// الخطوة 3: أضف مدخل in1
// الخطوة 4: أضف مدخل in2
// الخطوة 5: أضف مدخل in3
// الخطوة 6: أضف مدخل sel (2 بت)
// الخطوة 7: أضف مخرج out (من نوع reg)
// الخطوة 8: أضف كتلة always @(*)
// الخطوة 9: أضف عبارة if-else
// إذا sel == 2'b00، out = in0
// وإلا إذا sel == 2'b01، out = in1
// وإلا إذا sel == 2'b10، out = in2
// وإلا، out = in3
// الخطوة 10: Endmoduleجميع دروس الأساسيات
4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine Logicتدرّب بنفسك: مترجم Verilog عبر الإنترنت