تُعدّ أجهزة المنطق القابلة للبرمجة المعقدة (CPLD) قطعة أساسية من مكونات الأجهزة في مجموعتك. وكما يوحي الاسم، يمكنك برمجة هذه الرقاقات لتوفير وظائف المنطق التي تحتاجها. قد يكون ذلك لاستبدال الرقاقات القديمة، أو لمجرد التعلّم وتجربة تقنيات مختلفة. وما أفضل من استخدام أجهزة CPLD وتجربتها للتعلّم؟
صممتُ وحدة CPLD لأتمكن من توصيلها بأجهزة متعددة، بما في ذلك لوحات التجارب الإلكترونية، لكنني أخطأت. يبدو أن مساحة التوصيل المتاحة على لوحة التجارب الإلكترونية هي 1.1 بوصة. لقد جعلتُ مساحة التوصيل بوصة واحدة، مما لا يترك مجالًا لصف من الأسلاك على كلا الجانبين. يا إلهي!
لكن دعني أعود إلى الوراء وأوضح المزيد عما أفعله، أريد أن أصنع منطقًا قابلًا للبرمجة يمكن بناؤه كمجموعة أدوات، ويمكن لحامه بسهولة في المنزل، ويمكن برمجته في دائرة، ويمكن أن يعمل بجهد 3.3 أو 5 فولت.
لتحقيق سهولة اللحام، استخدمتُ مكون CPLD قديمًا، متوفرًا أيضًا بإصدارات 3.3 فولت و5 فولت، ويحافظ على برمجته بغض النظر عن مصدر الطاقة. الدائرة المنطقية نفسها عبارة عن دائرة متكاملة CPLD من سلسلة Altera Max، متوفرة بإصدارين، مناسبة للوحات الدوائر ذات 32 أو 64 خلية ماكرو. خلايا الماكرو هي اللبنات المنطقية الأساسية التي تُبرمج باستخدام "مصطلحات" منطقية، ثم تُربط بخلايا ماكرو أخرى عبر وصلات قابلة للبرمجة.
بالنظر إلى المخطط، يمكنك أن ترى أنه لا يحتوي على الكثير من المحتوى: بشكل أساسي CPLD، ودائرة البرمجة داخل الدائرة، والمذبذب الذي يقود منطق CPLD.
يُطلق على هذا الجزء اسم EPM7032 وEPM7064، ويستخدم حامل رقاقة بلاستيكي ذو 44 طرفًا (PLCC)، ويُسمى أحيانًا حامل J نظرًا لشكل طرف التوصيل. يمكن إدخال هذه العبوة في مقبس ذي فتحات أو لحامها مباشرةً على لوحة الدوائر المطبوعة (PCB).
يحتوي على مذبذب مدمج، مما يسمح لـ CPLD بتنفيذ العمليات بسلاسة وإنشاء عدادات سريعة ذاتيًا دون الحاجة إلى ساعة خارجية. في حال توفر ساعة خارجية، يمكن استخدام الساعة عالية السرعة الموجودة على الوحدة لإنشاء إشارة ساعة عند كل حافة صاعدة أو هابطة للساعة الخارجية، مع الالتزام بإرشادات CPLD/FPGA، أي يُنصح باستخدام شبكة الساعة العالمية الداخلية بدلًا من "غير المتزامن" لتشغيل مدخل الساعة. يتراوح جهد التغذية المقنن لهذا المذبذب بين 1.8 و 5.5 فولت.
إذا شاهدت الفيديو، سترى أنني أناقش تفضيلي الشخصي لكيفية التعامل مع دبوس "INH" على المذبذب؛ ببساطة، بعد أن أتحقق من أن ورقة المواصفات قانونية، أميل إلى تركه عائمًا.
عند التعامل مع هذه الوظائف، من بين الأسباب التي تبادرت إلى ذهني عدم رغبتي في توصيل دبابيس الإدخال مباشرةً بخطوط الطاقة (إن أمكن). أي أنني أفضل استخدام مقاومات متسلسلة للحد من التيار أثناء التغيرات المفاجئة، حتى وإن لم يكن ذلك ضرورياً.
على مر السنين، لاحظتُ بعض المشاكل في الإنتاج (الكميات الكبيرة)، وأحيانًا، تتسبب عمليات إعادة تشغيل الطاقة في ارتفاع جهد الأطراف المتصلة مباشرةً بخط الطاقة عن جهد الشريحة نفسها، وهذا أمر غير مرغوب فيه. لذا، يُنصح بتوصيل الطرف بخط الطاقة عبر مقاوم (سواءً كان مقاومًا للطاقة أو الأرضي)، ما يسمح للمستخدمين بتغيير رأيهم واستخدام الطرف لاحقًا. ينطبق هذا بشكل خاص على الأبواب غير المستخدمة، وكما تعلمون، لا ينبغي أبدًا ترك هذه الأبواب غير موصولة. باستخدام مقاوم سحب لأعلى، يمكنكم توصيل الإشارة واستخدام البوابة دون الحاجة إلى قطع مسارات النحاس.
يشكل الموصل ذو العشرة أطراف وبعض المقاومات دائرة البرمجة. لو كانت جميع المقاومات من نوع مقاومات السحب لأعلى، لاستعملت شبكة مقاومات، ولكن للأسف، إحداها موصولة بالأرض.
لبرمجة وحدة CPLD مستقلة كهذه، يلزم وجود مبرمج متخصص. من السهل عليّ قول ذلك، لأنني عادةً ما أمتلك بعض المبرمجين، ولكن إن لم يكن لديك واحد، فلن يكون الأمر صعبًا للغاية. يُباع جهاز "Altera USB Blaster" المعتمد بسعر 50 دولارًا أمريكيًا، ويمكن شراؤه من Digikey وغيرها من المواقع. لديّ عدة نسخ مقلدة من eBay، إحداها تدعم Altera وXilinx وLattice في آنٍ واحد. يوجد مشروع وشفرة برمجية على الإنترنت يمكن استخدامهما لصنع نسختك المقلدة، وسأدرجهما في قائمة الفيديوهات التي قد أتطرق إليها بخصوص مشروع صنع نسخ مقلدة من المبرمجين. سأعرض أيضًا تصميمًا للوحة درع يمكن من خلالها برمجة اللوحة الأم، وArduino، وPIC، وغيرها.
البرنامج اللازم لتجميع وبرمجة وحدة CPLD متوفر مجانًا من شركة Altera، لكن هذا الجزء القديم يتطلب الإصدار 9.1 القديم. والخبر السار هو أنه كان إصداري المفضل. كان يحتوي على محلل توقيت سهل الاستخدام، لكنه أُزيل في إصدار لاحق.
لوحة الدوائر المطبوعة (PCB) ذات تصميم بسيط مزدوج الجوانب، وطالما أن لوحة الدائرة الكهربائية مناسبة لها، فأنا أميل إلى استخدام النحاس للتأريض وأحيانًا لتزويد الطاقة. أحيانًا يصبح صب النحاس غير متقن لدرجة أنه قد يتسبب في مشاكل أو نتائج نهائية غير دقيقة، لذا فإن صب النحاس أداة مفيدة، ولكن يجب التحكم بها.
اليوم، تحتوي العديد من برامج التصميم بمساعدة الحاسوب (إن لم يكن معظمها) على عروض ثلاثية الأبعاد للمنتج النهائي، مع العلم أن دقة هذه الصور تعتمد على دقة النماذج ثلاثية الأبعاد المستخدمة لتمثيل الأجزاء. هنا يمكنك رؤية المكان الذي اخترت فيه النموذج ثلاثي الأبعاد لمقبس ذي 44 سنًا، وموصل البرمجة، والمذبذب. إليك بعض برامج التصميم ثلاثي الأبعاد التي أفضل استخدامها:
تمتلك العديد من الشركات نماذج ثلاثية الأبعاد لمكوناتها. وتُعدّ شركة موليكس مثالاً واحداً فقط على الشركات التي حققت نجاحاً باهراً في هذا المجال.
الخطأ الذي ارتكبته لا يؤثر على الوظيفة من ناحية المظهر، وليست هذه هي المشكلة الرئيسية، أي أنها غير مناسبة للوحة تجارب واحدة بدون لحام.
بمجرد أن فكرت في مشاركة التصميم مع أي شخص، لم أكن راضيًا على الفور عن رموز المخطط التخطيطي لـ CPLD وتوزيع دبابيس الموصل ذي الأربعين دبوسًا، والذي يمثل حجمه الإجمالي. استخدمت رمز موصل ذي صفين بأربعين دبوسًا وعدّلته ليناسب حجم بوصة واحدة، لكن أرقام الدبابيس ليست 1، 2، 3، 4... بل هي مرقمة من الجانب بدءًا من 1 كما في حزمة DIP، ومن 3 إلى 7... تمامًا كما في موصلات الكابلات الشريطية. لذا، فإن هذا التوزيع غير بديهي لتحديد كيفية توصيل الوحدة واستكشاف الأخطاء وإصلاحها.
وبالمثل، فإنّ تخصيصات دبابيس CPLD مُربكة بعض الشيء، وقد استخدمتُ مجموعة من الأدوات المساعدة التي تعتمد على لغة وصف مسح الحدود (BSDL) لإنشاء الرموز. تُوفّر معظم الشركات المُصنّعة الكبرى ملفات BSDL لمكوناتها الرئيسية، مما يسمح لك بإنشاء الرموز والحزم (بشكل شبه تلقائي). وكأيّ عملية أتمتة، يجب النظر إليها كأداة وقد تتطلّب بعض التعديلات للحصول على أفضل النتائج. في هذه الحالة، تركتُها تُدرج الدبابيس بالترتيب الأبجدي، وهو ترتيب عشوائي تقريبًا عند تتبّع الدبابيس على اللوحة. لا يسعني إلاّ القول إنني كنتُ قلقًا للغاية في ذلك اليوم.
ستدفع ثمن هذه الاختصارات لاحقًا. عندما أُعدّل هذه الوحدة، سأحدد موضع الدبابيس وأُعطيها ما يُطابق موضع القطعة نفسها، بحيث يكون تحديد مكان وضع مسبار راسم الإشارة سهلًا بمجرد إلقاء نظرة سريعة على رمز المخطط.
عند استخدام لوحات الدوائر، توجد تحسينات أخرى، بعضها جمالي وبعضها عملي. يجب أن يكون مؤشر الدبوس رقم 1 أكثر شيوعًا في العديد من العبوات، وأُفضّل دائمًا وجود نقطة تأريض بسيطة لتوصيل سلك تأريض راسم الإشارة أو سلك الفولتميتر أو مقياس الفولتية. قد أُضيف ذلك عن طريق إضافة موصل ثنائي الدبابيس بحيث يُمكن تطبيق الطاقة والتأريض مباشرةً على اللوحة بدلًا من تثبيتهما على الدبابيس السفلية.
قبل تعديل لوحة الدائرة، أردت التأكد من سلامة عملها من الناحية الفيزيائية والجمالية. بعد تشغيلها والتأكد من عمل المذبذب بشكل صحيح، قمت بتوصيل المبرمج. على الرغم من أن إصدار 3.3 فولت أحدث من برنامج البرمجة، إلا أنه تعرف على وحدة CPLD وعرضها كجهاز "غير معروف".
بعد ذلك، أنشأت عدادًا في برنامج Quartus وخصصت له أرقامًا للمنافذ. وقد أكدت سرعة التجميع والتنزيل، بالإضافة إلى وظيفة العداد التي رصدها راسم الإشارة، جدوى التصميم.
دائرة الاختبار السريع في لغة Verilog بسيطة للغاية. الكود مُدرج أدناه. يمكنك تنزيل ملف ZIP يحتوي على المخطط ودائرة اختبار Verilog كمشروع Quartus II (يتطلب الإصدار 9.1).
كما ذكرتُ سابقًا، سأجري مراجعة ثانية للوحة الدائرة الكهربائية لأولي مزيدًا من الاهتمام للتفاصيل اللازمة عند مشاركة التصميم أو إجراء أي عملية استكشاف للأعطال. بما أنني بحاجة إلى ضبط عرض الموصل السفلي على 0.9 بوصة أو أقل، يمكنني الاستمرار في ضبطه على 0.6 بوصة، وهو عرض قياسي لحزمة DIP "العريضة". هذا يعني أن تبرز الدبابيس السفلية من قاعدة مقبس CPLD. لن أستخدم هذه الطريقة في الإنتاج الفعلي لأنها جُمعت يدويًا في ذلك الوقت، ولكن كان أحد الأهداف هو تصميم مجموعة لحام يدوي. يكمن التنازل في اللحام اليدوي في أن المذبذب يحتاج إلى أن يكون في غلاف SMD للتثبيت السطحي، فالنسخة ذات الثقوب كبيرة جدًا وعادةً لا تدعم نطاق الجهد المطلوب.
هل من الممكن استخدام هذه الوحدات لبناء حاسوب بسيط كامل؟ أعتقد أنني بحاجة إلى إضافة ذاكرة.
هههه... نعم، يعتمد الأمر على نوع الحاسوب. مع ذلك، تتأثر وحدات التحكم الدقيقة/الحواسيب الصغيرة "الحقيقية" بوصلات دبابيس الوحدة، مما يعني أنه لا يمكنك الحصول على معلومات كافية من الوحدة للقيام بأي شيء مفيد.
لقد صنعت وحدة تحكم كاملة في توقيت ووضع كاميرا NTSC بحجم 64، لذلك لا حاجة إلى معالج.
إن لغة Verilog الهيكلية ولغة HDL المستخدمة في كتاب Nand to Tetris متطابقة إلى حد كبير.
لماذا تُصنع الأجزاء ذات الثقوب؟ لحام 0805 سهل! الآن هو الوقت المناسب لكل هاوٍ لتعلم هذه المهارة.
إذا جعلت المقبس العلوي يتداخل مع الدبابيس الملحومة من الأسفل، فيمكنني استخدام "6 مراكز (محاكاة شريحة ذات 40 دبوسًا)" أو قطريًا، وما إلى ذلك. سيكون هذا لحامًا يدويًا للمكونات الخاصة بلحام الأسلاك السفلية. المقبس العلوي خلف الأرجل.
لكن من الصعب على المبتدئين لحامها من الأسفل. عندما ألحم موصلات لوحة الدوائر المطبوعة (PCB) للوحة التجارب (يمكن استخدام لوحات محولات SMD الرخيصة المتوفرة على eBay في النماذج الأولية)، أقوم بإدخال الموصلات في لوحة التجارب، ثم أضع لوحة الدوائر المطبوعة عليها، وبذلك يصبح اللحام سهلاً. إنها مناسبة جدًا للوحات التجارب. أما إذا احتجت إلى لحامها من الأسفل، فسيكون الأمر أكثر صعوبة.
إذا كان جهاز CPLD في المنتصف (قد يكون من الأسهل توصيله)، فيمكن تركيبه بشكل قطري دون تداخل، أو أن يكون هناك 4 صفوف، أو يمكن أن يكون جهاز CPLD على جانب واحد:
شكراً على نصيحتك بإدخال الموصل في لوحة التجارب قبل اللحام. موصلي غير مستقر قليلاً.
ماذا عن استخدام دبابيس لوحة التجارب من نوع DIP في أحد طرفيها، ومقبس الشريحة من نوع "دونغل" في الطرف الآخر؟ يمكن تعليق الشريحة على طرف لوحة التجارب، مما يجعل التوصيلات ضيقة.
|####### ******************** |. نعم، قررتُ استخدام النسخة المجانية من Altera، تمامًا كما هو الحال مع Xilinx وLattice. أحتاج إلى إنهاء عملية البحث مع Al Williams لفهم ما يدعمه الدعم المفتوح، والذي يجب أن يشمل الخصائص المحددة لسلسلة الأجهزة. مع ذلك، فقد أنجزتُ الكثير باستخدام النسخة المجانية.
نعم، أعتقد أنك توضح أن الدائرة المنطقية القابلة للبرمجة (CPLD) تتداخل مع الأطراف. إذا فهمتُ الأمر بشكل صحيح، فقد يبدو هذا كالإصدار الثاني. عند تصميم الإنتاج (الكمي)، أتجنب دائمًا خطوة "التجميع باللحام اليدوي" لأنها تتداخل (في الواقع، أطراف اللحام على الجانب غير المُكوّن). (هذا مُكوّن مُلحّم يدويًا بالفعل)، لكن هذه مجرد مجموعة صغيرة، وليست تصميمًا مُوجّهًا للإنتاج. لديّ بعض العادات التي يصعب التخلص منها في سني. 
أعتقد أن لوحة دوائر على شكل حرف T مزودة بـ CPLD ومكونات سلبية ذات جزء عريض على شكل حرف T ستكون مفيدة جدًا عند تعليقها على حافة لوحة التجارب. شيء مشابه لـ Adafruit RasPi T-Cobbler (http://www.adafruit.com/products/2028). هذا سيجعل معظم مساحة لوحة التجارب متاحة.
لسوء الحظ، سيؤدي إيقاف إنتاجه إلى الحد بشكل كبير من استخدامه في المشاريع الجانبية، تمامًا مثل جميع مولدات الوظائف التي تعتمد على XR2206 و ICL8038.
فكرة مثيرة للاهتمام. تعجبني هاتان الشريحتان. CPLD ليست قديمة، إنما هي مجرد طريقة أرخص لشرائها بجهد 3.3 فولت.
بخصوص كلامك "غير المنطقي"... أنت لم تصمم لوحة جديدة خصيصًا لوضعها على لوحة التجارب. ببساطة، ضع السلك على لوحة التجارب أولًا، ثم ضع الدائرة المتكاملة (CPLD) على السلك. أو، إذا كان بإمكانك فصل أسلاك الطاقة والأرضي من إحدى اللوحتين، فاستخدم لوحتي تجارب.
بخصوص برنامجي Altium وEagle، هل فكرت في KiCad؟ لا توجد قيود تجعلك تفضل Altium على Eagle، وهو يُولّد افتراضيًا أخطاء DRC لجميع المنافذ غير المتصلة. إذا أردت فتح منفذ، عليك تحديد ذلك يدويًا (ربما يكون ذلك للمدخلات فقط، وليس للمخرجات، ولم يتم التحقق من ذلك بعد). ميزة أخرى رائعة هي سهولة تعلمه. لم يستغرق الأمر سوى بضع ساعات، وقد ساعدني الدليل التمهيدي الممتاز على البدء.
أُفضّل استخدام مُقاومات SMD (الجزء الأكبر) فوق الثقوب النافذة. فهي أسهل في الاستخدام، إذ لا تحتاج إلى تدوير لوحة الدوائر المطبوعة باستمرار (حدثت بعض الأخطاء الساذجة بسبب عكس التصميم...). كما لا تحتاج إلى قطع طرف المُقاوم. عند مشاركة تصميم واحد، يُمكن وضع عدة مُقاومات SMD بسهولة على لوحة الدوائر المطبوعة أو على مُكوّن واحد. (مع العلم أن هذا يُعقّد التصميم قليلاً).
استخدمتُ دليل "KiCad Getting Started" بصيغة PDF. النسخة القديمة التي استخدمتها تتكون من ٢٩ صفحة، بينما النسخة الأحدث تتكون من ٥٢ صفحة. يمكنك إيجاده في دروس أخرى (بما في ذلك روابط الفيديو): http://kicad-pcb.org/help/tutorials/
أعلم أن [كريس جيميل] من Hackaday و The Amp Hour قد أنتج سلسلة دروس حول Kicad http://kicad-pcb.org/help/tutorials/
قد يكون برنامج Kicad مفيدًا، دعني أرى ما سيحدث في الإصدار الثاني. شكرًا لك على اقتراحاتك. تُعدّ المدخلات غير المتصلة ميزة جيدة لقواعد التصميم (DRC/ERC)، وبالنسبة للموصلات وغيرها من العناصر التي تُبقيها برمجية أو مدخلات/مخرجات، يُمكن عادةً تجنّب معظم رسائل انقطاع الاتصال في برامج التصميم بمساعدة الحاسوب (CAD).
أجرِ اختبارًا سريعًا وأضف الموصل إلى جدول فارغ، ثم شغّل التعليقات التوضيحية وقواعد التصميم. وقد أظهر لي أخطاءً في قواعد التصميم لكل دبوس. مع ذلك، فإن تحديد الدبابيس غير المتصلة المعروفة أمرٌ في غاية البساطة.
اضبطه على الوضع السلبي. عليّ البحث (تحرير المكون -> التحرير باستخدام محرر المكتبة). يفتح محرر المكتبة ويُحمّل المكون في نافذة منفصلة، حيث يمكنك التحقق من أي جزء منه أو تغييره. يمكن حفظ المكون المُعدّل أو تحديثه في مخططك. هذا يُسهّل تغيير المكونات للغاية. لا أهتم كثيرًا بالمكتبة. على سبيل المثال، إذا كنت تستخدم cpld، فستحتاج إلى تعيين أسماء ذات دلالة للأطراف. والأهم من ذلك، توجد واجهة جيدة لتصميم مكوناتك الخاصة.
في برنامج KiCad's ERC، تُعتبر الدبابيس "غير المتصلة" نوعًا مختلفًا عن الدبابيس "الخاملة"، وستُنتج جميع الدبابيس "غير المتصلة" أخطاءً. يُمكن تعديل طريقة عمل ERC بسهولة وفقًا لتفضيلاتك: الأدوات -> مدقق القواعد الكهربائية -> الخيارات.
تاريخ النشر: 18 نوفمبر 2021





