سؤال

فيما يلي بعض الكود من طرازات:

 begin
    tb_in_top = 0;
    #5 tb_in_top = 4'b0000;#5 tb_in_top = 4'b0001;
    #5 tb_in_top = 4'b0010;#5 tb_in_top = 4'b0011;
    #5 tb_in_top = 4'b0100;#5 tb_in_top = 4'b0101;
    #5 tb_in_top = 4'b0110;#5 tb_in_top = 4'b0111;
    #5 tb_in_top = 4'b1000;#5 tb_in_top = 4'b1001;
    #5 tb_in_top = 4'b1010;#5 tb_in_top = 4'b1011;
    #5 tb_in_top = 4'b1100;#5 tb_in_top = 4'b1101;
    #5 tb_in_top = 4'b1110;#5 tb_in_top = 4'b1111;
    #100 $finish;
  end

ماذا يمثل #5 و 100؟ هل أرقام الخطوط هذه؟ هل هناك شيء خاطئ في هذا الرمز؟

هل كانت مفيدة؟

المحلول

إنه ليس رمز "Modelsim" أكثر من شيء ما هو رمز "Visual Studio". إنه Verilog.

ال # الرمز المميز يدل على تأخير في النانو ثانية.

إذن ما يعنيه هذا الرمز هو:

  • في t = 0 ، قم بتعيين tb_in_top على جميع 0.
  • عند t = 5 ns ، قم بتعيين tb_in_top على القيمة الثنائية 4 بت 0000.
  • عند t = 10 ns ، قم بتعيين tb_in_top على القيمة الثنائية 4 بت 0001.
  • عند t = 15 ns ، قم بتعيين tb_in_top على القيمة الثنائية 4 بت 0010.
  • عند t = 20 ns ، قم بتعيين tb_in_top على القيمة الثنائية 4 بت 0011.

(... استمر في العد ، زيادة TB_IN_TOP بمقدار 1 كل 5 نانو ثانية ...)

  • عند t = 80 ns ، قم بتعيين tb_in_top على القيمة الثنائية 4 بت 1111.
  • عند t = 180 ns ، إنهاء المحاكاة.

نعم ، Verilog لديه for الحلقات ، ونعم ، يجب أن تكون واحدة.

إضافة

ال for ستبدو الحلقة:

integer index;
reg [3:0] tb_in_top;
begin
    tb_in_top = 0;
    for(index = 0; index < 16; index = index + 1)
    begin
        #5 tb_in_top = tb_in_top + 4'h1;
    end
    #100 $finish;
end

أخيرًا ، لاحظ أن Verilog تستخدم # لا يمكن تصنيع عملية التأخير الزمني للمنطق ؛ لا يمكن استخدامه إلا للمحاكاة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top