لا يمكن فهم الخطأ في نظام Verilog
-
26-09-2019 - |
سؤال
حاولت تجميع الكود
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] العد