سؤال

حاولت تجميع الكود

module counter(
    input clk,
    input upSignal,
    input downSignal,
    output [7:0] count
   );
        always_ff @(posedge clk) begin
          if (upSignal)
              count <= count + 1;
          else if (downSignal)
              count <= count - 1;
        end
    endmodule

لكني أحصل على الخطأ

Error (10170): Verilog HDL syntax error at counter.v(7) near text "@"; expecting ".", or "("

ماذا يعني؟

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

المحلول

Quartus لا يدعم بعض systemVerilog. انظر هذا الرابط للحصول على التفاصيل>مساعدة Quartus

لكي تتعرف Quartus تلقائيًا على أنك تستخدم System Verilog ، تحتاج إلى استدعاء ملفك something.sv

لذلك في هذه الحالة ، ربما Counter.SV

إذا تم استدعاء ملفك Counter.V, ، ثم ستحصل على خطأ. أستطيع أن أؤكد أن هذا هو بالفعل تجميع مع Quartus II V10.0.

أوصي بتغيير منفذ إخراج الوحدة النمطية إلى Reg ، لم يشكو Quartus ، لكن جهاز محاكاة.

output reg [7:0] count

دعونا نعرف كيف تحصل على.

هتافات

نصائح أخرى

أعتقد أن جورج على حق (مرحبًا جورج! يتوهم رؤيتك هنا) ، يتم تفسير الملف على أنه Verilog (وليس SystemVerilog) ، وبالتالي لا يفهم دائمًا.

على نوع قيمة الإخراج ، أفضل استخدام المنطق في SystemVerilog. تأثيره متطابق ، لكنه يفلت من "Reg" المعلن ، وبالتالي فهو تفكير يمكن أن يخرج الناس.

أيضًا ، كان السبب في حصولك على رسالة الخطأ الخاصة هذه هو أنه لأنه لم يكن يعرف دائمًا ما كان عليه دائمًا ، فقد افترض أنه كان اسم الوحدة النمطية/الواجهة/الدالة. يمكن أن تحتوي الوحدة النمطية على خريطة منفذ يمكن أن تبدأ بـ "." ، وسيحتاج كل شيء آخر إلى شريحة مفتوحة.

مشكلة أخرى مع هذا الرمز.

يتم تعيين متغير العد من كتلة إجرائية (دائمًا) بحيث يجب إعلان متغير العد كنوع متغير ، وعادة ما يكون نوع المنطق لرمز SystemVerilog هذا. يجب أن يشمل الإعلان: الإخراج منطق 7: 0] العد

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