Power ON Reset Circuit
파워온리셋(Power[안내]태그제한으로등록되지않습니다-xxOnReset)의허와실.pdf
모든 마이크로프로세서에서는 전원을 투입한 직후에 정확히 지정된 상태로 동작을 시작하도록 하기 위하여 리셋 신호가 인가되도록 하드웨어를 설계해야 하는데 이러한 리셋 회로를 전원투입 리셋 회로(power-on reset circuit)라고 한다.
이것은 위의 그림에서와 같이 기본적으로 R, C 소자를 직렬로 연결하고 그 중간에서 리셋 신호를 얻는 방식을 사용한다. 일반적으로 이 리셋 회로에는 사용자가 사용중에 강제로 시스템을 리셋시킬 수 있도록 콘덴서 C와 병렬로 리셋 스위치를 추가하며, 전원을 껐을 때 콘덴서 C에 충전되어 있던 전하를 빨리 방출하여 전원 재투입시에도 반드시 리셋 신호가 발생될 수 있도록 하기 위하여 저항 R과 병렬로 다이오드를 추가한다.
리셋 회로에서 저항 R과 콘덴서 C의 정전용량은 콘덴서에 대한 충전시간을 좌우하여 결과적으로 리셋 시간을 결정한다. 이것은 RC 직렬회로이므로 여기에서의 전압방정식은 1계 1차 미분방정식이 되며, 이를 풀면 콘덴서의 충전전압 즉 다음단의 입력전압 Vin은 다음과 같은 식으로 나타낼 수 있다.
- t/RC
Vin(t) = 5(1 - e )
여기서 T = RC를 이 회로의 시정수라고 하는데, 이것은 전압 Vin의 상승속도를 결정한다. 일반적으로 대부분의 마이크로프로세서에서 R에는 수K의 저항을 사용하고 C에는 수 uF의 콘덴서를 사용하면 계산상으로 충분한 리셋시간이 확보된다.
이 전압은 위의 파형도에서 보듯이 지수함수적으로 증가하는 아날로그 신호이다. 따라서, 이를 디지털 신호인 -RESET 또는 RESET으로 변환하기 위하여 슈미트 트리거(Schmitt Trigger) 회로를 사용한다. 슈미트 트리거 회로는 입력전압이 지정된 상위레벨 문턱전압(VUT, Upper Threshold Voltage)을 초과할 때 H로 인식되고, 지정된 하위레벨 문턱전압(VLT, Lower Threshold Voltage) 미만으로 될 때 L로 인식된다. TTL에서 이와 같이 슈미트 트리거 기능을 가진 인버터 게이트에는 74xx14가 있다.
그러나, 이렇게 슈미트 트리거의 목적으로 인버터 게이트를 사용하면 RC 회로의 충전시간이 크게 달라져서 결과적으로 리셋시간이 충분히 확보되지 않는 문제가 발생한다. 그 이유는 TTL 회로는 출력단이 L상태일 때 싱크전류가 흘러들어 오며, 이 때문에 입력단은 L입력 신호에 대하여 전류가 입력단자를 통하여 흘러나오도록 되어 있고, 이것이 콘덴서 C를 충전하기 때문이다. 예를 들어 표준 TTL인 7414의 경우는 위의 그림처럼 입력이 L상태일 때 약 4K의 작은 저항을 통하여 입력전류가 흘러나온다. 이 전류는 리셋회로에서 충전저항 R을 통하여 흐르는 전류와 합해져서 콘덴서 C를 급속으로 충전한다. 이 때문에 전원 투입 직후에는 C의 전압이 급상승하며 어느 정도 전압이 상승하면 이제 입력단 전류는 거의 영향이 없고 RC 충전회로에 의해서만 완만하게 충전이 계속된다. 이 때문에 입력전압은 상위레벨 문턱전압 1.6V에 훨씬 빨리 도달하게 되고, 결과적으로 리셋 시간은 RC충전회로만을 고려한 계산치보다 크게 단축된다.
위의 두번째 그림에는 이러한 RC회로를 74LS14에 접속하였을 경우를 나타내었다. 74LS 시리즈의 입력단 회로는 표준 74 시리즈와는 크게 다르지만, 리셋회로에는 마찬가지의 영향을 준다. 다만, 그림에서처럼 입력이 L상태일 때 약 20K의 비교적 큰 저항을 통하여 입력전류가 흘러나오므로 앞의 표준 TTL에 비하여 콘덴서 C를 급속으로 충전하는 속도가 훨씬 낮아진다. 그러나, 역시 C의 전압이 상당히 빠르게 상승하여 리셋 시간이 RC충전회로만을 고려한 계산치보다 크게 단축된다.
그러나, CMOS인 74HC14를 사용하면 근본적으로 이런 문제는 없어진다. CMOS의 입력단은 MOSFET의 게이트로 되어 있어서 입력신호가 L상태에서도 입력단에 전류가 흘러나오는 일이 없기 때문이다. 따라서, 74HC14를 사용하면 리셋 시간이 RC충전회로만을 고려하여 계산한 값과 잘 일치한다. 더구나, CMOS의 경우는 상위레벨 문턱전압이 약 3.5V로서 TTL의 1.6V보다 상당히 높기 때문에 리셋시간이 훨씬 길어진다.
이와 같이 TTL을 사용한 리셋회로에서는 자칫하면 충분한 리셋시간이 확보되지 않아서 마이크로프로세서가 올바르게 동작하지 않을 수 있다. 이러한 경우의 해결책은 다음과 같이 2가지를 생각할 수 있다.
첫째, 리셋회로를 슈미트 트리거하기 위한 인버터는 74LS14를 사용하지 말고 74HC14를 사용하라. 그러면, RC 충전회로에 의하여 설계한 값대로 리셋시간이 확보된다. 이러한 경우에는 대부분의 마이크로프로세서에서 수K의 저항과 수 uF의 콘덴서를 사용하여 리셋회로를 구성하면 충분하다.
둘째, 리셋회로를 슈미트 트리거하기 위한 인버터로서 불가피하게 74LS14를 사용할 수 밖에 없는 경우에는 계산치보다 충분히 큰 저항과 콘덴서를 사용하고, 가급적이면 리셋시간을 오실로스코프로 측정하여 직접 확인하라. 이러한 경우에는 대부분의 마이크로프로세서에서 수십K 이상의 저항과 수십 uF 이상의 콘덴서를 사용하여 리셋회로를 구성하면 그럭저럭 필요한 리셋시간을 얻을 수 있다. 필자는 100K의 저항과 10uF의 콘덴서를 즐겨 사용하며, 이렇게 하였을 경우 여러가지의 마이크로프로세서에서 아직 특별한 문제를 경험하지 못했다.
자료출처 : http://control.cntc.ac.kr/cpu/main.htm
->기술자료실 -> 초보자특별교실 -> 교실들어가기