Складний програмований логічний пристрій (CPLD) – це важливий елемент вашого обладнання. Як випливає з назви, ви можете запрограмувати ці мікросхеми для забезпечення необхідних логічних функцій. Це може бути заміна застарілих мікросхем або просто спосіб вивчити та випробувати різні технології. Що може бути кращим способом навчитися, ніж використовувати CPLD та спробувати його?
Я створив модуль CPLD, щоб мати змогу підключати його до багатьох пристроїв, зокрема до безпаяльних макетних плат, але я щось накоїв. Здається, що доступний простір для підключення на безпаяльній макетній платі становить 1,1 дюйма. Я зробив посадочне місце шириною 1 дюйм, не залишивши місця для ряду проводів з обох боків. Емм.
Але дозвольте мені повернутися назад і показати більше про те, що я роблю. Я хочу створити програмовану логіку, яку можна зібрати як комплект, легко паяти вдома, програмувати в схемі та працювати від 3,3 або 5 вольт.
Щоб реалізувати простий у паянні комплект, я використав старий CPLD-компонент, який також доступний у версіях на 3,3 В та 5 В і зберігатиме своє програмування незалежно від джерела живлення. Сама логіка являє собою CPLD-мікросхему серії Altera Max, доступну у двох версіях, що підходять для друкованих плат з 32 або 64 макроелементами. Макрокліти – це основні логічні структурні блоки, які програмуються за допомогою логічних «термінів», а потім з'єднуються між собою з іншими макроелементами за допомогою програмованих з'єднань.
Дивлячись на схему, можна побачити, що вона не має багато вмісту: в основному CPLD, схема внутрішньосхемного програмування та генератор, який керує логікою CPLD.
Ця деталь називається EPM7032 та EPM7064, використовує 44-контактний пластиковий тримач виводів (PLCC), який іноді називають J-контактним виводом через J-подібну форму виводу. Цей корпус можна вставити в наскрізний отвір або безпосередньо припаяти до друкованої плати.
Містить вбудований генератор, тому CPLD може виконувати операції з відображенням стану та створювати швидкі лічильники самостійно без потреби в зовнішньому тактовому сигналі. Якщо зовнішній тактовий сигнал доступний, високошвидкісний тактовий сигнал на модулі можна використовувати для створення події тактового сигналу на кожному наростаючому або спадаючому фронті зовнішнього тактового сигналу, дотримуючись при цьому рекомендацій CPLD/FPGA, тобто вам дійсно слід використовувати внутрішню глобальну мережу тактового сигналу замість "асинхронного" керування входом тактового сигналу. Номінальна напруга живлення цього генератора становить від 1,8 до 5,5 вольт.
Якщо ви переглянете відео, то побачите, що я обговорюю свої особисті вподобання щодо роботи з виводом "INH" на генераторі; простіше кажучи, після того, як я перевірю, чи відповідають специфікації правилам, я схильний залишати це питання без змін.
Коли я мав справу з такими функціями, серед причин, що спадали мені на думку, була моя неприязнь до підключення вхідних контактів безпосередньо до шин живлення (якщо це можливо). Тобто, я віддаю перевагу використанню послідовних резисторів для обмеження струму під час перехідних процесів, навіть якщо це не потрібно.
Протягом багатьох років я спостерігав деякі проблеми у виробництві (великі партії), і іноді такі речі, як циклічне ввімкнення та вимкнення живлення, дозволяли контактам, безпосередньо підключеним до шини живлення, мати вищу напругу, ніж сам чіп, що погано. Зрештою, підключіть контакт до шини живлення через резистор (живлення чи заземлення), і люди можуть передумати та використовувати контакт пізніше. Це особливо актуально з мого досвіду з невикористаними дверима, ви, мабуть, знаєте, що ці двері ніколи не слід залишати плаваючими або непідключеними. Використовуючи підтягуючий резистор, ви можете підключити сигнал і використовувати затвор, не обрізаючи мідні доріжки.
10-контактний роз'єм і кілька резисторів утворюють схему програмування. Якби всі резистори були підтягуючими, я б використав мережу резисторів, але, на жаль, один з них заземлений.
Для програмування такого незалежного CPLD потрібен спеціалізований програматор. Мені легко це сказати, бо зазвичай у мене під рукою лежить кілька, але якщо у вас його немає, то зайти в гру буде не надто боляче. Схвалений "Altera USB Blaster" продається за 50 доларів і його можна придбати на Digikey та в інших місцях. У мене є кілька клонів з Ebay, один з яких є клоном, що одночасно підтримує Altera, Xilinx та Lattice. В Інтернеті є проект і код, які можна використовувати для створення власного клону, я вкажу його у своєму списку можливих відео до проекту створення клонів програматора. Я також покажу конструкцію щита, в якому можна програмувати материнську плату, Arduino, PIC тощо.
Програмне забезпечення, необхідне для компіляції та програмування CPLD, вільно доступне від Altera, але для цієї старої частини потрібна стара версія 9.1. Гарна новина полягає в тому, що це була моя улюблена стара версія. Вона мала інтуїтивно зрозумілий аналізатор синхронізації, але його видалили в пізнішій версії.
Друкована плата має просту двосторонню конструкцію, якщо плата підходить до неї, я зазвичай використовую мідь для заземлення, а іноді й для живлення. Іноді заливка настільки пошкоджена, що це може спричинити проблеми або неакуратний кінцевий результат, тому заливка міддю знову ж таки є інструментом, але з ним потрібно керувати.
Сьогодні багато (якщо не більшість) пакетів програмного забезпечення CAD містять 3D-зображення кінцевого продукту, хоча точність зображень залежить лише від точності 3D-моделей, що використовуються для представлення деталей. Тут ви можете побачити, де я вибрав 3D-модель для 44-контактного роз'єму, роз'єму програмування та генератора. Ось деякі 3D-пакети, які я люблю використовувати:
Багато компаній також мають 3D-моделі своїх компонентів. Molex — лише один із прикладів компанії, яка добре попрацювала в цій галузі.
Помилка, яку я зробив, не впливає на функціональність, як-от естетику, і не є головною проблемою, тобто вона не підходить для однієї безпаяльної макетної плати.
Щойно я подумав, що можу поділитися цим дизайном з кимось, мене одразу ж незадовольнили схематичні символи CPLD та розташування контактів 40-контактного роз'єму, що відповідає його загальному розміру. Я взяв символ 40-контактного дворядного роз'єму та налаштував його під розмір 1 дюйм, але номери контактів не 1, 2, 3, 4... а пронумеровані 1 збоку, як у DIP-корпусі 3, 5, 7... як у роз'ємів для шлейфового кабелю. Тому це неінтуїтивно зрозумілий розмір для визначення способу підключення до модуля та усунення несправностей.
Так само призначення виводів CPLD трохи заплутане, і я використовував набір утиліт, які використовують мову опису граничного сканування (BSDL) для створення символів. Більшість великих постачальників мають файли BSDL для своїх основних компонентів, що дозволяє (напів)автоматично створювати символи та корпуси. Як і будь-яку автоматизацію, її потрібно розглядати як інструмент, і для досягнення найкращих результатів може знадобитися подальша допомога. У цьому випадку я дозволив їй перерахувати виводи в алфавітному порядку, що майже випадково при відстеженні виводів на платі. Можу лише сказати, що того дня я дуже хвилювався.
За ці скорочення ви розплачуєтеся колись у дорозі. Коли я збираюся модифікувати цей модуль, я визначу та надаю йому розташування виводів, яке відповідає самій деталі, тож знати, куди поставити щуп осцилографа, так само просто, як глянути на символ схеми.
Під час використання друкованих плат є й інші покращення, які переважно естетичні або корисні. Індикатор контакту 1 має бути більш поширеним у кількох корпусах, і я завжди віддаю перевагу простій точці заземлення для підключення заземлення осцилографа або виводу VOM. Я міг би додати це, додавши двоконтактний роз'єм, щоб живлення та заземлення можна було подавати безпосередньо на плату, а не затискати їх до нижніх контактів.
Перш ніж модифікувати друковану плату, я хочу переконатися, що вона працює належним чином з урахуванням фізичних та естетичних недоліків. Після ввімкнення живлення та підтвердження того, що генератор працює належним чином, я підключив програматор. Хоча версія на 3,3 В новіша за програмне забезпечення, вона виявила CPLD та відобразила його як "невідомий" пристрій.
Далі я створив лічильник у Quartus та призначив номери виводів. Швидка компіляція та завантаження, а також функція лічильника, яку бачив осцилограф, підтверджують можливість реалізації цього проекту.
Схема швидкого тестування у Verilog дуже проста. Код наведено нижче. Ви можете завантажити ZIP-файл, що містить схему та схему тестування Verilog, як проект Quartus II (потрібна версія 9.1).
Як я вже згадував, я зроблю другу редакцію друкованої плати, щоб звернути більше уваги на деталі, необхідні під час поширення інформації про дизайн або усунення будь-яких несправностей. Оскільки мені потрібно встановити ширину нижнього роз'єму на рівні 0,9 дюйма або менше, я можу продовжити встановлювати її на рівні 0,6 дюйма, що є стандартним "широким" DIP-корпусом. Це означає, що нижні контакти повинні виступати з-під гнізда CPLD. Я б не робив цього у виробництві, оскільки на той час він збирався вручну, але однією з цілей було створення комплекту для ручного паяння. Компромісом ручного паяння є те, що генератор повинен бути в корпусі для поверхневого монтажу SMD, версія з наскрізним отвором дуже велика і зазвичай не підтримує потрібний мені діапазон напруги.
Чи можна використати ці модулі для побудови повноцінного простого комп'ютера? Я думаю, мені потрібно додати пам'ять.
Лол... так, це залежить від типу комп'ютера. Однак на "справжні" мікроконтролери/мікрокомп'ютери впливає "з'єднання контактів" модуля, а це означає, що ви не можете отримати достатньо термінології з модуля, щоб зробити щось корисне.
Я створив повноцінний контролер синхронізації та режимів камери NTSC розміром 64, тому процесор не потрібен.
Структурні Verilog та HDL, що використовуються в книзі "Від Nand до Tetris", більш-менш однакові.
Чому деталі наскрізні? Зварювання 0805 – це легко! Зараз саме час кожному майстру навчитися цій навичці.
Якщо я зроблю так, щоб верхній роз'єм перекривав контакти, припаяні знизу, тоді я можу використовувати "6 центрів" (імітуючи 40-контактний чіп) або діагональ тощо. Це буде суворо ручне паяння компонентів для паяння нижніх виводів верхнього роз'єму за ніжками.
Але новачкам важко паяти його знизу. Коли я паяю роз'єми для друкованої плати макетної плати (ці дешеві SMD-адаптерні плати, які можна придбати на eBay, можна використовувати для прототипування), я вставляю роз'єми в макетну плату, потім кладу на неї друковану плату, і тоді я можу легко паяти. Це дуже підходить для макетних плат. Якщо потрібно паяти знизу, це ще складніше.
Якщо CPLD знаходиться посередині (можливо, так легше підключити), його можна встановити по діагоналі без перекриття, це 4 ряди, або CPLD може бути з одного боку:
Дякую за пораду вставити роз'єм у макетну плату перед паянням. Мій трохи нестабільний.
Як щодо контактів макетної плати формату DIP на одному кінці та "донгл"-подібного" типу самого сокета мікросхеми на іншому кінці? Мікросхему можна підвісити на торець макетної плати. Прокладання кабелів буде щільним.
|####### ******************** |. Так, я вирішив використовувати "безкоштовну" версію Altera, так само, як у Xilinx та Lattice є "безкоштовні" версії. Мені потрібно завершити цикл з Елом Вільямсом, щоб зрозуміти, що підтримує вся відкрита підтримка, яка повинна включати специфічні атрибути серії пристроїв. З огляду на це, я багато чого зробив з безкоштовною версією.
Так, ви показуєте, що CPLD перетинається з контактами, я вважаю. Якщо я правильно дотримуюся інструкцій, це може виглядати як версія 2. Під час проектування для (масового) виробництва у мене завжди алергія на крок «ручного паяння», тому що вони перетинаються (насправді, контакти для паяння на стороні, що не є компонентом). ) Це вже компонент, паяний вручну), але це лише невеликий набір, а не конструкція, орієнтована на виробництво. У мене просто є деякі звички, від яких важко позбутися в моєму віці. 
Я думаю, що Т-подібна плата з CPLD та пасивними компонентами з широкою Т-подібною частиною буде дуже корисною, якщо повісити її на край макетної плати. Щось подібне до Adafruit RasPi T-Cobbler (http://www.adafruit.com/products/2028). Це звільнить більшу частину площі макетної плати.
На жаль, припинення виробництва суттєво обмежить його використання в сторонніх проектах, як і всіх тих генераторів функцій на базі XR2206 та ICL8038.
Цікава ідея. Мені подобаються ці два чіпи. CPLD не застарів, це просто дешевший спосіб купити його на 3,3 В.
Щодо твоєї "нісенітниці"... ти справді не створював нову розводку для розміщення на макетній платі. Просто спочатку поклади дріт на макетну плату, а потім на нього поклади контролер CPLD. Або, якщо можеш зняти смуги живлення та заземлення з однієї з них, використовуй дві макетні плати.
Щодо Altium та Eagle. Ви розглядали KiCad? Він не має жодних обмежень, які б віддавали перевагу Altium над Eagle, і за замовчуванням генерує помилки DRC для всіх непідключених контактів. Якщо ви дійсно хочете відкрити контакт, вам потрібно йому це вказати. (Можливо, лише для входу, а не для виходу, і це ще не перевірялося). Ще одна чудова особливість полягає в тому, що його дуже легко вивчити. Це зайняло лише день, і чудовий вступний посібник допоміг мені почати.
Я надаю перевагу (більшій частині) SMD-резистору над наскрізним отвором. Вони простіші у використанні. Вам не потрібно постійно повертати друковану плату. (Було допущено кілька дурних помилок через дзеркальне відображення...). І вам не потрібно обрізати вивід резистора. Під час спільного використання конструкції можна зручно розмістити кілька корпусів на друкованій платі або на одній деталі. SMD-резистор TH. (Це трохи ускладнює компонування).
Я використовував посібник "KiCad Getting Started" у форматі PDF. Стара версія, яку я використовував, має 29 сторінок, а остання — 52. Ви можете знайти його в інших навчальних посібниках (включаючи відеопосилання): http://kicad-pcb.org/help/tutorials/
Я знаю, що [Кріс Геммелл] з Hackaday та The Amp Hour зробив серію статей про Kicad http://kicad-pcb.org/help/tutorials/
Kicad може бути корисним, подивлюся, що буде у версії 2. Дякую за ваші пропозиції. Непідключені входи – це добре для DRC (ERC), а для роз'ємів та інших речей, які зберігають їх програмними або вводу-виводу, більшості повідомлень CAD про відключення зазвичай можна уникнути.
Проведіть швидкий тест і киньте роз'єм у порожню таблицю, запустіть анотації та DRC. Це видало мені помилки drc для кожного контакту. Однак, позначити відомі непідключені контакти дуже просто.
Встановлено на пасивний режим. Мені потрібно шукати (Редагувати компонент -> Редагувати за допомогою редактора бібліотеки). Редактор бібліотеки відкривається та завантажує ваш компонент в окремому вікні, ви можете перевірити або змінити будь-яку частину компонента. Змінений компонент можна зберегти або оновити у вашій схемі. Це дуже спрощує зміну компонентів. Мене не дуже хвилює бібліотека. Наприклад, якщо ви використовуєте cpld, вам потрібно призначити змістовні назви контактам. Що ще важливіше, є хороший інтерфейс для проектування власних компонентів.
У перевірці правил електропередач (ERC) KiCad «непідключені» контакти відрізняються від «пасивних контактів», і всі «непідключені» контакти генеруватимуть помилки. Спосіб роботи ERC можна легко налаштувати відповідно до ваших уподобань: Інструменти -> Перевірка правил електропередач -> Параметри.
Час публікації: 18 листопада 2021 р.





