Як зробити 1 біт постійної схеми пам'яті?


13

Я хотів би зробити просту схему для зберігання або збереження 1 біта даних. Схема повинна мати можливість запам’ятовувати стан світлодіода (увімкнено або вимкнено), навіть якщо джерело живлення відключено від ланцюга. Мені потрібно, щоб він працював як жорсткий диск, флеш-пам’ять або карта пам'яті SD стільникових телефонів.

Я зробив схему, як показано на малюнку, Вихід - це світлодіод послідовно з резистором 470 Ом. Я використовую дві кнопки втулки, щоб зарядити або розрядити конденсатор, щоб вихідний світлодіод був увімкненим або вимкненим.

Після відключення живлення або відключення електроенергії, схема змогла запам'ятати стан світлодіода на кілька хвилин.

Через 2 або 3 хвилини конденсатор повністю розрядився і схема втратила свої дані.

введіть тут опис зображення Як я можу зупинити розряд конденсатора? або як я можу сповільнити швидкість розряду, щоб схема втратила свої дані через тиждень і більше?

У цій схемі я використовую 555 як інвертор (а не ворота), але я можу використовувати будь-які інші ІС, моя мета - просто зробити постійну пам'ять.


1
Наскільки протилежно використовувати монети? Немає способу дублювання комірки EEPROM / flash / FRAM на макрорівні.
Ігнасіо Васкес-Абрамс

8
@ IgnacioVazquez-Abrams Ви можете скористатися засувкою реле ...
helloworld922

2
@MichaelGeorge: Ні, вся суть замикаючого реле полягає в тому, що він використовує постійний магніт для збереження свого стану без застосування зовнішнього живлення. Вам просто потрібен імпульс електрики, щоб змінити його стан.
Трейд Дейв

6
Ви можете отримати конденсатор, щоб утримати його заряд протягом тижня, ретельно проектуючи та будуючи
pjc50

3
Що стосується розряду конденсатора: вони можуть зберігати напругу довгий час, якщо їх правильно відключити. robotroom.com/Capacitor-Self-Discharge-1.html
FarO

Відповіді:


29

Оригінальна електронна енергонезалежна пам'ять заснована на феритових ядрах. У той час як відновити легко намагнічувати таке ядро ​​в одну чи іншу сторону, щоб зберігати один чи нуль, для його надійного зчитування потрібні деякі досить складні схеми.

Сучасні енергонезалежні мікросхеми розраховують на зберігання заряду, але для того, щоб зробити цю роботу, вам потрібно мати можливість створити конденсатор, який по суті має нульовий витік, і спосіб зчитувати цей заряд. Це можна зробити лише в контексті мікроелектроніки, де конденсатор - це крихітний шматок металу ("плаваючі ворота"), який повністю укладений у скло (діоксид кремнію) і зчитується за допомогою впливу на сусідній транзистор .

Іншим вибором є ферорелектрична оперативна пам’ять (FRAM), в якій використовується спеціальний діелектричний матеріал, який має два чіткі стабільні поляризаційні стани. Знову ж таки, це працює лише в мікроелектроніці.

Тому вам потрібно вибрати якесь інше фізичне явище, щоб зберігати свою частину інформації. Одним із очевидних виборів є засувне реле, яке зберігає інформацію у фізичному положенні своєї арматури, яке утримується в будь-якому з двох стійких положень постійним магнітом або пружиною. Положення можна змінити, застосувавши відносно короткий імпульс струму, а зчитування здійснюється за допомогою приєднання електричних контактів до арматури.


1
тематичне посилання: hackaday.com/2015/08/31/core-memory-for-the-hard-core
RJR

Оскільки у вас є лише одне ядро, ви не могли прочитати його за допомогою датчика ефекту Холла чи чогось іншого?
користувач253751

1
@immibis: Непросто. Магнітне поле майже повністю міститься в самому ядрі з дуже невеликим зовнішнім витоком.
Трейд Дейва

8

Складіть схему, яка натискає на механічний вимикач, наприклад. марний ящик. Схема повинна бути підключена для зміни / читання стану, але вона буде тримати її між ними.


6

Простим рішенням буде мікроконтролер, такий як PIC12F635, який доступний у 8-контактному DIP або меншому розмірі , має вбудований годинник та схему скидання коричневого кольору (останній важливий для підтримки цілісності енергонезалежного EEPROM зберігання).

Необхідний код - це не багато, хороший стартовий проект.

Єдиними необхідними зовнішніми частинами були б байпасний конденсатор і обмежувач струму для світлодіода.

Найпростішим рішенням є, мабуть, сигнальне реле 2-котушкової фіксації.


6

Чиста електроніка не зробить стільникову пам’ять постійної пам’яті, але заряд в конденсаторі може наблизитись до неї (знадобиться регулярне оновлення). EEPROM / Flash-пам'ять поширює цю вимогу на 10 років, тому в практичних цілях її називають постійною. Але це не те, чого ви досягаєте зі звичайними компонентами.

Справжня постійна пам'ять використовує якесь фізичне двостабільне явище. Намагніченість феритових стрижнів, згаданих Дейвом, широко використовувалася (коли-небудь чули про «основне звалище»?). Бі-стабільне (або засувне) реле, згадане helloworld922, простіше у використанні.

Дивлячись, як це робилося на ранніх комп’ютерах, ви повинні усвідомити, що існує баланс між складністю одиничної комірки та складністю ланцюга управління. Феритове ядро ​​дуже просте, але схема руху та особливо зчитування дуже складна. Для бістабільного реле це навпаки: реле досить складне на біт, але схема управління дуже проста.

Яке ваше призначення?

  • Якщо ви хочете зробити одну клітинку тільки для задоволення, скористайтеся двостабільним реле.

  • Якщо ви хочете продемонструвати, як це робиться на практиці (DRAM / Flash), не будучи практичним, використовуйте заряд, що зберігається в конденсаторі, і регулярно оновлюйте його.

  • Якщо ви хочете зробити щось практичне, використовуйте невеликий мікроконтролер, який має вбудований EEPROM (або може самостійно програмувати його FLASH).


5

Запобіжник. Заміняти це може дратує часто, тож ви можете перейти до вимикача.


5
Це трохи тонко для відповіді на EE.SE. Будь ласка, докладно.
Нік Алексєєв

2
Отже ... виходить 1 за замовчуванням (струм пройде), щоб встановити нуль, ви відправляєте кухоль струму через запобіжник, щоб підірвати його, тепер струм не пройде, щоб встановити знову 1, ви замінюєте запобіжник?
Майкл

1
Мені подобається нестандартне мислення тут. Коли ви натискаєте кнопку, щоб вимкнути світлодіод, він вимикає вимикач. Коли ви натискаєте кнопку, щоб увімкнути світлодіод, він скидає вимикач. Це просто дивна версія засувки реле. Напевно, не найкращий варіант, але я все одно насолоджуюся творчістю.
MichaelS

1
Я просто мав на увазі те, як спрацьовували ранні пристрої ROM. Вони були масивом запобіжників. Видуйте запобіжники там, де ви хочете нулі. Я не думав, що це потребує глибшого розуміння. Дуже стара школа.
Вільям Прайс

3

Практичне рішення:

Замикаюче реле, як згадує @DaveTweed, є найпростішим.

Якщо ви хочете твердотільне рішення, ви можете використовувати паралельний інтерфейс пам'яті, подібний до цієї речі . Ви можете просто прив’язати адреси адреси до фіксованої адреси та використовувати лише один із рядків даних. Вам знадобиться додаткова логіка клею.

Цікаве рішення:

Якщо ви шукаєте проект для демонстрації пам’яті, тоді ви можете використовувати соленоїд з деяким гістеретичним ядром. Насичуйте серцевину в одному напрямку, щоб зберігати 1, насичуйте його в іншому напрямку, щоб зберігати 0. Це турбується про записи.

Потім встановіть його вище такого датчика, як датчик Холла . Потім ви можете подивитися на полярність залишкового поля за допомогою датчика Холла (просто аналоговий компаратор) для визначення стану.


3

З відповіді запобіжника / вимикача, яку дав Вільям Прайс, з'явилося найбільш очевидне рішення:

Вимикач.

Візьміть лампу. Підключіть його. Увімкніть. Відключіть його від мережі. Перенесіть його на Гаваї. Підключіть його.
Він знову включається.

Вимкнути. Відключіть його від мережі. Занесіть додому. Підключіть його.
Він відключається.

Якщо ви хочете, щоб комп'ютер активував / деактивував світлодіод, це не так корисно. Однак якщо ви користуєтесь кнопковим перемикачем та електронно-активованим соленоїдом, ви можете виконати роботу. Натисніть кнопку, щоб увімкнути світлодіод, він активує соленоїд, вмикається світлодіод. Натисніть знову, світлодіод вимикається. Відключіть його від мережі, і кнопка все ще механічно встановлена ​​або вимкнена.

Якщо ви хотіли б зберегти явну функцію "це, якщо напевно, вимкнено", то замість перемикача можна, щоб у верхній кнопці активувався один соленоїд, який натискає на верхню частину перемикача. Потім нижня кнопка активує другий соленоїд, який натискає нижню частину перемикача.

Не кажучи, що це віддалено найкращий спосіб зробити це, але це функціонально.


1
Все, що ви зробили, - це описати, як створити бістабільне реле, яке було одним із перших запропонованих рішень.
Трейд Дейва

Друга частина, так, - це лише опис незграбного двобічного реле, можливо, корисного, якщо він зацікавлений у створенні власної естафети. Перша частина, однак, ні. Я не думаю, що він відповідає наміру питання (я припускаю, що він зацікавлений вивчати електроніку, а не будувати найпростіший можливий дизайн), але один перемикач перемикача є більш простим, легшим дизайном, ніж електронні біти, і відповідає вимогам, наведеним у перші пари речень.
MichaelS

Ви можете мати рацію, але ми ніколи не будемо впевнені, оскільки ОП ніколи не поверталася обговорювати це, хоча він і «прийняв» мою відповідь. Я інтерпретував загальний намір питання стосовно електронної пам'яті, що перезаписується в електронному вигляді, на основі "Схема повинна мати можливість запам’ятовувати стан світлодіода" . Це виключає пам'ять лише для читання (комутатори, перемички, діоди тощо) та пам'ять одноразового запису (запобіжники).
Трейд Дейв

Моє мислення - це стан світлодіода, безпосередньо пов'язаний з тим, яка кнопка була натиснута останньою. З логічної точки зору, захоплення стану кнопок є ідентичним захопленню стану світлодіода.
MichaelS

2

Найбільш простим однокомпонентним рішенням було б двостабільне реле. І вам знадобиться лише резистор, щоб прочитати стан.


2

Ви можете використовувати мікроконтролер, вбудований в EEPROM. 8-бітний PIC16F84A має 64 байти EEPROM, що підходить зазвичай для 10 000 000 і мінімум 1 000 000 записів у кожен байт (це відоме як витривалість байтів). PIC, обраний в іншій відповіді, PIC12F635 має 128-байтний EEPROM та витривалість байтів 100 000 записів. PIC24F16KA102 , 16-бітний процесор, має 512 байт EEPROM , а також витривалість байт 100000 записів.

ОП не вказує, як часто блиматиме світлодіод. Для цілей цієї дискусії припустимо, що це чотири рази на хвилину.

Через рік він блимне

46024365=2,102,400 times.

Оскільки EEPROM повинен фіксувати як останні, так і вихідні події, то він буде записаний удвічі більше, ніж приблизно 4,2 мільйона разів . За п’ять років це 21 мільйон разів.

Зрозуміло, що це перевищить характеристики будь-якого EEPROM, який я зараз вбудував у мікроконтролер.

Але для цього є просте рішення. Замість того, щоб використовувати один і той же байт знову і знову для відстеження стану ввімкнення або вимкнення, можна використовувати масив байтів, який заповнює весь чіп.

Вам потрібно два байти для кожного елемента масиву. Таким чином, 64-байтний EEPROM, як і PIC16F84A, міг би містити 32 елементи. Кожен раз, коли ви пишете в EEPROM, ви пишете 0 в байт статусу (тобто цей елемент має дані), або 0 в байт даних (світлодіод останній вимикався), або 0xFF (світлодіод був останній увімкненим). Наступного разу, коли ви отримуєте доступ до EEPROM, ви індексуєте елементи, доки не знайдете байта зі статусом 0xFF, а потім використовуєте цей елемент. Якщо нічого не залишилося, повторно ініціалізуйте EEPROM і починайте спочатку (для PIC-кодів нижчого класу це означає записувати 0xFF в кожен з байтів статусу; для PIC24 є команда видалити весь EEPROM). Якщо вам потрібно знати останній статус світлодіода, ви індексуєте масив, як і раніше, але тепер повертаєтесь на один елемент і читаєте байт даних.

введіть тут опис зображення

Це по суті ділить кількість доступу до одного байта на коефіцієнт 16 для PIC16F84A (16, а не 32, оскільки кожен з байтів статусу записується у два рази). Таким чином, це змогло б обробити 16 мільйонів записів, достатньо для майже чотирьох років даних. А PIC12F635 з його більшим EEPROM, але меншою витривалістю в байт 100 К, зможе обробити 3,2 мільйона записів, достатньо для дев'яти місяців.

PIC24F16KA102 зі своїм 512-байтним EEPROM та функцією масового видалення зможе обробляти 25,6 мільйона записів, достатньо протягом п'яти років.

Якщо швидкість моргання становила лише чотири рази на годину замість чотирьох разів на хвилину , то це означає загалом 70,080 записів на рік. Навіть PIC12F635 з витривалістю 100 000 записів на байт тривав би 45 років!


Ви могли утриматися від написання запиту в EEPROM до втрати влади. Конденсатори повинні зберігати достатню кількість заряду, щоб підтримувати UC достатньо довго, щоб записати поточний стан. Це може значно збільшити довговічність вашого EEPROM.
MichaelS

Крім того, чому б не використовувати кілька біт на байт? Перший байт зберігає 7 біт даних підрахунку та 1 біт світлодіодних даних. Перший раз, коли ви пишете, ви встановлюєте байт на 0000001L, потім на 0000010L тощо. Коли він досягає 1111111L, ви скидаєте наступний байт на всі нулі. Добравшись до останнього байта, ви скидаєте перший байт до нулів. Тоді наступне місце для читання - це перший байт, топ-7 біт якого 0 <7-біт <= 127, а наступне місце запису - перший байт із 7-бітовим <127. Тепер ви майже подвоїли свої доходи, оскільки (майже ) кожне записування - в один байт замість двох.
MichaelS

@MichaelS Я теж про це думав. По-перше, ви не можете перейти від 11111110 до 11111101, тому що ви не можете написати знаки "1" (я перевернув вашу початкову умову.) Натомість ви писали 0, по одному в байті. Але насправді це не приносить користі з точки зору обмеження кількості записів за байтом - у кінцевому підсумку вам доведеться писати в кожен байт вісім разів, а не один раз.
tcrosley

Я не використовував точні пристрої PIC, про які йдеться, але я розумію, що ви видаляєте всі дані, а потім змінюєте будь-які біти, які не повинні бути за замовчуванням відразу. Отже, якщо "стерти" означає всі 1, тоді ви стерли б усе і змінили біти 1-6 і, можливо, L. Далі, ви стерли б усе і змінили біти 1-5, 7, можливо, L. На кінець підрахунку , ви будете змінювати лише кілька біт (1110110L -> 1110111L змінює лише біт 4 і L). Оскільки є 50% шансів на стирання і 50% на запис, для заданого біта стерти, це в середньому 100% або 8 біт за цикл стирання / запису.
MichaelS

З вашим методом весь байт стану стирається за деякий час до використання, потім встановлюється нуль при використанні, або 16 біт за цикл стирання / запису. У той же час, весь ваш байт даних має 50% шансів на стирання, 50% шансів на запис або в середньому 8 біт за цикл стирання / запису. Усього тоді 24 біта за цикл. Навіть якщо ми вважаємо, що кожен цикл стирання / запису еквівалентний на байт, це все одно два байти, що змінюються замість одного. (Не можу редагувати вищевказаний коментар. Я мав на увазі 50/50 для того, щоб цей біт змінився , а не був стираний, в останньому реченні.)
MichaelS

2

Це може бути дуже наївною пропозицією ... а як щодо побудови засувки транзистора з низьким рівнем живлення, керованого кнопковою батареєю . Потім використовуйте вихід з цього для подачі в підсилювач OP, який приводиться в дію від джерела живлення . Таким чином ви розвантажуєте кнопкову батарею напруги подачі корисного виводу; Ви не можете використовувати це все одно, поки живлення відключено, правда?

EDIT: Також - відповідно до коментаря нижче - доцільно зробити так, щоб засувка була ізольована від підсилювача OP, якщо подача припиняється. Будь-який вид реле - або еквівалентний ланцюг - який подається живленням, повинен мати можливість виконувати роботу там.

Враховуючи, що простий наручний годинник може роками керувати кнопковим акумулятором, живлення простої засувки повинно дати йому час життя на батарею, який триває десятиліття. Ви навіть можете поставити дві батареї паралельно, щоб ви могли їх замінити - один за один раз - не втрачаючи інформацію.


Є лише дуже мало Op-Amps, які дозволяють напруга на вході вище, ніж напруга живлення, що було б під час відключення.
Арсенал

Якщо це так, чи не існує способу відключити вхід до підсилювача, якщо подача відходить, по суті ізолюючи засувку? Будь-який вид реле - або еквівалентний ланцюг - зробив би трюк там, чи не так?
MichaelK

0

Невеликий CPLD може бути запрограмований для керування протоколом, необхідним для запису простого набору значень на шину I2C.

NXP створює цілий ряд дуже малих пам’яток, призначених для заміни перемикачів, наприклад PCA8550 / PCA9561.

Поєднайте два, і у вас є дуже маленький твердотільний вимикач, який запам'ятовує його стан.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.