Converters

Learning stuff 2012. 4. 12. 23:08

우리가 회로를 꾸밀 때 있어서 전원이란 것은 정말 중요하지요.

"근본이 제대로 되어 있어야 한다"

라는 말처럼 전원 자체에 문제가 있다면 아무리 좋은 회로라 해도 단순 멍텅구리일 뿐입니다.

그런 의미에서 우리가 정말 회로에서 자주 사용하는 Regulator(레귤레이터)라는 놈에 대해 한번은

짚고 가야 할 듯합니다.

일반적으로 Linear Regulator, LDO, Step-Down, Step-up, Boost-Buck Converter가 많이 사용되고 있지요..

각각의 구조와 특징에 대해서 잠깐 살펴보도록 하지요~

 

1) Linear Regulator

 

우리가 보통 리니어 레귤레이터라고 하면 78XX시리즈가 대표적이라 할 수 있겠습니다.

뭐 회로에 대해 조금이라도 접해본 사람이라면 정말 많이 보았을 소자입니다.

78XX에서 뒤의 XX의 숫자가 보통 Output Voltage를 말하는데요..

예를 들어 7805라면 5V가 정전압으로 출력되겠구요.. 7806이면 6V, 7812라면 12V가 정전압으로 출력되어 나옵니다.

사실 정전압을 얻기 위해 회로가 간단하고 고주파 Switching을 하는 방식이 아니기 때문에 안정된 전원을 공급해주지요.

하지만 효율이 떨어진다는 큰 단점이 있지요. 효율이라고 하면 입력된 에너지보다 출력되는 에너지의 %비율입니다.

또한 주의 할것이 있는데 Linear Regulator는 출력전압보다 입력전압이 약 2~3V는 더 높게 주어야 합니다.

그 이유는 아래 그림을 통해 차차 알아보아요~

 

DC_DC_1.jpg

리니어 레귤레이터는 위와 같은 구조로 되어있습니다. 물론 내부가 모두 저렇다고 하는게 아니라 원리가 그렇다는 거에요~

위의 그림에서는 TR을 그려놨지만 그 바로 위의 그림처럼 사실은 등가적으로 가변저항이 되는 것이죠.

출력되는 전압을 비교기의 Non-Inverting에 넣고 기준이 되는 Reference 전압과 비교(사실 이게 원하는 출력전압이 되겠죠)하여 기준전압보다 높으면 Base 신호에 Low를 주어 입력신호를 차단해주고, 반대로 기준전압보다 낮으면 Base를 High호 해서 입력전원을 부하에 공급해 주게 되는 원리지요.

여기서 중요한 것은 등가적으로 보았을 때 가변저항이라고 했으니까 사실은 저항성분을 통해 높은 입력 전압을 강압해주는 것을 통해 일정한 출력전원을 공급해주는 것이죠.

즉, 9V를 입력해주고 출력을 5V를 얻었다면 4V가 강압된 것이고, 그 4V의 전압강하는 Regulator의 내부에 걸리게 되는 것

입니다.

그렇기 때문에 리니어 레귤레이터를 사용하여 높은 전류를 흘려주게 되면 굉장히 뜨겁게 되는 거에요~

만약 9V입력에 500mA의 전류를 공급하고 출력이 5V였다면, 4V의 전압강하에 500mA의 전류가 흘렀으니까

P = V*I = 4 * 500mA = 2000mW = 2W

의 전력이 레귤레이터에서 소비가 되는 거에요~ 이 소비되는 전력은 모두 열에너지로 방출되기 때문에 그만큼 레귤레이터의 온도가 올라가 뜨거워 지는 원리입니다.

따라서 방열판과 같은 것을 꼭 부착해 주어야 합니다요~

또한 이렇게 레귤레이터의 내부에서 소비되는 에너지가 있기 때문에 아까 위에서 입력전압을 출력전압보다 반드시 2~3V높게 걸어주라고 했던 것입니다. 만약 출력전압과 같거나 더 낮게 된다면 처음에는 좀 견디는듯 하다가 끝내 소자가 나가버립니다.

 

다음으로 위의 그림에서 입력과 출력쪽에 각각 캐패시터가 있는데 이것은 일종의 LPF(Low Pass Filter)로 전원 성분에 있는 고주파 성분을 끌어당겨 GND로 보내버리게 되지요. 즉, 저주파인 DC 성분만 공급되도록 하는 역할이에요~

뭐 사실 레귤레이터의 데이터시트를 보시면 캐패시터의 값이 나와있으니 참고하시면 되겠습니다.

 

참고로 LDO(Low Drop Out)이라는 레귤레이터가 따로 있는데 이는 말그대로 입력전압에 비해 출력전압의 전압강하가 작을 때 사용하는 레귤레이터 입니다. 우리가 잘 사용하는 소자로 LM1117과 같은 소자가 있는데 5V -> 3.3V 정도로 낮은 전압강하를 사용할때는 LDO를 사용하는 것이 훨씬 좋습니다. 왜냐하면 그만큼 발열되어 날라가는 에너지가 적기 때문에 방열판을 달아줄 걱정이 없고, 소자의 크기도 작게 나와 크기를 줄일 수 있는 장점이 있기 때문이지요~

다만 그만큼 흘려줄수 있는 전류의 양이 적기 때문에(보통 1A이하) 저전력소자를 구동할 때 자주 사용됩니다.

 

2) Step-Down(Buck) Converter

 

다음으로 볼것이 바로 일명 Step-Down 또는 Buck Convertor라 불리는 놈이 되겠습니다.

Buck이라는 말은 "날뛰다, 걷잡을 수 없이 흔들리다"라는 뜻이 있더군요.(사실 저도 첨 알았음 ㅎㅎ;;)

Step-Down이라는 말도 "단계적으로 내리다" 라는 뜻이겠네요.

일단 원리를 알기 전에 알아두어야 할 중요한 이론이 하나 있는데요. 바로 PWM(Pulse Width Modulation)이라는 것입니다.

말 그대로 펄스 폭 변조라는 말인데요.

이런 PWM 파형을 이용하여 전압을 낮추는 결과를 얻어내는 것이지요.

아래 그림을 한번 보시죠~

 PWM.jpg

위의 그림과 같이 펄스에서 On time 즉, High 구간의 폭이 한 주기 시간동안 얼마나 되느냐에 따라 Duty rate가 결정

되겠습니다. 상식적으로 생각할 때 우리가 모터에 위와 같은 파형을 주게 된다면 High 구간에서는 모터의 출력이 최대

가 되어 최고 속력으로 돌고 Low 구간에서는 전원이 끊긴것이니까 멈춰야 하겠죠?

하지만 실제로는 그렇지 않다는 것이죠. 한주기의 시간이 엄청나게 긴 시간이 아니라면 실제적으로 걸리는 전류값는

위와 같이 Duty rate만큼 평균적으로 걸린다고 생각하시면 됩니다. 즉, 본래 최대 100의 출력이 걸릴 수 있을 때

Duty rate가 5%라면 5만큼의 출력이 지속적으로 걸리고 있다는 것이고, Duty rate가 50%라면 50의 출력이 지속적

으로 걸리게 된다는 것이죠~

음.. 그렇다면 입력전원으로 최대 전압이 12V이면서 이 전원을 PWM 형식으로 걸어주면 출력은 Duty Rate에 따라서

입력보다 작은 전압이 출력되겠네요~

아항! 이것이 바로 Buck 또는 Step-down Convertor의 원리입니다.

 DC_DC_2.jpg

 위의 그림이 바로 Step-down convertor의 회로입니다.

 일단 동작 원리를 순차적으로 한번 볼까요?

 ① 전원 전압 Vi가 N-MOSFET의 Drain으로 인가됩니다. 여기서 MOSFET가 사용되는 이유는 빠른 스위칭에 적합하기

    때문이에요~ 어떤 MOSFET를 사용하는가에 따라 성능이 달라지겠죠~

 ② Gate에 걸린 PWM 파형이 High 구간이라면 MOSFET은 On-state가 되어 Drain에서 Source로 전류가 흘러들어갑니다.

 ③ Source를 통해 인가된 전원은 사실 굉장히 짧은 시간의 Gate에 걸린 High 신호로 들어온 전원신호이기 때문에 실제적

    으로 엄청 고주파적인 신호가 됩니다. 이런 고주파성 신호를 L과 C로 구성된 LPF(Low Pass Filter)를 통하게 하여 고주 파성분을 제거하고 부하에 걸려 출력전압 Vo가 출력되게 되지요.

 ④ L과 C가 On-Time동안 완충상태가 되면(아시겠지만 L과 C는 에너지를 저장할 수 있는 소자입니다!) 이제 MOSFET의 Gate신호에 Low 신호를 주어 입력전원을 차단시켜 Off-State가 되게 합니다. 이렇게 되면 인덕터에 저장되었던 에너지가 방전을 시작하고, 순간적이지만 마치 입력전원처럼 작용하여 계속적으로 부하에 전원을 공급해주게 됩니다.

 ⑤ 이 때 MOSFET를 제외하고 Close-Loop를 생성하기 위해서 중간에 위의 그림과 같이 다이오드가 들어가게 되는 것이죠.

 이렇게 인덕터의 에너지가 모두 방출되어 전압이 어느정도 떨어지면 FeedBack을 통해 감지하고 다시 Gate를 High상태로 만들어 On-State가 되고 전원을 공급해주게 되는 원리입니다.

 

 이와 같이 MOSFET의 Gate단에 PWM 신호를 주어 입력전압보다 출력전압을 낮게 만들 수 있는 것이지요.

 따라서 출력전압과 입력전압에 대해 아래와 같은 식을 유도할 수 있습니다.

 

 Vo = D * Vi

 >> D = Duty-rate, 시비율 혹은 통류율

 

즉, 시비율 D는 0 < D < 1 의 값을 가지게 되지요. 쉽게 말하면 Gate에 걸리는 PWM 파형의 On-State Time에 따라 변한다는 거죠~

 

3) Step-Up(Boost) Converter

 DC_DC_3.jpg

Boost Convertor는 위에 설명했던 Buck Converter와는 반대로 승압을 해주는 기능을 해줍니다.

근데 사실 알아두어야 할 것이 있는데요.. 실제 공급해주는 에너지는 같은 것이니까 승압을 하던지 강압을 하던지 출력되는 에너지

는 이상적으로 같다는 것을 알아두셔야 합니다.

다시말하면 에너지 적으로 P=V*I 인데.. V값을 낮추면 I값은 높아지는 것이고, V값을 높이면 I값는 감소한다는 거에요.

따라서 Boost convertor를 사용한다면 그만큼 공급되는 전류값는 작아진다는 의미입니다.

예를 들어 5V, 1A를 공급해 주었는데 12V, 1A로 공급해줄 수는 없다는 거에요~ 5*1 = 5W니까.. 12 * 0.416 = 5W가 된다는 것이

지요.. 즉, 1A에서 400mA로 공급되는 전류값은 낮아진다는 의미입니다. 그것을 꼭 염두해 주셔야 해욧!

 

다시 설명으로 들어가자면.. 원리는 Buck 컨버터와 비슷하고.. 모양도 은근히 비슷하네요..

MOSFET와 L, Diode의 위치가 각각 변경되었군요..

동작원리를 살펴보면요..

 ① On-State 동안 인턱터 L이 충전이 되겠구요..

 ② L의 충전이 완충이 되면 Off State로 들어가게 되고 이 때 본래의 입력전압 Vi와 인덕터에서 방전되는 VL이 더해져서

    부하와 캐패시터에 전원을 공급하게 되겠네요~ 전류의 방향은 위의 그림과 같구요~ 폐회로를 위해서 MOSFET의 다이오드를 통해 전류가 흐르고 있음을 주의하시길 바래요~

 ③ 이렇게 Off-State에서 본래의 전원과 인덕터에서 충전된 에너지가 같이 공급되기 때문에 실제 공급되는 전압은

    Vi + VL이 되어 본래 전압보다 VL의 전압이 더 승압되어서 부하에 공급되기 때문에 승압이 되는 것입니다.

 

4) Boost-Buck Converter

DC_DC_4.jpg

Boost-buck converter는 Boost와 Buck의 회로모양을 조금씩 따라하여 승압과 강압을 시비율 D에 따라서 결정해 줄 수 있는 회로입니다. 즉, 시비율이 0.5보다 크게 되면 승압이 되고, 0.5보다 작으면 강압이 되는 뭐 그런 원리이지요~

동작원리는 Boost와 비슷하게 인덕터L가 On-state동안 충전되다가, Off-state가 되면 다이오드의 방향에 따라 인덕터가 방전되면서 역방향 전류가 부하와 캐패시터에 흐르게 되어있습니다.

다시 한번 말씀드리지만 전원의 극성이 Negative로 바뀐다는 것을 꼭 염두해주시길 바랍니다~

'Learning stuff' 카테고리의 다른 글

labview  (0) 2012.07.27
matlab interp  (2) 2012.07.27
OP AMP의 기본동작  (1) 2012.04.11
Open collector, Open drain  (0) 2012.04.11
schmitt trigger  (0) 2012.04.11

OP AMP의 기본동작

Learning stuff 2012. 4. 11. 11:50

봐도봐도 맨날 헤깔리는 OP AMP


뭐.... 일단 난 디테일한 부분보다는 일종의 인터페이스만 알면 되니까 ㅋㅋㅋ


OP AMP 를 해석할때 생각 하기 쉬운 방법이 있습니다. 기본적인 건 OP AMP 가 무한대의 저항의 가지는것에 있지만... 맞나?? 여튼

포인트는 두 입력 단자는 동 전위이다 에서 시작 합니다. 다시 말해 "두 입력 - , + 이 같은 전압이 되려는 쪽으로 출력은 동작한다" 가 된다. 이걸 가상 쇼트라고 그러는데 그 이유는 마치 내부적으로 두 입력단자가 쇼트된것처럼 동작하기 때문입니다. 


예를 들어 이걸보자




위 회로를 보면 + 단자가 그라운드에 연결 되어 있다. 즉 (-)단자도 0V가 되는 방향으로 변한다는거

Vi 가 0보다 커지면 (-)단자가 0이 되기 위해서는 출력은 (-)신호가 되어야한다. 그렇기 때문에 출력은 (-) 이 되고 그때 D1 으로 전류가 흐르고 D2로는 역방향으로 흘러야 하기 때문에 off 가 되는 것이라.

Vi 가 0보다 작아져도 똑같습니다. 출력이 + 신호를 보내야 하기 때문에 D2 는 순방향이 되므로 전류가 흐로고 D2는 역방향이므로 전류가 흐르지 않아요 


끝!





'Learning stuff' 카테고리의 다른 글

matlab interp  (2) 2012.07.27
Converters  (0) 2012.04.12
Open collector, Open drain  (0) 2012.04.11
schmitt trigger  (0) 2012.04.11
Monostable  (0) 2012.03.24

Open collector, Open drain

Learning stuff 2012. 4. 11. 11:33


디지털 소자를 사용하다 보면 간혹 TTL에서 개방 콜렉터(open collector)나 CMOS에서 개방 드레인(open drain)형이라는 말을 듣게 된다. 이는 도대체 무엇인가?

    이를 이해하기 위해서는 먼저 아래의 [기초 강의]에서 설명한 TTL 및 CMOS의 기본 원리나 [집중 분석]에서 설명한 토템폴(totem-pole) 방식을 이해하여야 한다.
    일반적인 TTL 소자는 출력간의 회로가 토템폴 방식으로 되어 있어서 출력단을 구성하는 2개의 트랜지스터중에서 항상 1개가 ON 상태를 유지한다. 즉, 출력이 "H" 상태인 경우에는 상위 트랜지스터가 ON되어 출력전류가 안에서 밖으로 흘러나오는(source current) 동작을 수행하고, 출력이 "L" 상태인 경우에는 하위 트랜지스터가 ON되어 출력전류가 밖에서 안으로 흘러들어가는 (sink current) 동작을 수행한다.
    CMOS 소자의 경우에도 트랜지스터가 바이폴라 트랜지스터 대신에 FET로 바뀌고 출력단 회로가 약간 다른 것을 제외하면 기본적으로는 이와 같은 동작을 한다. 즉, CMOS의 경우에는 TTL에서처럼 출력단 회로에서 저항이나 다이오드가 없이 단순히 상위 및 하위에 1개씩의 FET로만 구성된다. 이 CMOS의 경우에도 상위 및 하위 트랜지스터는 반드시 1개만 ON되는데, CMOS(Complementary MOS)라는 말은 바로 이를 가리킨다. 즉, 2개의 트랜지스터중에서 1개가 ON되면 반대로 나머지 1개는 반드시 OFF되는 출력단 구조를 상보형(complementary) 구조라고 부르는 것이다. 

    이러한 개방 콜렉터나 개방 드레인형의 디지털 소자를 사용할 때는 잘못하면 회로가 정상적으로 동작하지 않는 것은 물론이고 소자가 소손되어 망가질 수 있으므로 매우 주의해야 한다.

 


    위의 <그림 1>에서 처럼 1개의 디지털 소자 출력이 여러개의 부하를 구동하는 것은 팬아웃만 초과하지 않으면 아무 문제가 없다. 팬아웃은 쉽게 말하면 부하를 구동할 수 있는 전류 용량이며, 이 용량의 범위내에서는 올바른 디지털 출력전압 레벨을 보장할 수 있게 된다.

    그러나, <그림 2>의 경우처럼 여러개의 출력을 묶어서 1개의 부하에 연결할 필요성이 있을 때는 함부로 이렇게 하면 안된다. 그 이유는 출력단 회로의 동작원리를 생각하면 쉽게 알 수 있다. 즉, <그림 3>을 보라. TTL 소자의 경우에는 <그림 3>의 왼쪽에 해당하는데, 이때에도 1개로 묶여져 있는 모든 소자의 출력단이 항상 모두 "H" 상태나  "L" 상태를 유지한다면 별 문제가 없다. 그러나, 일반적으로 이 출력단에는 "H" 상태를 가지는 것과  "L" 상태를 가지는 것이 공존하게 될 것이다. 그렇게 되면 이들 출력단이 선으로 직접 접속되어 있으므로 곧바로 단락회로가 되어 "H" 출력단에서 흘러나온 큰 단락전류가 전류가 "L" 출력단으로 흘러들어가게 된다. 이러한 상황이 오래 방치되면 출력단의 트랜지스터들을 파괴시킬 수도 있을 것이다. 물론 토템폴의 출력단에는 윗쪽 트랜지스터의 콜렉터측에 직렬저항이 있지만 이는 수십Ω  이하의 매우 작은 값이므로 사태를 해결할 수 있는 정도가 되지 못한다.
    이러한 최악의 상황은 <그림 3>의 오른쪽과 같은 CMOS에서도 마찬가지로 발생할 수 있다. CMOS의 경우에는 그나마의 직렬저항도 없으므로 더욱 큰 단락전류가 흐르게 될 것이다.

 

    그러면 이러한 사태를 방지하려면 어떻게 해야 하는가? 그것은 2가지로 설명할 수 있다.

    첫째로, 일반적인 디지털 소자는 출력을 이와 같이 직접 접속하면 안된다. 논리적으로는 출력을 이렇게 묶으면 이는 부논리로 OR의 기능을 수행하므로 배선논리 OR(wired-OR)라고 하는데, 이를 사용하려면 그에 합당한 조건이 필요하다.
    둘째로, 꼭 이러한 wired-OR 회로를 사용해야 한다면 출력단이 전원단락을 일으키지 않는 구조를 가지는 디지털 회로를 사용하는 것인데, 이러한 출력단 회로에는 개방 콜렉터/개방 드레인형의 방식과 3상태(3-state) 방식이 있다.

 

    TTL에서 개방 콜렉터 방식으로 사용한 예를 <그림 4>의 왼쪽에 보였다. 그림에서 보듯이 개방 콜렉터 구조에서는 위쪽의 트랜지스터가 없고, 아래쪽 트랜지스터의 콜렉터가 그대로 밖으로 개방되어 출력되는 구조를 가진다. 따라서 여러개의 출력을 직접 접속하더라도 단락의 위험이 없어지게 된다. 여러개의 출력중에서 단 1개라도 "L" 상태이면 다음단의 입력은 "L"로 결정된다.(부논리로 OR) 그러나, 이들 출력이 모두 "H" 상태라면 이는 실제로 "H"가 되지 못하므로 다음단의 입력은 "H"나 "L"로 되지 못하고 부동상태(floating state)에 있게된다. 따라서, 이러한 바람직하지 않은 결과를 방지하려면 개방 콜렉터형의 wired-OR 회로에서는 반드시 이 묶여진 출력단을 수KΩ 정도의 저항으로 +5V 전원에 풀업(pull-up)시켜 주어야 한다.

    CMOS에서는 똑같은 상황을 개방 드레인이라고 부르며, 역시 이에 관한 회로를 보이면 <그림 4>의 오른쪽과 같다.

    이러한 개방 콜렉터나 개방 드레인 회로가 사용되는 전형적인 예는 여러개의 주변장치가 CPU에게 인터럽트를 요구하는 인터럽트 신호선이다. 대부분의 마이크로프로세서에서 인터럽트 신호선은 low active로 되어 있으며, 이 경우에는 개방 콜렉터나 개방 드레인 회로가 그대로 적용될 수 있는 것이다.

 

    한편, 이처럼 출력단을 1개로 묶어 사용하는 것은 3상태 회로를 사용하여 구성할 수도 있다. 그러나, 이 경우에는 모든 출력단을 하이 임피던스 상태(Z)로 disable시켜 놓았다가 필요할 때마다 다음 단의 입력으로 연결하고자 하는 출력단 1개만을 enable시키는 방법으로 제어해야만 한다. 이러한 예는 마이크로프로세서 시스템에서 모든 칩선택 신호들이 주변장치들중에서 오직 1개만을 데이터 버스에 선택적으로 접속하는 동작이 이에 해당하며, RS-485 통신에서의 수신부 회로에서도 이러한 구조가 적용됨을 찾아볼 수 있다.

 

    이상에서 보았듯이 개방 콜렉터/개방 드레인 구조나 3상태 구조를 가지는 소자는 일반 상보형 동작을 수행하는 디지털 소자와 매우 다르게 사용된다. 따라서, TTL이나 CMOS 소자들에서는 이러한 특이 출력형의 소자들을 나머지의 일반 소자들과 엄격히 구분하여 표시하고 있다. 예를 들면 6개의 인버터를 포함하는 7404는 "Hex Inverter"라고 부르지만, 이것의 개방 콜렉터형인 7405는 "Hex Inverter with Open-Collector Outputs"라고 부른다.

'Learning stuff' 카테고리의 다른 글

Converters  (0) 2012.04.12
OP AMP의 기본동작  (1) 2012.04.11
schmitt trigger  (0) 2012.04.11
Monostable  (0) 2012.03.24
낸드으 플래시_1  (0) 2012.03.13

schmitt trigger

Learning stuff 2012. 4. 11. 11:32

[ Schmitt Trigger ]

  Schmitt Trigger는 미국의 과학자 Otto H. Schmitt에 의해 발명된 일종의 비교기로써, 하나의 입력 전압과 출력 전압, 두 개의 threshold를 가진다. negative feedback을 사용하는 비교기로, OP Amp의 구조를 가지며 대부분 inverter로 사용된다.


< Schmitt Trigger 회로 >


  즉, input 신호로 low threshold 보다 낮은 전압이 인가되면 출력은 high로, high threshold 보다 높은 전압이 인가되면 출력은 low가 되며, 두 개의 threshold 사이의 전압이 인가되면 그 값을 유지한다. 
threshold가 하나인 유사한 시스템의 경우, 입력 신호에 noise가 섞여 threshold에 비슷한 전압이 인가되면 스위치를 순식간에 on/off 시킬 수 있기 때문에 두 개의 threshold를 사용하는 Schmitt Trigger가 더 안정적이다. 그러므로 사람의 손 떨림으로 인해 값이 여러번 입력되는 등의 switch noise를 제거할 수 있다.

슈미트 트리거 [ Schmitt triger ]

히스테리시스 특성을 갖도록 한 비교기. 비교기는 하나의 전압을 다른 기준 전압과 비교하기 위한 것인데, 비교기의 입력 측에 나타나는 잡음 전압은 출력 측에 오차를 유발하기 때문에 비교기가 잡음에 둔감하게 작용하도록 히스테리시스 정궤환법을 사용한다. 히스테리시스는 입력 전압이 높은 값에서 낮은 값으로 갈 때보다 낮은 값에서 높은 값으로 갈 때 높은 레벨이 되므로, 2개의 트리거 레벨이 절체 동작에서 오프셋 또는 지연되는 특성을 이용하여 입력에 포함된 약간의 잡음은 출력에 영향을 미치지 못하도록 한 것이다.
쉽게 말로 설명하자면 High 와 Low상태의 전압이 0v와 5v의 접압차이를 보일때 입력돼는 신호는 깨끗하게 0v와 5v로 들어오는 것이 아니라 아날로그 신호와 같이 2.3v나 4v식으로 입력이 들어올 수 있다 이때 슈미트 트리거를 이용해서 기준접압을 2.5v이상은 High로 이하는 Low로 정하는 등의 방식이 가능한 하나의 비교기이다

히스테리시스 [ hysteresis ]

과거의 경력에 따라 물리적 양이 변화하는 현상. 특히 자기 히스테리시스를 단지 히스테리시스라고 할 때도 있다. 재료가 환경의 조건에 따라서 성질이 바뀌는데, 그 재료에 의해서 나타나는 현상. IC에서는 정궤환을 건 회로에서 입력 전압변화에 관계되는 출력이 되는 상태로서 입력 특성이 불감이 되는 폭을 말한다. 이력현상이라고도 한다.

그나저나 논리 설계에서 별걸 다 배우네.... 쩝

'Learning stuff' 카테고리의 다른 글

OP AMP의 기본동작  (1) 2012.04.11
Open collector, Open drain  (0) 2012.04.11
Monostable  (0) 2012.03.24
낸드으 플래시_1  (0) 2012.03.13
SDK axi_timer_ds764  (0) 2012.03.05

Monostable

Learning stuff 2012. 3. 24. 20:41

 

  

 

1Monostable  회로

 





trigger 신호를 일정시간동안 high 상태로 유지시켜주는 회로입니다.

저항은 470k옴을 직렬 6개 달았고 캐패시터는 0.33마이크로 패럿을 5개 병렬로 달아서    RC  delay값을 약 3.2 sec정도가 되도록 만들었습니다.  Vin에서 입력이 들어오면캡 양쪽 에서의 전압이 0V로 떨어지고 캡 왼쪽에서의 전압이 0V에서 캡의 영향으로Exponential  의 형태로 전압이 충전이 되며 약 3.2sec 후에는 inverter  threshold인 약 2.5V(이론상의 값)을 넘으면서 inverter output 0으로 바뀌면서 NOR Output 의 값이 상승하여 캡 양쪽의 전압이 5V이상이 되어서LEDoff된다물론 NOR gate의 출력 저항이 유한한 경우에는 입력에 펄스가 가해지더라도 0V까지 바로 떨어지지는 못하고 또한 Inverterthreshold 도 가정을 한 2.5V가 아니기 때문에 생성되는 펄스 폭에 어느정도의 오차가 존재 할 수 있을것이다. 하지만 회로를 구성한 후 실험을 하였을 때에 NOR gate의 출력이 0V까지 떨어지지 않고 2V 정도 밖에 떨어지지 않아서 inverter가 가지는 Vih값을 넘어버려 1로 인식을 해 버리는 데에서 문제가 생겼다.

 

 


 

 

2Monostable 회로




 

2번 회로는 mosfet을 이용한 것으로 스위치가  Open 시에는 캡 위에서의 전압이 5V로 유지되어 LEDOn 된 상태로 유지된다. 이때 스위치를 닫으면 즉 Short시키면 캡 양쪽의 전압이 0V로 낮아지고 스위치를 때면 mosfet이 캡으로 충전이 시작된다.  Mosfetgatevoltagemosfet  threshold 2V 를 넘으면 다시 LEDON이 된다

'Learning stuff' 카테고리의 다른 글

Open collector, Open drain  (0) 2012.04.11
schmitt trigger  (0) 2012.04.11
낸드으 플래시_1  (0) 2012.03.13
SDK axi_timer_ds764  (0) 2012.03.05
Bypass Capacitor  (0) 2012.02.07

낸드으 플래시_1

Learning stuff 2012. 3. 13. 10:48
낸드 플래시 메모리는 주로 대용량 자료를 deal with 할떄 쓰인다.
우선 낸드 플래시는 바이너리 데이터를 가지고 있다고 하더라도 자체에서 실행이 안된다. 그러면 어떻게 해주냐 Main binary를  SDRAM 으로 복사를 하고 난 후 SDRAM 에서 돌아간다는거.... 그러면 이 복사는 또 누가 해주냐 그건 부트로더(Boot loader)가 해 줍니다. 그래서 낸드 플래시로 지원 해 주는 임베디드 시스템을 들여다 보면 보통 낸드 플래시 부트로더와 internal RAM 이 함께 있게 된다는거. 즉 임베디드를 ON 해주면 Flash에 있는 부트 로더를 internal RAM으로 자동 복사 해 주고 그 안에서 로드된 부트 로더가 나머지 일을 해 줍니다.

 
그렇다면 낸드 플레시는 왜 위와 같은 스펙을 가지게 되었는것인가...  NOR 와는 달리!
제가 Orcad로 Nand  flah 가 mount 된 딤형태의 머시기 그 .... 여튼 그런걸 제작할때도 그렇던데 얘는 Address 를 안 쓰더라고요. 즉 노어 플래시와 에스디램은 주소를 표현하기 위해서 시피유와 메모리 사이에 데이터와 어드레스 라인을 연결하지만 낸드 플래시는 데이터 라인과 어드레스 라인을 연결하지 않아요. 그리고 그만큼의 space도 줄일 수 있겠지요.  
 
위와 같이 만드니까 작아져서 크기도 줄일 수 있고 라인도 몇개 연결 안되니 간단하고 용량까지 훨씬 크고 또한 중요한건 얘가 단가가 싸다는거.... 그니까 대충 어떤 스타일인지 감이 잡힌다. 대용량용(?)이라 해야되나

낸드 플레시 컨트롤러를 간단히 정리 해 보자면 다음과 같아요

ALE

  -     Address Latch Enable

-        낸드의 몇번째 페이지인지 알려주기 위해서 필요

 

CLE

-         Command Latch Enable

-        Erase, Read, Write 같은 command를 보내기 위해서 필요

 RE

   -     Read Enable

CE

WE

   -     Write Enable
 
근데 주소가 없으면 데이터에 어떻게 접근을 할까??
낸드 플래시는 주소를 표현할 때 블럭으로 표시를 해줍니다. 블럭은 작은 페이지로 이루어 져 있고 한 페이지는 각각 256byte 2Kbyte 4Kbyte 짜리로 나눌 수 있습니다.


page -> block -> plane -> device 순이지요

읽기 쓰기는 page단위로, 지우기는 block 단위로 동작을 합니다. 그래서 낸드 플레시는 노어와는 달리 배드 블럭 처리를 해 줘야 해요. 베드 블럭 처리는 일반적으로  XSR 방식으로 해 줍니다. 아 참 배드 블럭이란 그냥 쉽게 말해서 고장난 블럭 부분을 찾아내서 씨피유한테 가르쳐 주는 거에요.


그리고 지우기 동작
지우기 동작은 ALE  로 주소를 주고(참고로 낸드는 주소가 없으니 낸드 플래시 컨트롤러에 죠야 합니다) 다음과 같이 두 싸이클에 통해서 명령어가 들어가게 되어 있어요.


그리고 낸드 플래시의 페이지 정보를 주기 위해서는 3사이클이 필요 하네요.


페이지 정보는 2번째 3번째 사이클에서 정해 진다고 하니 명령어 2번 페이지 정보 2번 총 4번의 동작을 하면 됩니다.
하드웨어 디버거로 동작하는건 잘 모르겠고
씨 프로그램으로 구현을 하면 다음과 같네여
 
#define NFCMD                   *(volatile unsigned char *)(0x4E000004)
#define NFADDR                  *(volatile unsigned char *)(0x4E000008)
#define NFDATA                  *(volatile unsigned char *)(0x4E00000C)
#define NFSTAT                  *(volatile unsigned char *)(0x4E000010)
#define NFEnable()              *(volatile unsigned long *)(0x4E000000) &= ~(1<<11)
#define NFDisable()             *(volatile unsigned long *)(0x4E000000) |=  (1<<11)
#define CMD_READ0               0x00
#define CMD_READ1               0x01
#define CMD_READ2               0x50
#define CMD_BLOCK_ERASE         0x60
#define CMD_READ_STATUS         0x70

void erase (void)
{

row = theParam->start_addr;
len=theParam->size>>14; 

NFEnable();

NFCMD = CMD_BLOCK_ERASE;
NFADDR = (row >> 9) & 0xFF;
NFADDR = (row>>17)&0xFF;
NFCMD = 0xD0;
   

  ㅇ

'Learning stuff' 카테고리의 다른 글

schmitt trigger  (0) 2012.04.11
Monostable  (0) 2012.03.24
SDK axi_timer_ds764  (0) 2012.03.05
Bypass Capacitor  (0) 2012.02.07
Mutual Information  (0) 2012.02.07

SDK axi_timer_ds764

Learning stuff 2012. 3. 5. 21:12

Gernerate mode

 

  -       The value loaded into the load register and it is called the generate value.

 -       Load bit is in the TCSR(Timer Control Status Register)

o   1 : load the counter

  -       ARHT(Auto Reload/Hold)

o   1 : roll over all ‘1’s to all ‘0’

  -       GENT(Generate_out)

o   1 : output pulse is generated

 

Capture mode

 

  -       The value of the counter is stored in the load register

-         TINT bit set

  -       Counter up or down is dependent on the UDT bit

-         The capture signal is sampled within the Timer/Counter with the S_AXI_ACLK

-         Capture event is defined as the transition on the sampled to the asserted state

-         ARHT bit

o   0 : capture event occurs

o   If the load register is  not read, subsequence capture events do not update the load register and are lost

o   1 : In contrast with the ‘0’, overwriting

  -       UDT : Count  up or down

 

Pulse Width Modulation mode

 

-         Control frequency and duty factor

-         Timer0 : period ; Timer1 : high time for the PWM0 output

-         MDT bit in the TCSR set to ‘0’

-         PWMA0 bit & PWMB0 bit in TCSR1 must be set to ‘1’

-         Both Generate_Out bit must be set

-         C_GEN0_ASSERT & C_GEN1_ASSERT must be set to ‘1’

  -       Period and Duty factor can be determined by the TLR0(Timer Load Register)&TLR1

o   When UDT=’0’

§  PWM_PERIOD = (MAX_COUNT–TLR0 + 2) * AXI_CLOCK_PERIOD

§  PWM_HIGH_TIME = (MAX_COUNT-TLR1+2) *AXI_CLOCK_PERIOD

o   When UDT=’1’

§  PWM_PERIOD = (TLR0+2)*AXI_CLOCK_PERIOD

§  PWM_HIGH_TIME=(TLR1+2)*AXI_CLOCK_PERIOD

 

 

 

 

Cascade mode

 

  -       Two timer/counter are cascaded to operate as a single 64-bit counter/timer

-         C_ONE_TIMER_ONLY should be set to’0’

-         C_COUNT_WIDTH should be set to ‘32’(width of each timer)

-         When UDP=’1’

o   TIMING_INTERVERVAL = (TLR + 4)*AXI_CLOCK_PERIOD

-         When UDP= ‘0’

o   TIMING_INTERVERVAL = (MAX_COUNT-TLR+4)*AXI_CLOCK_PERIOD

 

Interrupt

 

  -       TC interrupt signals can be signaled or disabled with the ENIT bit in the TCST

 

Register Data Types and Organization : Little endian!(Byte, Half word, Word)

 

 

Registers

 

-         TCSR0(Timer Control Status Register)

-         TLR0(Timer Load Register)

-         TCR0(Timer/Counter Register)

-         TLR1

  -       T CR1

 

TCSR0

 

  -       CASC

o   Enable cascade mode of timers

o   0 : Disable cascaded operation

o   1 : Enable cascaded operation

-         ENALL

o   Enable All Timers

o   0  : No effect on timers

o   1 : Enable all timers

-       PWMA0

o   Enable Pulse Width Modulation for Timer0

o   0 : disable

o   1 : enable

  -       T0int

o   Timer interrupt

o   0 : No interrupt has occurred

o   1 : Interrupt has occurred

o   Writing 1 : Clear T0INT(Clear to ‘0’)

-         ENT0

o   0 : Disable timer

o   1 : Enable timer

-         ENIT0

o   Enable Interrupt for timer0

o   0 : Disable interrupt

o   1 : Enable interrupt

  -       LOAD0

o   1 : Loads timer with value in TLR0

-          ARHT0

o   Auto Reload/Hold Timer0

o   0 : Hold counter or capture trigger

o   1 : Reload generate value or overwrite capture value

-         CAPT0

o   Enable External Capture Trigger

o   1 : Enable

  -       GENT0

o   Enable External generate signal timer

o   1 : Enable

-         UDT0

o   UP/DOWN Count timer0

-         MDT0

o   Timer0 Mode

o   0 : Timer mode is generate

o   1 : Timer mode is Capture


그렇다고.....ㅋ

 

'Learning stuff' 카테고리의 다른 글

Monostable  (0) 2012.03.24
낸드으 플래시_1  (0) 2012.03.13
Bypass Capacitor  (0) 2012.02.07
Mutual Information  (0) 2012.02.07
Information Theory 의 basic principle  (0) 2012.02.07

외할아버지 상 당하시다

Everyday 2012. 2. 20. 16:52


‎9월 10일 금요일 여느때처럼 학식에서 밥을 먹고왔는데 부재중전화가 여러통 찍혀

있었다. 벨이 울리고 외할아버지가 돌아가셨으니 빨리 오라는 어머니의 힘겨운 목소리가 들렸다. 편찮으셨으나 조금 갑작스러운 일이어서 정신없이 집에들러 양복을 챙기고 비몽사몽간에 새벽차를 타고 대구에 내려왔다. 내려올때 그리고 내려와서도 어느정도 실감이 안났다. 뇌 종양 판정을 받고 한 1년 2개월 정도 계속 투병 생활을 하셔서 어느 정도 예상은 했지만 예상보다는 조금 빠른감이 없지 않아 있어서인것 같다. 입관을 보고서야 실감이 났다. 4일장을 치루었고 오늘 장례미사 화장 발인을 마지막으로 할아버지를 보내드렸다. 이런 글을 올리는 이유는 그냥 뭔가를 믿든 믿지않든 단 오초만이라도 눈감고 영일이외할아버지께서 좋은곳에 가도록 해줍사 기도해주시길 바라는 마음에서이다_

'Everyday' 카테고리의 다른 글

  (0) 2013.03.15
아ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ  (0) 2012.06.22
2012/5/5  (0) 2012.05.05
2012_2_20  (0) 2012.02.20
2012_2_7  (0) 2012.02.07

2012_2_20

Everyday 2012. 2. 20. 16:25
육체적으로 정신적으로 힘든 일주일이었음

4일장 부터 시작해서 몸살기 있는 몸이끌고 새벽기차타고 와서 바로 이일 교육에 멘붕에다가 이일동안 랩실이사에 정리 금욜밤부터 짐싸기 시작해서 어제 방빼고 이사 신림으로 집옮기고 계속 잠도 지대로 못잤네 형집에서 잠시 기생하믄거라 눈치도 많이 보이고ㅋ

 어쨌든 그래서 관리를 안했네

오늘부터 뭔가를 맡았다.
SODIMM 이라는데 아직은 무슨 소리인지 전혀 모르겠다. 일단 관련 자료랑 무엇을 할지 전체적인 설명을 들었다.
월요일인만큼 다 훌훌 털고 새로운 마음으로 시작해야겠다. 

'Everyday' 카테고리의 다른 글

  (0) 2013.03.15
아ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ  (0) 2012.06.22
2012/5/5  (0) 2012.05.05
외할아버지 상 당하시다  (0) 2012.02.20
2012_2_7  (0) 2012.02.07

Bypass Capacitor

Learning stuff 2012. 2. 7. 20:31

1. 기본적인 개념
(1) R은 직류, 교류 둘다 전류가 흐름
(2) C는 교류(주파수가 높을수록)만 흐르고, 직류(주파수=0)는 흐르지 않음.
(3) L은 직류만 흐르고, 교류는 흐르기 힘듬

2. 예를 들어 아래와 같은 회로가 있을 때 입력으로 직류와 교류를 넣어준다면

(1) 파란 화살표 부분에서 교류(ac)성분은 GND를 통해 빠져 나가고(bypass) 직류(dc) 성분만 남음.
(2) BYPASS는 어떤 신호를 지나 가게 한다는 의미, 주로 전원 LINE과 GND사이에 붙여 전원에 실린
     고주파 노이즈를 제거하여 직류 안정을 위해 사용. 
(3) logic IC의 신호가 H->L, L->H로 천이 될 때 발생하는 스파크성 노이즈를 제거함. 또한 RS232, 프린터 포트
    등의 출력 단에도 적은 용량의 콘센서를 붙여 필요 없는 고파 성분을 제거함.


참고) 보통 104는 바이패스용으로 사용, 100uF/25V 전해 콘덴서는 필터용으로 사용
1. 바이패스용은 IC마다 전원단자에 사용(반드시 세라믹 사용, 되도록 smd type 권장)
2. 필터용은 전원 초입(정류 회로 혹은 DC공급 단자)에 붙이는 것이 바람직

참고) 커플링 캐피시터
  바이패스나 커플링은 동일한 캐패시터라고 할 수 있고, 다만 용도가 다르게 사용하는 것이라고 할 수 있음.
(1) 바이패스 : 특정 주파수에 공진, 그 주파수의 노이즈 성분을 GND로 흘리거나 특정 주파수 성분만 다음
                    블록으로 흘려주는 역활
(2) 커플링 : 주로 한단과 다른 단을 결합시켜주는 역할
                각 단에는 보통 dc bias가 걸려있어서 다른단의 dc특성에 영향을 주지 않고 결합시켜 주기 위하여
                dc는 차단하고 신호 성분만 다음단으로 연결시켜주는 역할

'Learning stuff' 카테고리의 다른 글

Monostable  (0) 2012.03.24
낸드으 플래시_1  (0) 2012.03.13
SDK axi_timer_ds764  (0) 2012.03.05
Mutual Information  (0) 2012.02.07
Information Theory 의 basic principle  (0) 2012.02.07