Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

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لا شيءالمطابقة الدقيقة
casezz أو ?مشفّرات الأولوية (موصى بها)
casexx أو 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 أو أي شيء.

challenge icon

التحدي

ما يجب فعله:

أضف عبارة casez المفقودة لجعل هذا decoder يعمل.

كيفية عمله:

  • input = 4'b???1out = 4'b0001
  • input = 4'b??1?out = 4'b0010
  • input = 4'b?1??out = 4'b0100
  • input = 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
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: مترجم Verilog عبر الإنترنت