منطق نقل السجلات (RTL) هي لغة تصف تدفق البيانات بين السجلات وكيفية تطبيق العمليات المنطقية والرياضية على البيانات. يستخدم المهندسون تصميم RTL لوصف كتل وظيفية، ومن ثم تحديد سلوك مكون منفصل يُستخدم لتنفيذ وظيفة محددة. تحتوي كل كتلة وظيفية على وصف للسجلات داخل الكتلة، ويُطلق عليها اسم الدائرة التسلسلية، ودائرة توافقية تحتوي على العمليات المنطقية للكتلة الوظيفية. كما يستخدمون لغة وصف العتاد (HDL) لوصف كيفية توصيل الكتل الوظيفية لتحديد تدفق البيانات عبر الدائرة.
تكمن قوة تصميم RTL في طريقته في تقسيم نظام معقد إلى كتل بسيطة نسبيًا يتم تمثيلها برمز HDL. فيما يلي بعض المفاهيم الأساسية المهمة لفهم كيفية استخدام تصميم RTL.
السجلات (Registers)
في تصميم RTL، يُطلق على عنصر العتاد الذي يمكنه تخزين كمية معينة من البيانات اسم السجل. عادةً ما يتم تنفيذها على شكل قلّابات D. يمكن قراءة قيمة السجل كمدخل لعملية منطقية أو يمكن تعيينها كمخرج لعملية. إن وصف كيفية تدفق البيانات بين السجلات وكيفية تعديل البيانات بواسطة عملية ما هو الغرض الأساسي من تصميم RTL.
لغة وصف العتاد (HDL)
الجزء الأكثر أهمية في تصميم RTL هو الرمز الذي يصف سلوك الدائرة. HDL هي لغة مواصفات تشبه إلى حد كبير لغة البرمجة، مع متغيرات واستدعاءات دالة وعبارات منطقية مثل if-then-else و CASE وعبارات منطقية ورياضية. ومع ذلك، تم تصميم HDL خصيصًا لوصف سلوك وهيكل الدوائر الإلكترونية، عادةً ما تكون دوائر متكاملة. أحد الأشياء التي تميز HDL عن لغة البرمجة هو تضمين مفهوم الوقت في اللغة بحيث يمكن تشغيل العمليات بواسطة نبضات الساعة في الدائرة.
يتم ذلك من خلال استخدام متغير يحدد قيمة نبضة الساعة الرقمية في الدائرة، كما هو الحال في مثال VHDL البسيط التالي لعاكس، حيث يتم تعيين المخرج (Q) على قيمة المدخل (D) عندما تنتقل قيمة نبضة الساعة، clk، من حالة منخفضة إلى حالة عالية (حافة صاعدة):
D
process(clk) begin if rising_edge(clk) then Q end if; end process;
VHDL (لغة وصف عتاد الدوائر المتكاملة عالية السرعة جدًا)، هي لغة مطولة، قوية الكتابة مع بناء جملة لا يشبه لغة C. وهي HDL المفضلة لوصف تصميمات الأنظمة الأكثر تعقيدًا.
Verilog أو نسختها الموسعة، SystemVerilog، هي HDL شائعة أخرى. إنها أكثر إيجازًا، وضعيفة الكتابة وأكثر مرونة، وبناء جملتها يشبه رمز C. نظرًا لسهولة تعلمها وإنشاء الأوصاف، يُفضلها المهندسون عند البدء أو عندما لا تكون دوائرهم معقدة للغاية. يُعرّف IEEE كلاً من Verilog و VHDL كمعايير صناعية.
فيما يلي مثال بسيط لبوابة AND في كلتا اللغتين. تحتوي بوابة AND على مدخلين ومخرج واحد. إذا كان كلا المدخلين يساوي 1، فإن المخرج هو 1. إذا لم يكونوا متساويين أو إذا تم تعيين كلاهما على 0، فإن المخرج هو 0.
العمليات المنطقية
هناك نوعان من العمليات في تصميم RTL. أولاً، تُجري العمليات المنطقية تقييمًا للبت وتُعدّل البيانات المخزنة في السجلات. يتم إنشاء العمليات المنطقية مثل AND و OR و NOT و XOR والإزاحة عن طريق تحديد السلوك المنطقي في HDL. يُظهر المثال أعلاه كيفية تمثيل AND في VHDL و Verilog. تُمثل العمليات المنطقية بوابات منطقية في العتاد.
العمليات الحسابية
النوع الثاني من العمليات في تصميم RTL هو العمليات الحسابية. تأخذ البيانات في السجلات وتجمعها وتطرحها وتضربها وتقسمها. يتم تمثيلها في HDL باستخدام عوامل رياضية قياسية. على سبيل المثال، سيستخدم جمع رقمين في VHDL السطر:
rst
— حيث inp1 و inp2 هما سجلان إدخال ويتم تعيين rst لسجل الإخراج. تُمثل العمليات الحسابية في RTL عناصر مادية متخصصة مثل الجامع والطارح والضارب والقاسم.
الإجراءات المتزامنة وغير المتزامنة
يمكن لتصميم RTL تمثيل تدفق البيانات بطريقة متزامنة أو غير متزامنة. بالنسبة للمتزامن، يتم تنفيذ برنامج فرعي أو تشغيله بواسطة إدخال نبضة الساعة للنظام للدالة. بالنسبة لغير المتزامن، يتم تنفيذ البرنامج الفرعي عندما تتغير قيمة واحد أو أكثر من مداخل البوابة بطريقة معينة. يتم ذلك عن طريق فحص قيم مدخلات نبضة الساعة أو المداخل غير التابعة لنبضة الساعة لمعرفة ما إذا كانت تتغير باستخدام عبارة if.