2 To 1 Mux Design
جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 64 من 90.
التحدي
إن multiplexer (MUX) عبارة عن دائرة رقمية تختار أحد عدة مدخلات وتُمرّره إلى مخرج واحد استنادًا إلى إشارة اختيار. فكّر فيها على أنها محدِّد بيانات. لديك عدة مدخلات واردة، وتختار أيًّا منها يذهب إلى المخرج.
في هذا المشروع، ستبني multiplexer بأحجام مختلفة باستخدام if-else وعبارات case.
مُعدِّد إرسال من 2 إلى 1
يُعدّ multiplexer من 2 إلى 1 أبسط صورة. لديه مدخلا بيانات (in0 وin1)، ومدخل اختيار واحد (sel)، ومخرج واحد (out). عندما تكون قيمة sel هي 0، يتبع المخرج in0. وعندما تكون قيمة sel هي 1، يتبع المخرج in1. ستنفّذ ذلك باستخدام عبارة if-else داخل كتلة always @(*).
مثال: إذا كان in0 = 0، وin1 = 1، وsel = 1، فعندئذٍ out = 1.
يختار multiplexer من 2 إلى 1 أحد مدخلين ويمرّره إلى المخرج استنادًا إلى إشارة اختيار.
جدول الحقيقة
| sel | out |
|---|---|
| 0 | out = in0 |
| 1 | out = in1 |
عندما تكون قيمة sel هي 0، يتبع المخرج in0. وعندما تكون قيمة sel هي 1، يتبع المخرج in1.
ما يجب فعله:
- Create module باسم
mux2to1 - Add input
in0(بحجم 1 بت) - Add input
in1(بحجم 1 بت) - Add input
sel(بحجم 1 بت) - Add output
out(بحجم 1 بت، typereg) - Add كتلة
always @(*) - داخلها، أضف عبارة
if-else:- إذا كانت
sel == 0، فعيّنout = in0 - Else، عيّن
out = in1
- إذا كانت
- أغلق باستخدام
endmodule
جرّب بنفسك
// الخطوة 1: أنشئ module باسم mux2to1
// الخطوة 2: أضف input in0
// الخطوة 3: أضف input in1
// الخطوة 4: أضف input sel
// الخطوة 5: أضف output out (من نوع reg)
// الخطوة 6: أضف كتلة always @(*)
// الخطوة 7: أضف عبارة if-else
// إذا كان sel == 0، out = in0
// وإلا، out = in1
// الخطوة 8: 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 عبر الإنترنت