معامل الربط
جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 27 من 90.
يجمع عامل التسلسل { } بين إشارات أو ثوابت أو تعبيرات متعددة في متجه واحد أكبر. ويُستخدم كلما احتجت إلى ضم البتات معًا لتكوين قيم أعرض.
ما القيم التي تعمل مع التسلسل
يمكنك إجراء تسلسل لـ:
- الأسلاك والسجلات: أي إشارة
- الثوابت: أرقام مثل
4'b1010أو8'hFF
- التعبيرات: نتائج العمليات مثل
a + b - التكرارات: تكرار قيمة عدة مرات
يجب أن تكون جميع القيم المضمومة ذات عروض ثابتة ومعروفة.
Basic Syntax: {value1, value2, value3, ...} عرض النتيجة هو مجموع عروض جميع القيم الفردية.
أمثلة
دمج قيمتين من 4 بت في 8 بت:
reg [3:0] high, low;
reg [7:0] word;
word = {high, low}; // high يصبح الـ 4 بتات العلوية، low يصبح الـ 4 السفليةCombine مع constants:
data = {4'b1010, 4'b0000}; // 8'b10100000دمج أكثر من اثنين:
full = {a, b, c, d}; // جميع العروض تتجمعالتكرار
يمكنك تكرار قيمة عدة مرات باستخدام {n{value}}:
repeated = {4{4'b1010}}; // 16'b1010101010101010 (repeat 4 times)هذا مفيد لتمديد الإشارة:
signed_8bit = {{4{sign_bit}}, value_4bit};مثال على الشيفرة
module concatenation_demo;
reg [3:0] upper, lower;
reg [7:0] combined;
reg [11:0] repeated;
initial begin
upper = 4'b1010;
lower = 4'b1100;
combined = {upper, lower}; // 10101100
repeated = {3{4'b1010}}; // 101010101010
$display("{upper, lower} = %b", combined);
$display("{3{4'b1010}} = %b", repeated);
$finish;
end
endmoduleالناتج:
{upper, lower} = 10101100
{3{4'b1010}} = 101010101010ملاحظات مهمة
- الترتيب مهم:
{a, b}يختلف عن{b, a} - يجب أن تكون لجميع الأجزاء عروض ثابتة (من دون أرقام غير محددة الحجم)
- يمكن استخدام الربط على جانبي إسناد القيم، الأيسر والأيمن
التحدي
اكتب تعبيرات التسلسل الصحيحة لكل مهمة.
ما يجب فعله:
- Combine بين
aوbفي result بحجم 8-bit وخزّنه فيcombine1 - Combine بين
cوdوeفي result بحجم 12-bit وخزّنه فيcombine2 - Combine بين
fونسختين منgفي result بحجم 12-bit وخزّنه فيcombine3
جرّب بنفسك
module concatenation_challenge;
reg [3:0] a, b;
reg [3:0] c, d, e;
reg [3:0] f, g;
reg [7:0] combine1;
reg [11:0] combine2, combine3;
initial begin
a = 4'b1010;
b = 4'b0101;
c = 4'b1111;
d = 4'b0000;
e = 4'b1100;
f = 4'b1001;
g = 4'b0110;
combine1 = ______; // Combine a and b into an 8-bit result
combine2 = ______; // Combine c, d, and e into a 12-bit result
combine3 = ______; // Combine f and two copies of g into a 12-bit result
$display("{a, b} = %b", combine1);
$display("{c, d, e} = %b", combine2);
$display("{f, g, g} = %b", combine3);
$finish;
end
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4العوامل الجزء 1
العوامل الحسابيةعامل باقي القسمةعوامل المقارنةمراجعة - الرياضيات البسيطةالعوامل على مستوى البتات7التعيين والبوابات
التعيين المستمرالتعيين باستخدام العواملالعناصر الأساسية المدمجة للبواباتبوابات AND وOR وNOTبوابات XOR وXNORمراجعة - دائرة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الربطالمعامل الشرطيمراجعة - تحدي المعاملات11الحلقات التكرارية
حلقة Forحلقة Whileحلقة التكرارحلقة لا نهائيةتعليمة التعطيلمراجعة - أنماط الحلقات التكرارية3نظام الأعداد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ الإدخال والإخراج ثنائية الاتجاهإنشاء مثيل للوحدةربط المنافذ حسب الاسمربط المنافذ حسب الترتيبمراجعة - بناء وحدة9الكتل الإجرائية
كتلة Alwaysكتلة Initialقائمة الحساسيةإسناد حاجزإسناد غير حاجزمراجعة - Always مقابل Initial15متحكّم إشارات المرور
تعريف الحالاتمنطق آلة الحالاتتدرّب بنفسك: مترجم Verilog عبر الإنترنت