1 비트 영구 메모리 회로를 만드는 방법은 무엇입니까?


13

1 비트의 데이터를 저장하거나 저장하기 위해 간단한 회로를 만들고 싶습니다. 회로는 전원 공급 장치가 회로에서 분리 되더라도 LED의 상태 (켜짐 또는 꺼짐)를 기억할 수 있어야합니다. 하드 드라이브, 플래시 메모리 또는 휴대폰의 SD 메모리 카드처럼 작동하려면 필요합니다.

그림과 같이 회로를 만들었습니다. 출력은 470 옴 저항과 직렬로 연결된 LED입니다. 두 개의 부시 버튼을 사용하여 커패시터를 충전 또는 방전하여 출력 LED가 켜지거나 꺼집니다.

전원을 차단하거나 전원을 끈 후 회로는 몇 분 동안 LED의 상태를 기억할 수있었습니다.

2-3 분 후 커패시터가 완전히 방전되고 회로에서 데이터가 손실되었습니다.

여기에 이미지 설명을 입력하십시오 커패시터 방전을 어떻게 막을 수 있습니까? 또는 회로가 일주일 이상 후에 데이터를 잃을 수 있도록 방전 속도를 어떻게 느리게 할 수 있습니까?

이 회로에서는 게이트가 아닌 인버터로 555를 사용하지만 다른 IC를 사용할 수 있습니다. 내 목표는 단순한 영구 메모리를 만드는 것입니다.


1
코인 셀을 얼마나 사용하고 있습니까? 매크로 수준에서 EEPROM / 플래시 / FRAM 셀을 복제 할 수있는 방법이 없습니다.
Ignacio Vazquez-Abrams

8
@ IgnacioVazquez-Abrams 당신은 래칭 릴레이를 사용할 수 있습니다 ...
helloworld922

2
@MichaelGeorge : 아니요, 래칭 릴레이의 핵심은 외부 전원을 공급하지 않고 영구 자석을 사용하여 상태를 보존한다는 것입니다. 상태를 변경하려면 전기 펄스가 필요합니다.
Dave Tweed

6
신중한 설계와 구성으로 일주일 동안 커패시터를 충전 할 수 있습니다. m.electronicdesign.com/analog/…
pjc50

3
커패시터 방전과 관련하여 올바르게 분리 된 경우 오랜 시간 동안 전압을 유지할 수 있습니다. robotroom.com/Capacitor-Self-Discharge-1.html
FarO

답변:


29

원래 전자 비 휘발성 메모리는 페라이트 코어를 기반으로합니다. 이러한 코어를 한쪽 방향으로 자화하는 것이 쉽지만 1 또는 0을 저장하기 위해 다른 코어를 자화하는 것이 쉽지만, 신뢰성있게 다시 읽으려면 상당히 정교한 회로가 필요합니다.

현대의 비 휘발성 칩은 전하 저장에 의존하지만,이 작업을 위해서는 본질적으로 누설이없는 커패시터를 생성하고 그 전하를 읽는 방법이 필요합니다. 이것은 커패시터가 유리 (실리콘 이산화물)로 완전히 둘러싸인 작은 조각의 금속 ( "부상 게이트") 인 마이크로 일렉트로닉스와 관련해서 만 가능하며 근처 트랜지스터에 미치는 영향에 의해 판독됩니다. .

또 다른 선택은 FRAM (ferrorelectric RAM)이며, 이는 두 개의 뚜렷하고 안정적인 편광 상태를 갖는 특수 유전체를 사용합니다. 다시 말하지만, 이것은 마이크로 전자 장치에서만 작동합니다.

따라서 약간의 정보를 저장하려면 다른 물리적 현상을 선택해야합니다. 확실한 선택 중 하나는 래칭 릴레이입니다.이 릴레이는 정보를 전기자의 물리적 위치에 저장하며 영구 자석 또는 스프링에 의해 두 개의 안정적인 위치 중 하나에 유지됩니다. 비교적 짧은 전류 펄스를 적용하여 위치를 변경할 수 있으며 전기 접점을 전기자에 연결하여 판독 할 수 있습니다.



코어가 하나뿐이므로 홀 효과 센서 나 다른 것으로 읽을 수 없습니까?
user253751

1
@immibis : 쉽지 않습니다. 자기장은 코어 자체 내에 거의 완전히 포함되어 있으며 외부 누출이 거의 없습니다.
Dave Tweed

8

기계적 스위치를 튕기는 회로를 만드십시오 (예 : 쓸모없는 상자. 회로는 변경 / 읽기 상태로 전원을 켜야하지만 사이에 유지해야합니다.


6

간단한 솔루션은 PIC12F635 와 같은 8 핀 DIP 이하에서 사용 가능하고 내장 클록 및 브라운 아웃 리셋 회로를 갖춘 마이크로 컨트롤러입니다 (후자는 EEPROM의 비 휘발성을 유지하는 데 중요합니다) 저장).

필요한 코드는 많지 않지만 좋은 시작 프로젝트입니다.

필요한 유일한 외부 부품은 바이 패스 커패시터와 LED의 전류 제한 저항뿐입니다.

가장 간단한 해결책은 아마도 2- 코일 래칭 신호 릴레이 일 것입니다.


6

순수한 전자 장치는 영구 메모리 셀을 만들지 않지만 커패시터의 충전이 접근 할 수 있습니다 (정기적으로 새로 고침해야 함). EEPROM / 플래시 메모리는이 요구 사항을 10 년으로 연장하므로 실질적인 목적으로 영구이라고합니다. 그러나 이것은 일반적인 구성 요소로 수행하는 것이 아닙니다.

실제 영구 메모리는 일종의 물리적 이중 안정 현상을 사용합니다. Dave가 언급 한 페라이트 코어의 자화는 광범위하게 사용되었습니다 ( '코어 덤프'에 대해 들어 본 적이 있습니까?). helloworld922에서 언급 한 쌍 안정 (또는 래칭) 계전기는 사용하기 더 쉽습니다.

초기 컴퓨터에서 이것이 어떻게 수행되었는지 살펴보면 단일 셀의 복잡성과 구동 회로의 복잡성이 균형을 이루고 있음을 알아야합니다. 페라이트 코어는 매우 간단하지만 구동 및 특히 판독 회로는 매우 복잡합니다. 쌍 안정 릴레이의 경우 반대입니다. 릴레이는 비트 당 상당히 복잡하지만 제어 회로는 매우 간단합니다.

당신의 목적은 무엇입니까?

  • 재미를 위해 하나의 셀을 만들고 싶다면 쌍 안정 릴레이를 사용하십시오.

  • 실용적이지 않고 실제로 수행되는 방식 (DRAM / 플래시)을 시연하려면 커패시터에 저장된 전하를 사용하고 정기적으로 재충전하십시오.

  • 실용적으로 만들려면 내장 EEPROM이있는 소형 마이크로 컨트롤러를 사용하십시오 (또는 자체 플래시를 자체 프로그래밍 할 수 있음).


5

퓨즈. 자주 교체하는 것은 성 가실 수 있으므로 차단기로 업그레이드 할 수 있습니다.


5
EE.SE에 대한 답변은 약간 얇습니다. 정교하게 작성하십시오.
Nick Alexeev

2
따라서 ... 기본적으로 1이 나오고 (전류가 전달됨) 0으로 설정하고 퓨즈를 통해 전류 슬러그를 보내 퓨즈를 끊으면 이제 전류가 전달되지 않고 다시 1로 설정됩니다. 퓨즈?
Michael

1
나는 여기서 즉시 사용 가능한 사고를 좋아한다. 버튼을 눌러 LED를 끄면 차단기가 트립됩니다. 버튼을 눌러 LED를 켜면 차단기가 재설정됩니다. 래칭 릴레이의 이상한 버전 일뿐입니다. 아마도 최선의 선택은 아니지만, 나는 여전히 창의성을 즐깁니다.
MichaelS

1
초기 ROM 장치의 작동 방식을 간단히 언급했습니다. 그것들은 퓨즈의 배열이었습니다. 영점을 원하는 곳에서 퓨즈를 불어주십시오. 더 깊은 통찰력이 필요하다고 생각하지 않았습니다. 아주 오래된 학교.
윌리엄 가격

3

실용적인 해결책 :

@DaveTweed가 언급 한 래칭 릴레이가 가장 간단합니다.

당신은 고체 상태의 솔루션을 원하는 경우에 당신은 같은 병렬 인터페이스 메모리 IC를 사용할 수있는 이 일 . 주소 라인을 고정 주소에 연결하고 데이터 라인 중 하나만 사용할 수 있습니다. 추가 접착제 로직이 필요합니다.

흥미로운 해결책 :

메모리를 보여주는 프로젝트를 찾고 있다면 히스테리시스 코어가있는 솔레노이드를 사용할 수 있습니다. 코어를 한 방향으로 포화시켜 1을 저장하고 다른 방향으로 포화시켜 0을 저장합니다. 이것은 쓰기를 처리합니다.

그런 다음 이 홀 센서 와 같은 센서 바로 위에 장착하십시오 . 그런 다음 홀 센서 (아날로그 비교기)로 잔류 필드 의 극성을보고 상태를 확인할 수 있습니다.


3

윌리엄 프라이스 (William Price)가 제공 한 퓨즈 / 브레이커 답변에서 가장 확실한 해결책이 나왔습니다.

스위치.

램프를 가져 가십시오. 전원을 연결하십시오. 전원을 켜십시오. 플러그를 뽑습니다. 하와이로 옮깁니다. 연결하십시오.
다시 켜십시오.

전원을 끄십시오. 플러그를 뽑습니다. 집에 가져가 연결하십시오.
꺼져 있습니다.

컴퓨터가 LED를 활성화 / 비활성화하도록하려면 도움이되지 않습니다. 그러나 푸시 버튼 토글 스위치와 전자 작동 식 솔레노이드를 사용하면 작업을 완료 할 수 있습니다. 버튼을 누르면 LED가 켜지고 솔레노이드가 활성화되고 LED가 켜집니다. 다시 누르면 LED가 꺼집니다. 플러그를 뽑아도 버튼은 여전히 ​​기계적으로 켜져 있거나 꺼져 있습니다.

토글 대신 명시 적 "이 기능이 켜져 있으면 확실히 꺼져있는"기능을 유지하려는 경우 상단 버튼이 플립 스위치 상단을 누르는 하나의 솔레노이드를 활성화 할 수 있습니다. 그런 다음 하단 버튼은 플립 스위치의 하단을 누르는 두 번째 솔레노이드를 활성화합니다.

이것이 원격으로 최선의 방법이라고 말하지는 않지만 기능적입니다.


1
당신이 한 것은 쌍 안정 릴레이를 만드는 방법을 설명하는 것인데, 이것은 제안 된 첫 번째 솔루션 중 하나였습니다.
Dave Tweed

두 번째 부분은 엉뚱한 쌍 안정 계전기에 대한 설명 일뿐입니다. 자신의 계전기를 구축하려는 경우 유용 할 수 있습니다. 그러나 첫 번째 부분은 아닙니다. 나는 그것이 질문의 의도와 일치하지 않는다고 생각합니다 (나는 그가 가장 간단한 디자인을 구축하는 대신 전자 학습에 관심이 있다고 가정합니다). 단일 토글 스위치는 전자 비트보다 더 간단하고 쉬운 디자인이며 주어진 요구 사항을 충족시킵니다 첫 커플 문장.
MichaelS

당신이 옳을 수도 있지만, OP가 내 대답을 "수락"했음에도 OP가 그것에 대해 논의하기 위해 돌아 오지 않았기 때문에 확신하지 못할 것입니다. 나는 "회로가 LED의 상태를 기억할 수 있어야한다"에 근거하여 전자적으로 재기록 가능한 메모리를 언급하는 질문의 전반적인 의도를 해석했다 . 이것은 읽기 전용 메모리 (스위치, 점퍼, 다이오드 등) 및 1 회 기록 메모리 (퓨즈)를 배제합니다.
Dave Tweed

내 생각은 LED의 상태가 마지막으로 누른 버튼과 직접 관련이 있다는 것입니다. 논리적 인 관점에서, 버튼의 상태를 캡처하는 것은 LED의 상태를 캡처하는 것과 동일합니다.
MichaelS

2

가장 간단한 단일 컴포넌트 솔루션은 쌍 안정 릴레이입니다. 그리고 상태를 읽으려면 저항 만 있으면됩니다.


2

EEPROM에 내장 된 마이크로 컨트롤러를 사용할 수 있습니다. 8 비트 PIC16F84A 는 64 바이트의 EEPROM을 가지고 있으며 이는 일반적으로 10,000,000 개에 적합하며 각 바이트에 최소 1,000,000 회의 쓰기 (바이트 내구성이라고도 함)에 적합합니다. 다른 답변에서 선택한 PIC12F635는 128 바이트 EEPROM과 100,000 쓰기의 바이트 내구성을 갖습니다. PIC24F16KA102 , 16 비트 프로세서는, EEPROM (512)의 바이트도 10 개의 쓰기 바이트 내구성을 갖는다.

OP는 LED가 얼마나 자주 깜박 일지를 나타내지 않습니다. 이 논의의 목적으로 분당 4 회라고 가정합니다.

1 년 후 깜박입니다

46024365=2,102,400 나는미디엄이자형에스.

EEPROM은 마지막 켜짐 및 꺼짐 이벤트를 모두 캡처해야하므로이 수의 두 배 또는 약 420 만 회에 기록 됩니다. 5 년 동안이 수치는 2 천 1 백만 회입니다.

분명히 이것은 현재 마이크로 컨트롤러에 내장 된 모든 EEPROM의 사양을 능가합니다.

그러나 이에 대한 간단한 해결책이 있습니다. 온 또는 오프 상태를 추적하기 위해 동일한 바이트를 반복해서 사용하는 대신 바이트 배열을 사용하여 전체 칩을 채울 수 있습니다.

배열의 각 요소마다 2 바이트가 필요합니다. 따라서 PIC16F84A와 같은 64 바이트 EEPROM은 32 개의 요소를 보유 할 수 있습니다. EEPROM에 쓸 때마다 상태 바이트에 0을 쓰고 (이 요소에 데이터가 있음을 의미) 0에 데이터 바이트 (LED는 마지막 꺼짐) 또는 0xFF (LED는 마지막 켜짐)를 씁니다. 다음에 EEPROM에 액세스 할 때 0xFF 상태 바이트를 가진 요소를 찾을 때까지 요소를 통해 색인 한 다음 해당 요소를 사용하십시오. 남은 것이 없으면 EEPROM을 다시 초기화하고 다시 시작하십시오 (저급 PIC의 경우 각 상태 바이트에 0xFF를 쓰는 것을 의미합니다. PIC24의 경우 전체 EEPROM을 지우라는 명령이 있습니다). LED의 마지막 상태를 알아야하는 경우 이전과 같이 어레이를 통해 색인을 생성하지만 이제 한 요소로 돌아가 데이터 바이트를 읽습니다.

여기에 이미지 설명을 입력하십시오

이는 기본적으로 단일 바이트에 대한 액세스 수를 PIC16F84A에 대해 16의 계수로 나눕니다 (각 상태 바이트가 두 번 기록되므로 32가 아닌 16). 따라서 거의 4 년간의 데이터에 충분한 총 1600 만 쓰기를 처리 할 수 ​​있습니다. 또한 EEPROM은 크지 만 바이트 내구성은 100K 인 PIC12F635는 9 개월 동안 총 320 만 쓰기를 처리 할 수 ​​있습니다.

512 바이트 EEPROM과 대량 지우기 기능을 갖춘 PIC24F16KA102는 5 년 넘게 2560 만 쓰기를 처리 할 수 ​​있습니다.

깜박임 속도가 분당 4 회가 아닌 시간당 4 회만 된다면 이는 연간 총 70,080 회의 쓰기를 의미합니다. 바이트 당 100,000 쓰기의 내구성을 가진 PIC12F635조차도 45 년 동안 지속될 것입니다!


전원이 끊길 때까지 EEPROM에 쓰는 것을 자제 할 수 있습니다. 커패시터는 전류 상태를 기록 할 수있을 정도로 uC를 오래 유지하기에 충분한 충전량을 저장해야합니다. 이것은 EEPROM의 수명을 크게 증가시킬 수 있습니다.
MichaelS

또한 바이트 당 여러 비트를 사용하지 않는 이유는 무엇입니까? 첫 바이트는 7 비트의 카운팅 데이터와 1 비트의 LED 데이터를 저장합니다. 처음 쓸 때는 바이트를 0000001L로 설정 한 다음 0000010L 등으로 설정하십시오. 1111111L에 도달하면 다음 바이트를 모두 0으로 재설정합니다. 마지막 바이트에 도달 한 후 첫 번째 바이트를 0으로 재설정합니다. 그런 다음 다음 읽기 위치는 상위 7 비트가 0 <7 비트 <= 127 인 첫 번째 바이트이고 다음 쓰기 위치는 7 비트 <127 인 첫 번째 바이트입니다. 이제 거의 두 배의 액세스가 ) 모든 쓰기는 2 개가 아닌 1 바이트입니다.
MichaelS

@MichaelS 저도 생각했습니다. 첫째, 1을 쓸 수 없기 때문에 11111110에서 11111101로 갈 수 없습니다 (시작 조건을 반전 시켰습니다). 대신 바이트 전체에서 한 번에 하나씩 0을 씁니다. 그러나 바이트 당 쓰기 수를 제한한다는 점에서 실제로는 좋지 않습니다. 한 번에 8 번씩 각 바이트에 쓰지 않아도됩니다.
tcrosley

문제의 정확한 PIC 장치를 사용하지는 않았지만 모든 데이터를 지우고 한 번에 기본값이되어서는 안되는 비트를 변경한다는 것이 이해합니다. 따라서 "삭제됨"이 모두 1을 의미하는 경우 모든 항목을 지우고 비트 1-6 및 L을 변경합니다. 다음으로 모든 항목을 지우고 비트 1-5, 7, L을 변경합니다. 카운트 끝으로 , 몇 비트 만 변경하고 있습니다 (1110110L-> 1110111L은 비트 4와 L 만 변경합니다). 지정된 비트가 지워질 때 지우기 당 50 %의 기회와 쓰기 당 50 %의 기회가 있기 때문에 평균 100 % 또는 지우기 / 쓰기주기 당 8 비트입니다.
MichaelS

방법을 사용하면 전체 상태 바이트가 사용하기 전에 어느 정도 지워진 다음 사용시 0 또는 소거 / 쓰기주기 당 16 비트로 설정됩니다. 동시에 전체 데이터 바이트의 지우기 당 50 % 확률, 쓰기 당 50 % 확률 또는 지우기 / 쓰기주기 당 평균 8 비트가 있습니다. 그러면 총주기는 24 비트입니다. 각 지우기 / 쓰기주기가 바이트 당 동일하다고 가정하더라도 여전히 1 바이트 대신 2 바이트가 변경됩니다. (I는 주어진 비트 50/50 얻을 의미, 위의 코멘트를 편집 할 수 없습니다 변경 마지막 문장에서 지워지지 않습니다.)
마이클스

2

이것은 매우 순진한 제안 일 수 있지만 버튼 배터리로 구동되는 저전력 트랜지스터 래치를 만드는 것은 어떻습니까 ? 그런 다음 그 출력을 사용하여 전원 공급 장치로 구동되는 OP 앰프에 공급하십시오 . 이렇게하면 유용한 출력을 공급하는 버튼 배터리를 언로드 할 수 있습니다. 어쨌든 전원이 꺼진 상태에서는 사용할 수 없습니다.

편집 : 또한-아래 주석에 따라-공급 장치가 사라지면 래치가 OP 앰프에서 분리되도록하는 것이 좋습니다. 전원 공급 장치에 의해 공급되는 모든 종류의 릴레이 또는 이와 동등한 회로는 거기서 작업을 수행 할 수 있어야합니다.

간단한 손목 시계는 몇 년 동안 버튼 배터리로 구동 될 수 있다는 점을 고려하면 간단한 걸쇠에 전원을 공급하면 배터리 당 수명이 10 년 동안 지속됩니다. 두 개의 배터리를 병렬로 연결하여 정보를 잃지 않고 한 번에 하나씩 교체 할 수 있습니다.


공급 전압보다 높은 입력 전압을 허용하는 Op-Amps는 매우 적으며, 이는 셧다운시 발생할 수 있습니다.
아스날

이 경우 전원 공급이 중단되어 본질적으로 래치를 분리하는 경우 OP 앰프의 입력을 차단할 수있는 방법이 없습니까? 어떤 종류의 릴레이 또는 동등한 회로가 트릭을 수행합니까?
MichaelK

0

간단한 CPLD를 I2C 버스에 쓰는 데 필요한 프로토콜을 구동하도록 작은 CPLD를 프로그래밍 할 수 있습니다.

NXP는 딥 스위치 (예 : PCA8550 / PCA9561)를 대체하기 위해 매우 작은 메모리 범위를 만듭니다.

두 가지를 결합하면 상태를 기억하는 매우 작은 솔리드 스테이트 스위치가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.