تنفيذ نظام ثلاثي بسيط

ثلاث قيم المنطق


قائمة الإنجازات


  • البوابات المنطقية الثلاثية الأساسية: T_NOT و T_OR و T_AND و T_NAND و T_NOR و T_XOR وأكثر
  • التوليف والتقليل وتحقيق وظائف ثلاثية
  • Ternary النصف الأفعى ، Ternary الكامل الأفعى ، Ternary تموج تحمل الأفعى
  • Ternary كامل الطرح ، المقارنة ، المضاعف ، المضاعف / demultiplexer
  • الوجه الثلاثي رفرف يتخبط والمزالج
  • وحدة حسابية ومنطقية ثلاثية البدائية (ALU)

الاتفاقيات والتقنيات المستخدمة


  • تم استخدام Ternary غير المتوازن (0 ، 1 ، 2) في التنفيذ
  • يتم التعبير عن 1 Trit بواسطة 2 بت: 0 ~ 00 ، 1 ~ 01 ، 2 ~ 10 (11 غير معروف)
  • ModelSim ، Quartus رئيس ، Logisim

مقدمة


كطلاب السنة الأولى من جامعة Innopolis ، أتيحت لنا الفرصة لتحقيق مشاريع خلال دورة هندسة الكمبيوتر لدينا. كانت مجموعتنا مهتمة بشكل خاص بنظام الثلاثية وعمله ، لذلك قررنا تطبيق نظام ثلاثي بسيط مع المكونات الأساسية (البوابات).


في المنطق ، يعد المنطق ثلاثي القيم (أيضًا المنطق الثلاثي ، ثلاثي التكافؤ ، الثلاثي) واحدًا من عدة أنظمة منطقية عديدة القيمة توجد فيها ثلاث قيم حقيقة تشير إلى قيمة ثالثة حقيقية وكاذبة وبعضها غير محدد.


المنطق الثلاثي هو متوافق مع MVL (متعدد القيم المنطق). ومع ذلك ، يتم استخدام ثلاث حالات منطقية فقط هي " 0 " و " 1 " و " 2 ". تم العثور على الجذر ( r ) الأمثل لرقم كسري لوغاريتم الطبيعي ( e ). يستخدم المنطق الثلاثي تمثيل الأرقام بالرمز = 3 ، مقارنة بالمنطق الثنائي الذي يستخدم r = 2 ، وبالتالي فإن العدد الأساسي الأكثر اقتصادا الصحيح والذي هو الأقرب إلى اللوغاريتم الطبيعي e ، هو الأساس 3. هذه الخاصية الخاصة للقاعدة 3 هي مصدر إلهام للكمبيوتر المبكر المصممين لبناء الكمبيوتر الثلاثي.


تم بناء أول كمبيوتر ثلاثي يعمل في روسيا في جامعة موسكو الحكومية في عام 1958. وقد صمم الكمبيوتر نيكولاي بروسنتسوف وزملاؤه. أطلقوا عليه اسم Setun ، مثل النهر الذي يتدفق بالقرب من الحرم الجامعي.


المنطق الثلاثي


دالة المنطق الثلاثي هي مناظرة F: {0،1،2} n -> {0،1،2} . سنناقش مزايا وعيوب المنطق الثلاثي على المنطق الثنائي.


عندما يكون للمنطق المنطقي 2 2 = 4 عوامل أحادية ، تؤدي إضافة قيمة ثالثة في المنطق الثلاثي إلى إجمالي 3 3 = 27 عاملين متميزين على قيمة إدخال واحدة. وبالمثل ، عندما يكون منطق Boolean له 2 2 2 = 16 عاملًا ثنائيًا متميزًا (المشغلين ذو 2 مدخلات) ، فإن المنطق الثلاثي لديه 3 3 2 = 19،683 من هؤلاء المشغلين. حيث يمكننا بسهولة تسمية جزء كبير من معاملات Boolean (وليس ، و ، أو nand ، ولا ، الحصري أو المعادل ، ضمني) ، فمن غير المعقول محاولة تسمية جميع العوامل الثلاثية المحتملة باستثناء جزء صغير منها.


مزايا ترنيري المنطق


يتيح تمثيل المنطق الثلاثي ترميز معلومات أكثر إحكاما وفعالية من التمثيل المنطقي المكافئ. تكون الوسيطة المذكورة كما يلي: إذا افترضنا أن الدائرة الرقمية بها مجموعات مدخلات N ممكنة ، فإن الدائرة الثنائية تتطلب خطوط إدخال log 2 N وتتطلب الدائرة الثلاثية خطوط إدخال log 3 N.



لذلك ، يجب أن يتطلب التنفيذ المشفر الثلاثي للوظيفة المنطقية الثنائية المحددة 0.63 مرة من خطوط الإدخال مقارنة بالتنفيذ الثنائي المقابل.


عيوب Ternary المنطق


على الرغم من أن دوائر المنطق الثلاثية يجب أن تتطلب خطوط إدخال أقل من دوائر المنطق الثنائي المكافئة ، إلا أن دوائر المنطق الثلاثية ليست حاليًا خيارًا عمليًا. الأسباب هي


  1. لا تزال تقنية تنفيذ الأجهزة الثلاثية في مستويات الاختبارات النظرية والمحاكاة والاختبارات المعملية
  2. إن تمثيل ثلاثة مستويات منطقية ثلاثية (0 و 1 و 2) باستخدام مستويات الجهد للتكنولوجيا الحالية لم يتم تعريفه بشكل فعال حتى الآن
  3. لم يتم تطوير نموذج حسابي ولغة برمجة. ومع ذلك ، فإن محاكاة نتائج تنفيذ الدائرة الثلاثية باستخدام أشباه الموصلات التكميلية لأكسيد الفلز (CMOS) ، وصمام ثنائي نفق الرنين (RTD) ، وتقنيات الأنابيب النانوية الكربونية ، مما يدل على أن المنطق الثلاثي قد يكون خيارًا للحوسبة المستقبلية.

تمثيلات مختلفة مختلفة للنظام الثلاثي


  • نظام الأرقام الثلاثي (ثلاثية ثلاثية غير متوازنة ) ، كل رقم عبارة عن رقم (رقم ثلاثي) له قيمة: 0 أو 1 أو 2
  • الثلاثي المتوازن ، يحتوي كل رقم على واحدة من 3 قيم: −1 ، 0 ، أو +1 ؛ يمكن أيضًا تبسيط هذه القيم إلى - ، 0 ، + ، على التوالي (الأكثر استخدامًا)
  • تمثيل ثنائي متكرر ، يمكن أن يكون لكل رقم قيمة −1 ، 0 ، 0/1 (القيمة 0/1 لها تمثيلان مختلفان)
  • نظام رقم ثنائي منحرف ، فقط الرقم غير الصفري الأكثر أهمية له قيمة 2 ، والأرقام المتبقية لها قيمة 0 أو 1

المزيد عن نظام الترقيم الثلاثي المتوازن


اليوم ، معظم الأجهزة مصممة للحوسبة الثنائية. إذا كان لدينا مكون إلكتروني مستقر مع ثلاث دول مستقرة ، ربما كان العالم قد تحول إلى الحوسبة الثلاثية. ومع ذلك ، هذه ليست الحقيقة اليوم. تدوين الجذر الثلاثي المتوازن له بعض الخصائص المفيدة:


  1. الانقلاب الثلاثي سهل ، فقط قم بتبادل −1 مع 1 والعكس صحيح. إذا استخدمنا مثالًا ، يتم تمثيل 24 كـ 1T0 ، و -24 كـ T10 في الترميز الثلاثي المتوازن (T هو ببساطة رمز لـ -1). هذا هو أبسط من القاعدة لتكملة الاثنين في المنطق الثنائي.
  2. يتم إعطاء علامة الرقم بواسطة "trit" الأكثر صفرية.
  3. عملية التقريب إلى أقرب عدد صحيح مماثلة لعملية الاقتطاع.
  4. الجمع والطرح هما نفس العملية (بمعنى أنك فقط تضيف الأرقام باستخدام القواعد لإضافة الأرقام)

أمثلة:
21 10 = 1T10 3 ؛ 296 10 = 11T00T 3 ؛
-24 10 = T10 3 ؛ -137 10 = T110T1 3


الحساب الثلاثي


يمكن للحساب الثلاثي أن يقدم تدوينًا مضغوطًا أكثر من الحساب الثنائي ، وقد يكون خيارًا واضحًا إذا وجدت الشركات المصنعة للأجهزة مفتاحًا ثلاثيًا.


إضافة متوازنة الثلاثي والضرر



أمثلة:


الدوائر التوافقية الثلاثية (البوابات الثلاثية)


تتكون الدائرة التوافقية من متغيرات المدخلات والبوابات المنطقية الثلاثية ومتغيرات المخرجات. إخراج الدائرة يعتمد فقط على المدخلات الحالية. تقبل البوابات المنطقية إشارات من متغيرات الإدخال وتولد إشارات الخرج. هذه العملية تحول المعلومات الثلاثية من
بيانات المدخلات المقدمة لبيانات المخرجات الثلاثية المطلوبة.


كما ذكرنا أعلاه ، يمكننا بسهولة تسمية جزء كبير من عوامل التشغيل المنطقية (لا ، و ، أو ، nand ، ولا ، الحصري أو المعادل ، ضمني) ، ومع ذلك ، فمن غير المعقول محاولة تسمية الكل باستثناء جزء صغير من الممكن مشغلي ثلاثية. سننظر في الدوائر الثلاثية التالية:


و (Min) : من الطبيعي أن يتم تمديد Boolean والوظيفة إلى وظيفة ثلاثية عن طريق التصريح بأن النتيجة صحيحة فقط إذا كان كل من المدخلات صحيحًا ، وخطأًا إذا كان أي إدخال خاطئًا ، وغير معروف بخلاف ذلك.


والجدول / الحقيقة الجدول


أو (كحد أقصى) : من الطبيعي أيضًا تمديد Boolean أو الوظيفة إلى ثلاثية عن طريق التصريح بأن النتيجة صحيحة إذا كان أي إدخال صحيحًا ، وخطأًا فقط إذا كان كلا الإدخالين خاطئين وغير معروفين بخلاف ذلك.


أو دائرة / جدول الحقيقة


الإجماع : في المنطق المنطقي ، يكون معكوس الحصري أو صحيحًا عندما يكون المدخلان متماثلان ، ومزيفان عندما يكونا مختلفين. هناك العديد من الامتدادات الطبيعية لهذه الفكرة إلى المنطق الثلاثي. أحدها هو الإجماع المنطقي لمجموعة من المتغيرات ، وهذا صحيح إذا كانت كلها صحيحة ، خطأ إذا كانت كلها خاطئة ، وغير معروفة


إجماع دائرة / جدول الحقيقة


أي : عندما يتطلب الإجماع أن يوافق كلا المدخلات قبل تأكيد أي شيء غير معروف ، يعلن مشغل قبول أي شيء عن نتيجة غير معروفة فقط إذا كان كلا الإدخالين غير معروفين أو لا يتفقان فعليًا. خلاف ذلك ، فإنه ينتقل إلى استنتاج من أي إدخال غير معروف متاح له.


أي جدول الدائرة / الحقيقة


الزيادة والنقصان : في منطق Boolean ، يمكن اعتبار العاكس على أنه زيادة أو تقليل معامل وسيطة له. 2. المنطق الداخلي ، تكون وظائف الزيادة والنقصان في المعامل 3 مختلفة تمامًا عن الانعكاس.


الزيادة والنقصان الدائرة


التوليف والتقليل وتحقيق وظائف ثلاثية


العلاقات مترابطة في نظام المنطق الثلاثي



يمكن تمثيل الدالة المنطقية الثلاثية كتعبير Max-Min. يتم تعريف تعبيرات Ternary Max-Min على النحو التالي:
المتغير : أي رمز يأخذ قيمة من المجموعة T ∈ {0،1،2} هو متغير ثلاثي.
حرفية : تمثل الحرف أشكالاً متغيرة. يتم استخدامها لتشكيل تعبيرات Max-Min.


في الأدب ، يشيع استخدام نوعين من الحرفيين: 1-post post-literals و 2-post postals. يتم تمثيل حرف Post بعد حرف واحد لمتغير x على x i ، حيث i ∈ {0،1،2}. عندما تكون x = i ، ثم x i = 1 ، وإلا x i = 0. ترد حرفية Post ذات القيمة المخفضة لمتغير واحد أدناه.


يتم تمثيل حرف المشاركة بعد خفض 2 لمتغير x كـ x i ، حيث i ∈ {0،1،2}. عندما يكون x = i ، ثم x i = 2 ، وإلا x i = 0. يتم عرض حرفية Post 2 المخفضة في متغير أدناه. يستخدم هذا المثال مجموعات مختلفة من الحرف لتكوين تعبيرات Max-Min كما تمت مناقشته سابقًا.



Minterm : عندما يتم الجمع بين القيم الحرفية لمتغيرات دالة باستخدام عملية Min ، فإن المصطلح يسمى minterm. على سبيل المثال ، بالنسبة إلى الدالة المنطقية الثلاثية المتغيرة 3 (F ، x ، y ، z) ، xyz و xz مثالان على minterms.


تعبير Max-Min : عندما يتم الجمع بين اثنين أو أكثر من minterms باستخدام عمليات Max ، فإن التعبير يسمى تعبير Max of minterms (Max-Min). على سبيل المثال ، للحصول على دالة منطق ثلاثية ثلاثية F (x ، y ، z) = xy + yz + xyz مثال على تعبير Max-Min.


يمكن دائمًا تمثيل أي وظيفة F (x ، y ، z) كـ




ثلاث طرق أساسية لتقليل الوظائف الثلاثية هي:


  1. التلاعب في التعبير الجبري كما في الجبر المنطقي.
  2. طريقة جدولي.
  3. طريقة خريطة تيرناري ك.
    لتنفيذ الدوائر الثلاثية ، من الضروري تحويل المتغير الثلاثي إلى متغير أحادي (باستخدام الجدول 2-Reduced Post Literals).

نصف الأفعى ثلاثية


يشار إلى دائرة لإضافة رقمين 1 trit باسم الأفعى نصف. الدائرة لا تنظر في حمل ولدت في الإضافة السابقة. يتم عرض عملية الإضافة في نظام المنطق الثلاثي أدناه. هنا A و B هما المدخلات والمبلغ (S) وتحمل (CARRY)
هما مخرجات.




تحليل


يتم استخدام خريطة كارنو (K-map) لتمثيل المبلغ وحمل الإخراج. تعتبر خرائط K مفيدة لتقليل الدوائر المنطقية وتحسينها. هنا يتم استخدام خريطة K من 2 المدخلات. نظرًا لعدم وجود تجميع 2 و 1'is ممكن ، معادلة الإخراج كما يلي.



التنفيذ


Ternary نصف الأفعى الدائرة / فيريلوج
module half_adder ( input [1:0] A, [1:0] B, output [1:0] sum, [1:0] carry ); wire [1:0] temp = 2'b01; wire [1:0] a0, a1, a2, b0, b1, b2; wire [1:0] i0, i1, i2, i3, i4, i5; wire [1:0] o0, o1, o2, o3, o4; wire [1:0] c0, c1, c2, c3; mask msk_1(A, a0, a1, a2); mask msk_2(B, b0, b1, b2); andgate and_1(a2,b0,i0); andgate and_2(a1,b1,i1); andgate and_3(a0,b2,i2); // partial products orgate or_1(i0, i1, o0); orgate or_2(o0, i2, o1); // f1 andgate and_4(a1,b0,i3); andgate and_5(a0,b1,i4); andgate and_6(a2,b2,i5); // partial products orgate or_3(i3, i4, o2); orgate or_4(o2, i5, o3); // f2 andgate and_7(o3,temp,o4); // 1.f2 andgate andc_0(a2,b1,c0); andgate andc_1(a1,b2,c1); orgate orc_0(c0,c1,c2); orgate orc_1(c2,i5,c3); andgate andc_2(c3,temp,carry); // carry orgate or_5(o1, o4, sum); // sum endmodule 

Ternary الأفعى الكامل


كما هو الحال مع نصف الإضافات ، يمكن وصف مرحلة واحدة من الأفعى الثلاثية الكاملة من خلال جدول رقمي يعطي المجموع SUM وينفذ CARRY كدالة في المدخلات الثلاثة A ، B ، مع الحمل في C :





تحليل


يتم استخدام خريطة كارنو (K-map) لتمثيل المبلغ وحمل الإخراج. تعتبر خرائط K مفيدة لتقليل الدوائر المنطقية وتحسينها. هنا يتم استخدام خريطة K من 3 مدخلات.




التنفيذ


Ternary الكامل الأفعى الدائرة / فيريلوج
 module ternary_full_adder ( input [1:0] A, [1:0] B, [1:0] c_in, output [1:0] sum, [1:0] c_out ); wire [1:0] temp1 = 2'b01; wire [1:0] temp2 = 2'b00; wire [1:0] a0, a1, a2, b0, b1, b2, a20; wire [1:0] i0, i1, i2, i3, i4; wire [1:0] i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17; wire [1:0] o0, o1, o2, o3, o4, o5, o6, o7, o8, o9; wire [1:0] c0, c1, c2; wire [1:0] h0, h1, h2, h3, h4, h5, h6, h7; wire [1:0] t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16; wire [1:0] g0, g1, g2, g3, g4, g5, g6, g7, g8, g9, g10, g11, g12, g13, g14, g15; mask mk_1(A, a0, a1, a2); mask mk_2(B, b0, b1, b2); mask mk_3(c_in, c0, c1, c2); andgate3 and3_1(a2,b0,c0, i0); andgate3 and3_2(a1,b0,c1, i1); andgate3 and3_3(a0,b0,c2, i2); andgate3 and3_4(a1,b1,c0, i3); andgate3 and3_5(a0,b1,c1, i4); andgate3 and3_6(a2,b1,c2, i5); andgate3 and3_7(a0,b2,c0, i6); andgate3 and3_8(a2,b2,c1, i7); andgate3 and3_9(a1,b2,c2, i8); andgate3 and3_10(a1,b0,c0, i9); andgate3 and3_11(a0,b0,c1, i10); orgate or__(a2, a0, a20); andgate3 and3_12(a20,b0,c2, i11); // note a20 andgate3 and3_13(a0,b1,c0, i12); andgate3 and3_14(a2,b1,c1, i13); andgate3 and3_15(a1,B,c2, i14); andgate3 and3_16(a2,b2,c0, i15); andgate3 and3_17(a1,b2,c1, i16); andgate3 and3_18(temp2,b2,c2, i17); orgate or_1(i9, i10, o0); orgate or_2(o0, i11, o1); orgate or_3(o1, i12, o2); orgate or_4(o2, i13, o3); orgate or_5(o3, i14, o4); orgate or_6(o4, i15, o5); orgate or_7(o5, i16, o6); orgate or_8(o6, i17, o7); andgate and_1(o7, temp1, o8); // 1.f2 orgate or_9(i0, i1, h0); orgate or_10(h0, i2, h1); orgate or_11(h1, i3, h2); orgate or_12(h2, i4, h3); orgate or_13(h3, i5, h4); orgate or_14(h4, i6, h5); orgate or_15(h5, i7, h6); orgate or_16(h6, i8, h7); orgate or_17_(h7, o8, sum); // sum // carry andgate3 and3_19(a2,b2,c2, t0); // f1 andgate3 and3_20(a0,b1,c2, t1); andgate3 and3_21(a0,b2,c2, t2); andgate3 and3_22(a0,b2,c1, t3); andgate3 and3_23(a1,b2,c0, t4); andgate3 and3_24(a2,b2,c0, t5); andgate3 and3_25(a1,b1,c1, t6); andgate3 and3_26(a1,b2,c1, t7); andgate3 and3_27(a1,b0,c2, t8); andgate3 and3_28(a1,b1,c2, t9); andgate3 and3_29(a1,b2,c2, t10); andgate3 and3_25_(a2,b0,c2, t11); andgate3 and3_26_(a2,b1,c2, t12); andgate3 and3_27_(a2,b0,c1, t13); andgate3 and3_28_(a2,b1,c1, t14); andgate3 and3_29_(a2,b2,c1, t15); andgate3 and3_9_(a2,b1,c0, t16); orgate or_17(t1, t2, g0); orgate or_18(g0, t3, g1); orgate or_19(g1, t4, g2); orgate or_20(g2, t5, g3); orgate or_21(g3, t6, g4); orgate or_22(g4, t7, g5); orgate or_23(g5, t8, g6); orgate or_24(g6, t9, g7); orgate or_25(g7, t10, g8); orgate or_21_(g8, t11, g9); orgate or_22_(g9, t12, g10); orgate or_23_(g10, t13, g11); orgate or_24_(g11, t14, g12); orgate or_25_(g12, t15, g13); orgate or_5_(g13, t16, g14); //f2 andgate and_2(g14, temp1, g15); // 1.f2 orgate or_26(g15, t0, c_out); // carry endmodule 

Ternary طارد كامل


Ternary full-Subtractor هو الدائرة التي تطرح مدخلات اثنين والاقتراض السابق. ويرد الجدول الحقيقة للحاسوب أدناه



تحليل وتنفيذ Ternary Full Subtractor




كود
 module full_subtractor( input [1:0] P, Q, b_in, output [1:0] diff, b_out ); wire [1:0] temp1 = 2'b01; wire [1:0] temp2 = 2'b10; wire [1:0] a0, a1, a2, b0, b1, b2; wire [1:0] i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17; wire [1:0] c0, c1, c2, c3; wire [1:0] h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11; wire [1:0] t0, t1, t2, t3, t4, t5, t6, t7, t8, t9; wire [1:0] p0, p1, p2; wire [1:0] q0, q1, q2; mask mk_1(P, p0, p1, p2); mask mk_2(Q, q0, q1, q2); mask mk_3(b_in, b0, b1, b2); andgate and_0(p0, q1, i0); andgate3 and3_0(p2, p1, q2, i1); orgate or_0(i0, i1, i2); andgate and_1(b0, i2, i3); // first expression andgate and_2(p0, q0, i4); andgate and_3(p1, q1, i5); andgate and_4(p2, q2, i6); orgate or_1(i4, i5, i7); orgate or_2(i7, i6, i8); andgate and_5(i8, b1, i9); // second expression andgate and_6(p1, q0, i10); andgate and_7(p0, q2, i11); andgate and_8(p2, q1, i12); orgate or_3(i10, i11, i13); orgate or_4(i13, i12, i14); andgate and_9(i14, b2, i15); // third expression orgate or_5(i3, i9, i16); orgate or_6(i16, i15, c0); //f1 orgate or_7(i10, i12, t0); orgate or_8(t0, i11, t1); andgate and_10(t1, b0, t2); // 1 expression andgate and_11(p1, q2, i17); orgate or_9(i4, i17, t3); andgate and_12(t3, b1, t4); // 1- expression orgate or_10(i4, i5, t5); orgate or_11(t5, i6, t6); andgate and_12_(t6, b2, t7); // 1-- expression orgate or_12(t2, t4, t8); orgate or_13(t8, t7, t9); andgate and_13(t9, temp1, c1); orgate or_14(c0, c1, diff); // difference orgate or_15(q1, q2, h0); andgate and_14(h0, temp2, h1); andgate and_15(h1, b2, h3); // 1 b orgate or_16(i0, i11, h4); andgate and_16(h4, temp2, h5); // 1- b andgate and_17(i17, temp2, h6); // 1-- b andgate3 and3_1(p2, q2, b1, h7); // 1--- b andgate3 and3_2(p1, q0, b2, h8); // 1---- b orgate or_17(h3, h5, h9); orgate or_18(h9, h6, h10); orgate or_19(h10, h7, h11); orgate or_20(h11, h8, b_out); // borrow endmodule 

تموج الثلاثي تحمل الأفعى


إن Ripple-carry adder (RCA) عبارة عن دارة معروفة لأداء إضافة رقمين عن طريق الإضافات الكاملة الثلاثية المتتالية. يشبه Ternary RCA تمامًا نظيره الثنائي. يتم استخدام Ternary Half Adder لإضافة الأرقام الثلاثية الأقل دلالة. يتم تلخيص الباقي من قبل Ternary Full Adders. كما ذكر من قبل ، يضيف Ternary Full Adder ثلاثة متغيرات لإدخال Ternary.



التنفيذ


كود فيريلوج: تموج الثلاثي تحمل الأفعى
 module ternary_ripple_adder ( input [15:0] input1 , input [15:0] input2 , output [15:0] out , output [1:0] overflow_trit ); wire [15:0] carry ; reg tem; assign carry[0] = tem; assign carry[1] = tem; always @(input1, input2) begin tem <= 1'b0; end generate genvar i; for (i = 0; i <= 12; i=i+2) begin full_add af({input1[i+1],input1[i]}, {input2[i+1],input2[i]}, {carry[i+1],carry[i]}, {out[i+1], out[i]}, {carry[i+3],carry[i+2]}); end full_add af({input1[15],input1[14]}, {input2[15],input2[14]}, {carry[15],carry[14]}, {out[15], out[14]}, overflow_trit); endgenerate endmodule 

المقارنة الثلاثية


دائرة المقارنة ثلاثية الكارافانات اثنين من المدخلات X 1 ، X 2 ، وبالتالي يولد الناتج X 1 = X 2 ، X 1 > X 2 ، X 1 <X 2 . ويرد الجدول الحقيقة لمقارنة الثلاثية أدناه





التحليل والتنفيذ

معادلة الخرج لـ X 1 = X 2 ، X 1 > X 2 ، X 1 <X 2 هي:




وتظهر خرائط K المقابلة أدناه


كود
 module ternary_comparators ( input [1:0] x1, x2, output [1:0] f1, f2, f3 ); wire [1:0] t0, t1, t2, t3, t4, t5, t6, t7; wire [1:0] h0, h1, h2, h3, h4, h5; wire [1:0] x10, x11, x12; wire [1:0] x20, x21, x22; mask mk_1(x1, x10, x11, x12); mask mk_2(x2, x20, x21, x22); andgate and_0(x10, x20, t0); andgate and_1(x22, x22, t1); orgate or_0(t0, t1, h0); orgate or_1(h0, x11, h1); orgate or_2(h1, x21, f1); // x1 == x2 andgate and_2(x11, x20, t2); andgate and_3(x12, x20, t3); andgate and_4(x12, x21, t4); orgate or_3(t2, t3, h3); orgate or_4(h3, t4, f2); // x1>x2 andgate and_5(x10, x21, t5); andgate and_6(x10, x22, t6); andgate and_7(x11, x22, t7); orgate or_5(t5, t6, h4); orgate or_6(h4, t7, f3); // x1<X2 endmodule 

المضاعف الثلاثي


المضاعف الثلاثي هو الدائرة التي تضاعف رقمين الإدخال ويولد المنتج المقابل. ويرد الجدول الحقيقة لهذه الدائرة أدناه:





التحليل والتنفيذ

يظهر التعبير الناتج للمنتج والحمل:




وتظهر خرائط K المقابلة:


كود
 module ternary_multiplier ( input [1:0] A, [1:0] B, output [1:0] product, [1:0] carry ); wire [1:0] temp = 2'b01; wire [1:0] a0, a1, a2, b0, b1, b2; wire [1:0] i0, i1, i2, i3, i4, i5; wire [1:0] o0, o1, o2, o3, o4; mask msk_1(A, a0, a1, a2); mask msk_2(B, b0, b1, b2); andgate and_1(a1,b2,i0); andgate and_2(a2,b1,i1); orgate or_1(i0, i1, o0); // f1 andgate and_4(a1,b1,i3); andgate and_5(a2,b2,i4); orgate or_3(i3, i4, o2); andgate and_3(temp,o2,o3); orgate or_4(o3, o0, product); // product andgate andc_0(a2,b2,o4); andgate andc_1(temp,o4,carry); // carry endmodule 

المضاعفات ثلاثية الأبعاد ومزيلو الإرسال


المضاعف عبارة عن دائرة بها عدة مدخلات ومخرج واحد. ومن المعروف أيضا باسم فك. يتم تحديد وظيفة الإخراج من معدد بواسطة عدد خطوط وظيفة. وبالتالي لمدة 2 trit
المضاعف الناتج سيكون 3 2 = 9 واثنين سيكون خطوط اختيار وظيفة. معدد أي وظيفة
اختيار منطق اختيار 1 من أصل 9 وظائف كمخرج. يتم تنفيذ وظيفة تحديد المنطق باستخدام بوابات المنطق. معادلة الخرج لمنطق اختيار الوظيفة هي:



تحليل


يشار إلى أداة إزالة الشوائب على أنها مشفر. وظيفتها عكس وظيفة المضاعف. يقبل الإدخال الفردي ويوزعه على عدة مخرجات


بسيطة ثلاثية د مزلاج


على الرغم من أن تصميم الدوائر التي تنفذ المنطق الثلاثي الوراثي واضح ومباشر ، إلا أن تصميم عنصر الذاكرة الثلاثية البسيط والقوي (أي المزلاج) الملائم لتنفيذ الدوائر المتكاملة (IC) كان أمرًا صعبًا. ومع ذلك ، يمكن الحصول على مزلاج ثلاثي بسيط عن طريق استبدال بوابات NOR أو NAND الثنائية المستخدمة مع بوابات T_NOR الثلاثية أو T_NAND المقابلة.



Ternary D بسيط فليب فلوب


تتحقق لعبة D-Flip-Flop (FFF) الخاصة بالرقيق الرئيسي (MS) من الرقيق على أساس المزالج الثلاثية D. هذا مشابه للطريقة التي يتم بها تحقيق ثنائي D Flip-Flop (FF) باستخدام المزالج الثنائية D. المخطط المنطقي ووصف العملية لـ MS binary D flip-flop معروفان جيدًا. من أجل تنفيذ MS ternary D FFF ، استبدلنا المزالج الثنائية D بمزالج D الثلاثية (تتحقق مع البوابات النابضة ثلاثية الحد الأدنى من اثنين من المدخلات - NAND) والعاكسون الثنائيين مع المحولات الثلاثية البسيطة (STI). يتم عرض جداول الحقيقة لكل من دوائر NAND الثلاثية ودارات STI الثلاثية


جدول الحقيقة لدوائر nand و sti


بالنسبة إلى MS ternary D FFF مع ساعة ثنائية ، تكون البيانات ثلاثية (0 و 1 و 2 منطق) والساعة ثنائية (منخفضة وعالية - في منطقتنا
التنفيذ ، 0 و 2 المنطق). مرض التصلب العصبي المتعدد الثالوث مد FFF مع
الساعة الثنائية يمكنها قراءة البيانات عندما تنتقل الساعة من الأدنى إلى
عالية (حافة إيجابية) أو من أعلى إلى منخفض (حافة سلبية) ، حسب
على عدد من الأمراض المنقولة جنسيا.


مدخلات ternary D FFF هي Data و Clk ، والمخرجات هي Q و Not_Q. إشارة الساعة ثنائية ويتم الإشارة إلى مستويات المنطق 0 و 2 ، للحفاظ على المراسلات مع التنفيذ الكهربائي


المحاكاة







وحدة حساب والمنطق الثلاثي (1-بت)


وحدة المنطق الحسابي الثلاثي (ALU) هي دائرة رقمية تستخدم لتنفيذ العمليات الحسابية والمنطقية. وهو يمثل لبنة البناء الأساسية لوحدة المعالجة المركزية (CPU) لجهاز كمبيوتر ثلاثي. تقوم ALU بتنفيذ العمليات الحسابية مثل عمليات الجمع والطرح والضرب والمنطق ، قارن بين NAND و NOR و NOT و AND و OR. يظهر أدناه بنية بدائية لـ 1 trit ALU



الجدول الحقيقة ويعمل ل T-ALU


لبنات البناء الأساسية لوحدة ALU هي وحدات فك ترميز ، وظيفة تحديد منطق (معدد) وبوابة نقل ووحدات معالجة منفصلة. يحدد منطق اختيار الوظيفة 1 من أصل 9 وظائف مدرجة حسب حالة المنطق في خطوط تحديد الوظيفة W و Z.


وترتبط خطوط الإخراج من منطق الاختيار إلى TG (بوابة Ternary) المرتبطة بكل وحدة. يتم تحديد أي وحدة نمطية فقط عندما يتم تمكين TG المقترن وإلا يتم عزلها عن خطوط البيانات. على سبيل المثال ، إذا كانت المدخلات من سطور محددة W و Z = 0 ، يكون الناتج E 0 من منطق التحديد مرتفعًا (2) بينما E 1 ، إلى E 8 منخفض (0) ، لذلك ، سيتم تمكين TG المرتبط بوحدة adder في السماح بالبيانات
الخطوط التي سيتم توصيلها بوحدات الأفعى بينما يتم عزل الوحدات الأخرى عن خطوط البيانات.


أخيرًا ، من خلال تتابع شرائح ALU n / 2 trit ، يمكن تشكيل AL n nit.

Source: https://habr.com/ru/post/ar431726/


All Articles