Casex And Casez
جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 56 من 90.
أحيانًا لا تهتم إلا ببتّات محددة في قيمة ما، بينما يمكن تجاهل البتّات الأخرى. على سبيل المثال، في مُرمِّز الأولوية، تريد العثور على أول بت 1 بغضّ النظر عن البتّات الأخرى.
يتطلب case statement عادي منك إدراج كل تركيبة ممكنة من بتات don't-care، وهذا مستحيل بالنسبة للحافلات العريضة.
<strong>casez</strong> و <strong>casex</strong> يعالجان هذه المشكلة من خلال السماح لك بتمييز بعض البتات على أنها «غير مهمة» باستخدام ? أو z أو x.
Casez مقابل Casex مقابل case العادية
| statement | البتات غير المهمة | الأفضل لـ |
|---|---|---|
case | لا شيء | المطابقة الدقيقة |
casez | z أو ? | مشفّرات الأولوية (موصى بها) |
casex | x أو z أو ? | تجنّبها (تخفي الأخطاء) |
<strong>casez</strong>يتجاهل البتات التي تكونzأو?(موصى به)<strong>casex</strong>يتجاهل أيضًا بتاتx، مما قد يخفي أخطاء المحاكاة
استخدم دائمًا <strong>casez</strong>، وليس <strong>casex</strong>. تم إنشاء casex أولًا، لكن أدرك المهندسون أنه كان خطيرًا لأنه يتجاهل قيم x (التي غالبًا ما تشير إلى سجلات غير مهيأة أو أخطاء في المحاكاة). تم تقديم casez كبديل أكثر أمانًا.
مثال
casez (data)
4'b???1: out = 0; // Bit0 must be 1, others don't matter
4'b??1?: out = 1; // Bit1 must be 1, others don't matter
4'b?1??: out = 2; // Bit2 must be 1, others don't matter
4'b1???: out = 3; // Bit3 must be 1, others don't matter
endcaseتعني ? «لا يهم». يمكن أن تكون تلك البِت 0 أو 1 أو أي شيء.
التحدي
ما يجب فعله:
أضف عبارة casez المفقودة لجعل هذا decoder يعمل.
كيفية عمله:
input = 4'b???1→out = 4'b0001input = 4'b??1?→out = 4'b0010input = 4'b?1??→out = 4'b0100input = 4'b1???→out = 4'b1000- default →
out = 4'b0000
جرّب بنفسك
module decoder (
input [3:0] in,
output reg [3:0] out
);
always @(*) begin
// TODO: أضف عبارة casez
// in = 4'b???1 -> out = 4'b0001
// in = 4'b??1? -> out = 4'b0010
// in = 4'b?1?? -> out = 4'b0100
// in = 4'b1??? -> out = 4'b1000
// default -> out = 4'b0000
end
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 عبر الإنترنت