회로설계에서 전해 콘덴서가 사용되는 목적은 여러 가지가 있는데, 그중에서 평활용으로 사용되는 이유가 가장 많을듯합니다. 약 10여년전 회로설계를 마치고 DR (Design Review)를 고객으로부터 요청받고 준비하는 과정 중 평활용 전해콘덴서의 ESR 값이 어떻게 되냐는 질문을 받고 대답을 하지 못하고 돌아와 온 부서에 화들짝 긴장을 하게 된 사건이 있은 뒤 ESR 값 때문에 설왕설래했던 기억이 있습니다. 그래서 이에 대해 자세히 정리해볼까 합니다.

 

1. ESR (등가 직렬 저항)) 이란?

 

 이상적인 콘덴서의 용량 성분 이외에 존재하는 작용으로 충 방전 전류량이 많은 회로에서 사용되는 모든 커패시터는 ESR을 고려해야 되는데, 여기서 충방전이 잦은 리플 제거용 커패시터의 충방전 전류가 흐르는 곳은 ESR 저항이 최대한 작은 것으로 사용해야 한다는 결론에 이른다. 커패시터의 등가 직렬 저항 (ESR)은 매우 높은 주파수에서 또한 유전체 특성이 반영된 커패시터의 AC 임피던스로서 정의된다. 이는 온도와 주파수에 의해서 변동되고 커패시터의 품질을 결정짓는 중요한 요소 이기도하다.

 혹은 어떤 이는쉽게 이해를 시키고자 그랬는지 콘덴서 내부 직렬 저항이라고 설명을 하기도 하는데, 이는 약간 다른 의미의 저항이다. 직류 저항이라는 것은 콘덴서의 충전된 전하가 장시간에 걸쳐 자연 방전되는 현상을 말하는 것이고, 이 또한 존재하는 현상이기는 하지만 ESR의 의미와는 조금 다르다.

 

 주파수가 있는 조건에서 존재하는 저항 성분이다. 유전체의 특성에 의존하는데 유전체의 두께가 증가하면 그 ESR 은 증가하고, 전극 표면이 증가하면 ESR 값이 감소된다.  부품의 크기를 무한정 크게 만들 수 없는 환경을 고려해 본다면 알루미늄판 등 두 개의 금속판을 절연을 유지하면서 둘둘 말아서 제조하는 콘덴서의 성상 용량 값이 큰 부품일수록 ESR 값이 더 커질 수 있다는 것이다.

 세라믹 커패시터가 일반적으로 전해 커패시터보다 작은 ESR값을 갖는데 보통은 0.01~0.1 Ω 정도이고 전해 커패시터는Ω 정도로 형성된다. 그래서 ESR 값이 낮은 커패시터를 사용해야 할 곳은 되도록 세라믹 재질의 부품을 사용한다. 지금은 고용량 세라믹 커패시터가 많이 출시되어 사용하는데 큰 어려움이 없으나. 10여 년 전 상황에서는 가격도 비싸고 고용량의 세라믹 커패시터가 희귀한 경우도 있었다. 그래서 커패시터 제조업체서 만들어진 Low ESR 시리즈의 부품이 출시되어 고가에 판매된 적도 있었다. 지금도 물론 사용되지만 가격은 약간 조정되어 별 차이가 없기도 한다. 가격적인 차이보다는 공간 활용 면에서 세라믹 커패시터가 더 많이 사용되는 실정이다. 그리고 칩 제조사의 레퍼런스 디자인도 세라믹 커패시터를 주로 사용하는 이유이기도 하다.

 

 위에서 그림은 커패시터의 임피던스 Z와 주파수 F의 특성을 나타내는 그래프이다. f1 이하 대역은 1/ωC에 의하여 임피던스 Z가 저하하는 부분이고, f1~f2 대역은 ESR에 이해 형성되는 임피던스, 그리고 f2 이상 대역은 ωL에 의하여 임피던스 Z가 상승하는 부분이다. 우리가 전해콘덴서를 추가하여 리플을 제거하고자 한다면 f1~f2 대역 사이에서 제일 낮은 ESR 값이 적용되도록 리플의 주파수가 그 사이에 있어야 한다. 그보다 작거나 큰 대역에서 사용한다면 ESR 저항은 실제보다 큰 값으로 작용한다. 예를 들어 상용 전압을 트랜스를 거쳐 필요 전압으로 뽑아내고 반파 또는 전파 정류를 한 이후 평활용 전해콘덴서를 적용했다면 약 60~120Hz 이내에 들어갈 것이고, 그래프 상 f1이하 대역에 포함될 것이다. 이런 경우 그 회로에서는 예상치 못한 문제점이 발생할 수 있다.

 

2. ESR 이 왜 작아야 하나?

 

 일반적으로 스위칭 레귤레이터의 기본회로를 보면 오른쪽 맨 마지막은 평활용 콘덴서를 사용하게 되는데, 여기서 인덕터를 지난 곳에 파형은 오른쪽 파형처럼 리플이 섞여있는 파형이 관측되고 이 성분은 커패시터의 충방전 전류가 흐르면서 결국은 리플 전류가 GND로 빠져나가 결국엔 리플 파형이 제거된 DC 형태의 파형이 얻어지게 된다. 여기서 중요한 점은 리플 전류가 결국 GND로 흘러간다는 것이다. 리플 전원이 항상 생성되는 곳이기 때문에 리플 전류 또한 회로가 동작되는 한 항상 전류가 흐르게 되는데, 이때 소모되는 전력량[W]I 2 (전류) x R(저항)으로 계산해 볼 때 전류는 리플 전압 크기에 종속되지만 저항은 더 작은 것으로 선택이 가능하다는 원리가 생성된다. 결국 저항을 줄임으로써 그 부품에 발열량을 줄일 수 있다는 것이다. 결국은 높은 저항과 전류에 의해 부품에 누적되는 발열량이 다르다는 것이고 또 부품 수명에도 상관이 있다는 것이다.

 

ⓐ 스위칭 레귤레이터 에서 평활용 콘덴서         ⓑ 평활용 콘덴서에서 리플이 제거되는 파형 

 

 전해콘덴서에 리플 전류가 흐르면 콘덴서의 내부 손실에 의하여 발열이 되는데, 발생하는 열 [W]는 실제 1초당 0.24 I 2 X R 나타낼 수 있다. 0.24라는 상수를 가지게 되는 이유는 유전율 특성에 기인하는 것으로 보인다. 발열이 심하게 되면 콘덴서 소자의 전해액 변질, 산화피막의 열화, 누설전류 증대 등의 현상이 일어나게 되어 콘덴서의 성능을 저하시키거나 고장을 일으키는 원인이 된다. 리플 전류로 인한 전체 용량의 감소는 유전체 저항을 증가시키게 되어 더욱더 발열을 촉진시킨다. 특히, 알루미늄 전해콘덴서는 다른 콘덴서에 비해 손실 값이 크기 때문에 리플 전류에 주의할 필요가 있다.

 

2. 발열이 누적되면 어떻게 되나?

 

 전해콘덴서의 “고온 부하특성“라는 것이 있다. 일반적으로 최고 사용 온도에서 정격전압을 인가하여 가속적으로 시험을 실시하여 콘덴서의 신뢰성을 확인하는 시험을 말하는데, 이 시험을 행한 후에 콘덴서의 정전용량, 손실 값의 변화 그리고 누설전류의 변화 등을 확인한다. 일반적으로 고온 부하시험 후에는 정전용량의 감소, 손실 값의 증가, 누설전류의 감소 현상이 나타나며 돌발 고장으로 펑크(Punc), 쇼트(Short), 단선(Open) 그리고 발생가스(Gas)로 인한 폭파 등이 발생된다.

 또한 전해콘덴서의 “무부하 특성(방치 특성)”라는 것이 있다. 일반적으로 최고 사용 온도에서 어떠한 전압을 인가하지 않고 방치된 상태에서 가속적으로 시험을 행하는 것을 말하는데, 고온 부하 시험과 마찬가지로 시험의 콘덴서 정전용량, 손실 값의 변화 그리고 누설전류의 변화 등을 확인하게 된다. 특성의 변화면에서는 고온 부하 시험과 비슷한 양상을 나타내는데, 누설전류는 오리혀 상승하는 현상이 나타난다. 이는 유전체인 산화알루미늄(Al2O3)에매우 활동성이 강한 전해액이 침투한 상태로 장시간 방치됨으로 인하여 산화알루미늄이 서서히 용해되어 내압이 저하되고 누설전류가 증대되기 때문이다.

 사용 온도 범위가 정해져 있어서 그 범위 내에서 사용한다고 해도, 의도치 않게 누적되는 발열에 의해서 온도 계수가 달라지는 경우가 있다. 용량 온도특성(TC)이 규정된 온도 범위커패시턴스 값의 최대 변화를 말하는데, 일반적으로 커패시터 본체에 인쇄된 커패시턴스 값은 온도 25℃를 기준으로 측정되며 데이터 시트에 언급된 커패시터의 TC 온도 계수 이하 또는 이상에서 작동하는 애플리케이션에 대해 고려해야 한다. 일반적으로 온도 계수는 섭씨 100만 분의 1 단위 (PPM / )또는 특정 온도 범위에 따른 백분율 변화로 표시된다. 그의 예는 COG, X7R, YUV 등 출시되는 제품의 시리즈로 구분하고 있다.

 

3. 데이터 시트에 ESR 표기가 없다.

 

 최근 전해콘덴서 데이터 시트를 보면 ESR 값 표기가 있다. 10여 년 전 만해도 친절하게 "주파수 100kHz 에서 ESR 값은 얼마입니다." 이렇게 표기된 데이터 시트를찾아보기란 정말 어려웠다. 그리고 ESR, ESL 측정 가능한 저렴한 계측기도 많이 보급이 되어서 간단하게 측정도 해볼 수 있게 되어 참으로 편해졌다. 그리고 제조사에 요구를 해서 별도의 시트로 측정 데이터를 확보하는 경우도 있다. 그런데 예전엔 그런 인프라가 안 되어 있기도 했고, 별도의 Low ESR 시리즈를 출시해서 그것을 사용하도록 유도하기도 했었다. 그리고 또 레퍼런스 회로에 사용된 콘덴서와 동일한 제품을 사용하도록 분위기가 만연해 있었다. 엔지니어 특성상 그대로 쓰라면 써 라고 하면 기분이 언짢아지는 것은 나뿐만은 아닐 듯 다 같은 마음일 것이다.

 아래 그림은 검색에서 찾아낸 전해콘덴서 데이터 시트 일부분이다. 첫 번째 것은 최근 ESR 값을 각 용량별로 표기한 부분이다. 이렇게만 예전에도 정보제공이 되었다면 설계하기 참 편했을 텐데~

 두 번째 것은 해당 부품의 데이터 시트에서 ESR 값을 구하는 공식을 소개했다. 여기서 중요한 것은 Dissipation Factor 물론 첫 번째처럼 친절하게 각 용량별 ESR 값을 제시하지 않았지만 제시한 공식에 의해서 추정치를 구할 수 있게는 했으니 그나마 다행이다. 마지막은 국내산 부품 제조사이고 별도의 한 페이지짜리 성적서가 검색되어 발췌를 해 봤다. 이 제조사가 예전에는 ESR을 별도로 표기하지 않았다가 측정값을 요구하는 많은 수요 때문에 별도로 제작한 것으로 보인다그런데 이 마저도 정보가 없었던 시절이 있었다. 그때는 자구책으로 허용 리플 전류를 발췌하고 그를 근거로 해당 회로에 예상되는 리플 전류를 어떻게 해서든 도출시켜 그 범위 안에서 사용된다는 증명을 했었던 기억이 난다. 지금 생각하면 정말 한숨이 나온다. 왜냐 하면 결국 ESR 값은 리플 전류와 연관되기 때문에 리플 전류가 많을 것으로 예상되는 부위에 사용해도 부품 사용 범위에 벗어나지 않는다는 것을 증명하던 때가 생각난다.

 

전해콘덴서의 ESR 값을 각 용량별로 표기한 경우의 예
ESR 공식을 제시하는 경우의 예,     별도의 주요성능 표기한 경우의 예

 

4. 콘덴서 적용 시 몇 가지 고민들

 

ESR 저항이 작지 않은 콘덴서를 병렬로 여러 개 사용하면 ESR 이 작아지거나 또는 각 부품에 할당되는 리플 전류가 분산돼서 결국은 누적되는 발열 양이 작아지지 않을까?

 

 같은 고민을 해본 사람이 있을지 모르겠지만 한동안 나는 고민을 해봤었다. 하지만 조금 깊게 생각해보면, ESR 저항은 DC 저항과 다른 점이 주파수가 존재한다는 것이고, 뿐만 아니라 리엑턴스 성분도 존재한다는 점이 다르다. 결론적으로는 저항을 단순히 병렬연결할 때처럼 반감되지 않고, 또한 리플 전류를 동등하게 나눠서 흘려보내기도 불가능하다는 결론에 다른다. 실제로 저가로 출시된 컴퓨터 파워나 메인보드를 보면 고온이나 써지에 영향을 받아 여러 개 전해콘덴서의 배가 불러 부풀어 올라오거나 전해액이 누출된 것을 볼 수 있다. 그런 것을 보아 병렬로 연결된 콘덴서가 그런 환경적인 조건을 해결할 수 있는 것도 아닌 듯하다. 실제로 병렬로 여러 개를 연결해도 미지근한 미열은 각각의 콘덴서에 다 전달된다. 그것보다는 1/ωC에 의해서 커패시턴스가 증가되어 리플이 작아지는 효과는 볼 수 있다. 아마도 이 부분은 좀 더 고민의 시간이 필요할 듯하다. 아직 명확하고 계산적인 답을 스스로가 못 찾아서 일 것이다.

 

ⓑ 인덕터 바로 옆에 붙은 콘덴서 위치

 

  옆에 그림에서 스위칭 레귤레이터설계 시 인덕터를 지나 바로 평활용 콘덴서를 배치하게 된다. 그런데 여기서 가장 발열이 높은 부품이 바로 인덕터이다. 높은 주파수의 리플이나 구형파의 성분이 인덕터에 높은 임피던스가 형성되면서 인덕터 양단에 기전력이 발생한다. 이때 인덕터에는 높은 열로 발산된다. 그런데 회로 위치상 또는 구조상 바로 평활용 콘덴서가 올 수밖에 없는 구조이다 보니 인덕터에 열은 모두 바로 옆 콘덴서에 옮겨가게 된다. 그럼으로써 콘덴서의 수명 단축, 불안정한 커패시턴스, 발진 등의 이상현상을 유발한다.

 

ⓒ 큰 용량의 평활용 콘덴서가 만능은 아니다.

 

 어떤 디바이스에 입력되는 Vcc에 최소한의 리플 전압을 요구하는 경우가 있다. 이때는 오른쪽 그림처럼 인덕터나 비드 등의 부품으로 직렬연결 그리고 리플 제거용 콘덴서를 사용하는데 전원 소스 자체에 리플이 많다면 큰 용량의 콘덴서를 사용하게 된다. 이때 (+) 양극의 측면은 리플이 줄어드는 것이 보이기도 하고 많이들 신경 써서 설계를 하는데 대부분 GND 쪽은 소홀히 여긴다.

 GND에 연결만 하면 모든 전위는 0으로 안정될 것으로 착각을 하게 되지만 어차피 많은 양의 리플 전류가  충전 방전이 된다는 것은 많은 전류가 (+) 플러스 라인과 마찬가지로 GND 라인 에도 흐르고 있다는 것을 잊어서는 안 된다.

 

 무엇을 말하고 싶냐면, 리플 전류가 흐르는 GND 라인에 디바이스 GND와 공통 라인이 형성되고 결국 리플 전류의 충격으로 디바이스 GND도 안정되기 힘들다는 것이다. 이럴 때는GND 분리를 해줘야 하는데, GND 분리에 대해서는 다른 페이지를 통해서 좀 더 자세히 정리해 보겠다.

 

 내 경우는 GND 자체가 원 포인트 지점에 가깝다면 그냥 연결해주고, 또 안정적인 GND가 멀다면 바로 옆에 콘덴서 GND와 분리해서 다른 GND와 연결했었다. 또는 중간에 Bead를 추가해서 연결해 주었다. 물론 Bead를 추가하더라도 원 포인트 GND 와는 직접 연결이 되어야 한다. 이렇게 콘덴서도 잘못 사용하면 고유의 효과를 낼 수 없기도 하고 또 필요 이상으로 오버 설계되는 경우가 있다.

 

----THE END----

'이것저것' 카테고리의 다른 글

자동차에서 오픈 컬렉터(드레인)  (0) 2021.03.10
Wifi 안테나 DIY (두 번째)  (0) 2020.12.09
ARM Cortex-M  (0) 2017.05.31
Wifi 안테나 DIY  (0) 2017.05.02
JTAG 이란?  (0) 2017.04.16
Posted by 떼기
,

 오픈 컬렉터 또는 오픈 드레인드레인이라는 회로에 대해서 설명 해 보고자 합니다. 단순히 회로 원리 만을 알아보는 것에 그치지 않고 실제 회로설계 시 발생할 수 있는 오류에 대해서 이야기해 보려 합니다.  많은 분들이 블로그나 위키를 통해서 이해하기 아주 쉽게 설명들을 해 놓아서 조금만 검색을 해 보면 많은 정보를 볼 수가 있는데요, 다른 분들 내용 참조해서 요약을 해 봅니다.

 

1. 오픈 컬렉터 (드레인) 의 요약

 

* 오픈 컬렉터는 주로 출력포트에 구조로 사용된다. IC 내부 소자가 BJT (Bipolar Junction Transistor)로 구성된 경우는 Open Collector, 내부소자가 FET (Field Effect Transistor)의 경우는 Open Drain이라고 부른다. 조성된 소자의 차이가 있을 뿐 회로 이해나 사용법 및 개념은 동일하다고 봐야 한다.

 

* 오픈 컬렉터 / 오픈 드레인 포트에 여러 개의 Device 를 연결하여 On/Off 제어가 가능하고 또 양방향 통신도 할 수 있는 회로 기술이다. 한 개의 출력 포트에 여러 개의 디바이스 (IC)를 연결 가능하다는 것은 팬 아웃 제한에 자유롭게 설계가 가능하다는 뜻 이기도 하다.

 

* On/Off 드라이빙을 위한 전원소스를전원 소스를 레벨이 다른 새로운 전원 소스를 이용할 수 있다. 또는 다른 디바이스와 신호를 주고 받을 때 레벨이 다른 신호도 별도의 레벨시프트 없이 연결 가능하다는 것이다. 예를 들어 7 세그먼트에 숫자를 표시하기 위해MCU8비트 데이터 버스를 연결하고 그에 맞는 2진 데이터를 출력하면 7 세그먼트 내부 LED 가 점등되면서 원하는 숫자 또는 문자를 표시하게 된다. 그런데 여기서 7 세그먼트의 동작 전압과 전류가 더 많이 소모되는 대형 7 세그먼트를 사용하고 싶다고 가정하면, 보통은 증폭용 트렌지스터(TR) 트랜지스터(TR)를 사용하거나 별도의 변환 회로를 생각하게 되는데 그럴 필요가 없다. 오픈 컬렉터로8 비트 데이터 버스에 바로 연결하고 공통 핀(Common Pin)에 원하는 전원 소스를 연결하면 되는 것이다. 이 용도가 본래의 취지에 맞는 용도라해도 과언이 아니다.

 

* 오픈 컬렉터 출력 포트는 외부에 풀업 저항을 달지 않은 상태에서는 외부에서 출력이 나오지 않는다. 바로 컬렉터 (드레인) 한쪽이 오픈돼 있는 상태이여서 그렇다. 풀업 저항을 5V 전원에 연결하면 On/Off시 파형은 5V 구형파가 관찰되고 12V에 연결하면 마찬가지로 12V의 파형이 출력되는 것이다. 출력 포트에 풀 다운 저항을 연결할 경우는 없겠지만 혹시나 내가 파악하지 못한 경우가 있을지도 모르겠네요. 사실 풀 업/풀 다운 저항은 입력 핀에서 제일 많이 사용하는 기술입니다. 나중에 다른 페이지에서 좀 더 자세히 다루기로 하고 여기까지가 오픈 컬렉터의 내용은 모두 요약이 된 듯하다..

 

ⓐ 오픈 컬렉터 기본 회로,   ⓑ 한 포트에 여러개 디바이스 사용,   ⓒ 다른 전압소스 사용 예

 

2. 자동차에서 오픈 컬렉터

 

 자동차에 들어가는 각종 부품모듈에서 오픈 드레인이 어떻게 설계되고 이용되는지 좀 긴 얘기를 하려고 한다. 완성차에 들어가는 수많은 부품은 유닛(모듈) 단위로 설계가 된다. 모든 유닛은 서로 관계하는 신호를 주고받기 위해 케이블 와이어를 통해 연결된다. 그리고 모든 유닛을 한 회사에서 모두 설계를 하는 것도 아니고 수많은 회사에서 각자 전문분야에 맞는 유닛과 부품을 사용해 장착하게 되면 내가 설계한 유닛 외에 다른 유닛의 내부 회로는 알기 어려운 것이 현실이다. 그러나 내가 어떤 특정 목적의 동작을 하기 위해선 자동차의 현재 상태나 또는 현상태의 판단을 위한 센서 입력을 받아야 할 필요가 있다.

 이때 각기 다른 유닛들과 신호를 주고받으면서 신호 불일치 또는 회로 궁합이 맞지 않을 경우를 확률적으로 생각해보면 불일치될 가능성이 너무 크다. 그래서 파이롯트 단계에서 수많은 확인과 테스트를 거치는 작업이 바로 자동차 개발기간에 포함되는 이유이다.

 

여기서 조금 싫은소리를 하자면 자동차 완성업체나 모듈 설계 업체나 한 대의 차량을 설계 완성 하기까지는 정말 많은 수고를 하고 있다는 점이다. 일부 카페나 트위터에 보면 발로 만드냐? 너무 그지같이 차를 만든다 등 이런 글이나 소리를 듣게 되면 설계에 참여해 봤던 사람으로서 약간은 속상하기도 하다. 이 글을 보시는 분이라면 조금은 너그러운 마음으로 이해해 주는 넓은 아량을 베풀었으면 한다. 다시 본론으로 들어가서~

 

 한 가지 예를 들어보면 어두운 저녁시간 차량의 미등이나 헤드라이트를 켜기 위해 테일스위를 ON 하게 되면 조명뿐 아니라 계기판, 카오디오, 도어트림에 각종 버튼 들까지 모두 조명이 켜진다. 그리고 레오스타트 모듈의 다이얼을 돌리면 조명의 밝기가 동시에 조절이 된다. 이렇듯 한 개의 스위치와 한 개의 레오스타트 모듈의 신호를 받아서 여러 개의 유닛이 동기 맞춰서 밝기를 조절하기 위해서는 한 개의 신호 라인을 여러 유닛이 공유해야 한다. 이때 레오스타트 모듈의 PWM 출력 포트는 오픈 컬렉터 구조가 되어야 한다.

* 레오스타트에 대해서는 이전에 쓴 글을 참조하면 된다. https://ttegy.tistory.com/29

 

카오디오 버튼조명

차량의 조명을 켜면 카오디오 제품의 버튼 조명이 켜 집니다. 이때 제품 내부에는 LED 가 사용 됩니다. 조명의 밝기를 조절하는 조명모듈 의 동작 원리를 알아보려 합니다. (조명모듈 & 카오디오

ttegy.tistory.com

 오픈 컬렉터 구조의 출력 포트가 포함된 Master Unit 은 전류를 흘려보내주는 역할만을 하고 플업은 주로 그 포트를 이용하는 유닛에서 달게 되는데 그 포트를 이용하는 유닛에서 몇 볼트의 전압을 사용하느냐에하느냐에 따라 외형적인 전압이 달라진다.

 그 포트를 이용하는 유닛의 내부에서 12V 전압에 걸면 12V 가 외형적으로 관측되고, 5V를 사용하는 유닛은 외형적으로 5V가 관측된다. 그런데 만약 12V 전압을 이용하는 유닛과 5V를 이용하는 유닛이 동시에 이 출력 포트를 함께 이용하게 되면 어떤 일이 벌어질까? 하는 궁금증이 생긴다.

 

 그림에서 M unit의 오픈 컬렉터출력 포트를 이용하는 두 개의(A, B Unit) 유닛이 있다. 그런데 각 유닛이 사용하는 전압,풀업을 단 전압 소스가 다를 경우이다. A Unit 입장에서는 5V 보다는 높은 전위로 영향을 받을 일이 없겠지만, B Unit 입장에서는 12V 12V에 가려져 5V의 구분이 되지 않는다. 이럴때는 각 유닛에 다이오드 소자를 붙이면 피해 갈 수 있을 듯하네요..

 

 

실제로 차량에 들어가는 AVN을 설계 시 어떤 신호의 파형을 계측기로 관측해보고 몇 볼트로 On/Off 되는지 관찰 후에 설계 반영을 했는데, 나중에 그 회로가 작동이 안 되는 경우를 간혹 겪게 되는데, 어이없게도 오픈 컬렉터 구조인지 모르고 12V 의 On/Off 파형이 관측되어 여기에 TR 스위칭회로를 그냥 설계 반영하는 경우를 보게 된다.

 

 오픈 컬렉터 구조에 맞는 입력 회로 설계는 반듯이 풀업이 추가되어야 하는데 풀업 저항을 생략하고 설계를 하게 되는 오류를 보게 된다. 그렇더라도 파형을 관측한 차량 그대로만 양산이 된다면 문제가 없을 수 있으나, 쉽게 간과하는 것이 모든 차량은 각 유닛이 옵션 처리가 된다는 것이다. 쉽게 말해서 차량의 트림에 따라 또는 옵션 선택에 따라서 A Unit 이 미 장착될 경우도 있고, 또는 B Unit이 미 장착될 수도 있다는 것이다. 만약 그림처럼 B Unit 내부에서 풀업저항이 누락된 상태로 입력 회로가 설계된 상태로 A Unit 이 없어지면 B Unit 내부에서는 M unit의 출력 포트를 감지할 수가 없는 경우가 발생한다. 어떻게 보면 어처구니없어 보이지만 현장에서는 실제로 많이 일어나는 설계 오류이다. 그래서 오픈 컬렉터의 구조를 잘 이해해야 하고, 사용법을 잘 익혀야 하는 이유입니다.

 

 M Unit 입장에서 오픈 컬렉터가 아닌 토템플출력 포트로 설계를 하려면 출력 포트를 이용하는 모든 유닛에 숫자를 파악해야 할 것이다. 왜냐하면 출력 포트는 여러 개의 무한 입력 포트를 모두 충족할 수 없기 때문이다. 그리고 만일 다른 유닛에 과전류가 흘러 파괴가 되면 M Unit 이 파손될 가능성이 가장 크기 때문이다.

 

 

-----THE END-----

'이것저것' 카테고리의 다른 글

ESR (Equivalent Series Resistance)  (3) 2021.03.12
Wifi 안테나 DIY (두 번째)  (0) 2020.12.09
ARM Cortex-M  (0) 2017.05.31
Wifi 안테나 DIY  (0) 2017.05.02
JTAG 이란?  (0) 2017.04.16
Posted by 떼기
,

지난번 글(3년이 지남)에서 제작한 캔테나는 결론적으로 효과가 없었다. => ttegy.tistory.com/32?category=595470

사실 그동안 회사도 그만 두고 새로운 일을 하게 되어 시간도 많이 생겨서 지난번 제작 이후 여러 가지를 해 보았네요.

 

그동안 작업실 근처에 iptime 공유기를 비번 없이 Wifi를 고맙게도 무료로 사용하였고 그 출처가 어딘지 관심이 없다가 최근 내가 설정을 잘못 건드리는 바람에 소스가 되는 공유기에 접근하게 되었고 이걸 내 공유기의 설정인지 잘못 오인해서 비번을 설정해버려 그쪽도 인터넷이 안 되는 중대 실수를 하게 되었다. 그 바람에 공유된 곳이 어딘지도 알게 되고 결국은 비번 설정 및 차단까지 당하게 되어 이젠 사용을 못하게 되었네요. ㅠㅠ (그동안 무료로 잘 사용했습니다. 소심해서 직접은 못하고 이렇게 블로그를 통해 감사표의를 합니다.)

 

이젠 정말 약 100미터 떨어진 집에서 무선으로 끌어와 사용하는 수 밖에 없었다. 그러면서 여러 가지 Wifi 안테나를 만들어보고 테스트한 결과를 부족하나마 공유하게 되었다. 결과부터 말하자면 SkyLife 위성접시 안테나를 개조한 방식으로 다소 부족하지만 (속도나 데이터양 부분에서) 인터넷을 사용하게 되었다.

 

* 첫 번째 Bi Quad 안테나 제작

비교적 구조가 간단해 만들기가 쉬우면서 지향성 효과는 가장 극대화 할 수 있는 안테나입니다.. 아래는 실제 만들어 본 사진과 도면입니다.. 집안이나 실내에서 와이파이 안테나를 대체하면 수신율이 훨씬 향상되는 것을 볼 수 있다.

Bi Quard 안테나

https://www.changpuak.ch/electronics/bi_quad_antenna_designer.php

* 시뮬레이션 해볼 수 있는 곳인데, 현재 만들어진 도면과는 약간 상이한 부분이 있네요.

-B (가로) x H (세로) 길이를 원형 사이즈로 동일하게 입력합니다..

-D 는 금속판과 안테나 전극 사이의 간격을 뜻 합니다.

- 안테나 전극의 두께와 케이블 길이까지 파라미터에 포함됨

* 실제로 해보니 주파수 외에 다른 부분은 조절할 수가 없네요.

 

 

* 두 번째 Yagi 안테나 제작

가장 많이 본 안테나로 형태는 옛날 공중파 TV용으로 집집마다 지붕이나 옥상에 달려있던, 우리에게 가장 익숙한 형태의 안테나일 것으로 생각됩니다.

Yagi 안테나

https://www.changpuak.ch/electronics/yagi_uda_antenna.php

 

* 시뮬에이션 해 볼 수 있는 곳인데, Boom의 길이가 도파기의 숫자 변화에 따라 변동되지 않아 조금은 신뢰가 가질 않네요.

- Boom : 위 그림에서 Arm 부분을 말함 (계산기에서 도파기 숫자가 달라지면 당연히 이 부분의 길이도 변해야 되는데 안됨)

- Elements : 도파기를 말함, 개수가 늘어나면 이득이 커짐.

- Boom의 직경 : 실 제작은 비 전도성 재질(나무)로 사용되었기에 "0"을 대입해야 하나, 0.25mm 이하는 입력이 안됨.

 

 

* 계산 값이 신뢰가 가지 않아 위 도면의 공식으로 계산을 함.

* 파장 (λ) = 위상 속도(v) / 주파수(f)

 => 2.4 GHz의 파장은 12Cm, 5 GHz의 파장은 6Cm로 얻어짐

* 리액턴스 성분 보상을 위해 1.03~1.08 사이 값 상수를 적용함.

 => 12Cm * 1.04 = 12.48 (12.5Cm 적용)

* λ/2 = 6.24 Cm, λ/4 = 3.1 Cm

 

 

 

* 세 번째 Disc Yagi 안테나 제작

최근 다른 나라 유튜버들이 많이들 제작하는 안테나인데, Yagi 안테나의 변형으로 이런 모양 외에도 PCB 동박을 이용한 방식도 있고, 재질과 모양이 다양한 안테나에 한 종류이다.

Disc Yagi 안테나

시뮬레이션이나 온라인 계산기는 검색해보면 좀 나오지만 너무 어렵다. 그래서 유튜버가 소개하는 Wifi Gun 도면을 캡처해 봤고 실제로 이 치수를 참고하여 제작해 보았다. 대부분은 전산 볼트와 너트를 사용했으나 난 가지고 있는 금속 재질의 PCB 서포트가 길이별로 다양하게 있어서 이것으로 해 봤다. 그리고 "커피에 반하다" 컵으로 케이스를 만들어 봤는데 캔테나에 넣어서 제작한 유튜버도 있네요.

 

* 네 번째 Helix 안테나 제작

일명 헤리컬(나사선) 안테나라고도 불리고 지향성 안테나이기는 하지만 비교적 방향에 민감하지 않고 그래서 정밀하게 제작되지 않아도 어느 정도는 효과를 쉽게 볼 수 있는 안테나입니다.

Helix 안테나

온라인 계산기도 이득과 치수가 어느 정도 맞는 것 같습니다. 사용 주파수와 코일 Turn 수만 입력하면 나머지 파장, 이득, 안테나 임피던스 등 자동 계산되어 나오는데 코일 굵기에 대한 정보는 생략이 된 것을 보면 이 계산도 오차는 있을 것으로 예측이 되나 특이한 점은 안테나 임피던스가 대략 예측이 된다는 것이 좋네요. 그러면 입력단 또는 케이블 선정 시 참고가 될 것 같고 또 임피던스 매칭이 되어야 좋은 효과를 얻을 수 있을 것입니다.

 

* 다섯 번째 Parabolic 안테나 제작

일명 접시 안테나, 이 안테나도 여러 가지 소재를 이용해서 만드는데 원리는 첫 번째 사진처럼 굴곡진 반사판에 의해 집중되는 곳이 있고, 여기에 전파가 모여 지향성 안테나이면서 방향에 따른 수신율 저하를 최대한 극복한 안테나이다.

Parabolic 안테나

집에서 사용하다가 안 쓰게 된 스카이라이프 위성안테나를 이용했고 LNB 부분에는 내부 회로물을 제거하고 맨 처음 제작한 Bi Quad 안테나를 부착했다. LNB 부분에 이 안테나 말고 헤리컬 또는 캔테나 등 다양한 안테나를 부착할 수 있는데 Bi Quad 안테나를 부착한 이유는 케이블과 커넥터를 거치면서 발생하는 임피던스가 그나마 다른 것들과 비교해서 낮게 형성되는 것으로 보여서 매칭을 하기가 수월했다. 하단에 검은색은 Disc Yagi 안테나를 병렬로 연결했다. 이 부분을 사용하지 않고 단독으로 했을 때와 비교했을 때 아마도 임피던스 매칭 때문인지 병렬로 같이 사용했을 때 좀 더 효과가 좋았다. 달리 임피던스를 측정할 도구가 없기에 이 부분은 여러 번에 테스트를 통해 결정하게 되었다.

 

 세 번째 사진은 주방 쪽 베란다에 공유기를 설치한 모습이다. 바로 밖으로 안테나선을 내보내서 두 번째 사진처럼 안테나와 연결하기 위해 어쩔 수 없는 선택이었고 여기서 유선으로 연결해 큰 아이방으로 창문을 넘어 들어갔다.

 

 네 번째 사진은 베란다 창문을 통해 보이는 전경인데 붉은색 네모가 약 100M 떨어진 내 작업실의 위치이다. 바로 저기까지 무선 신호를 보내야 하는데 중간에 정원수가 가려 약간의 전송손실이 있고 또 전력선이 지나가면서 각도상 절묘하게 방해를 하고 있다.

 

* 여섯 번째 그 외 제작해본 다른 모양들

여러가지 테스트해본 방법들

위에서부터 여러 가지 안테나를 만들어보고 효과가 기대만큼 아니 이게 안테나가 맞나? 싶을 정도로 효과를 못 느낀 것도 있고 어떤 것은 일시적으로 잘 된 것도 있었으나 뚜렷하게 100M 거리를 뛰어넘어 집에 있는 와이파이를 잡을 수 없어던 이유 때문에 변형도 해봤고 또 두 가지를 조합해보기도 해 봤으나 모두 큰 효과를 보지는 못 했다.

 

 첫 번째 사진은 파라볼릭 안테나의 변형이고 이 안테나의 효과는 사실 시험해보지 못했다. 작업실 창문에 모두 선팅을 해 놓은 터라  외부 전파 수신이 잘 되지 않는다. 창문 밖에 설치해서 시험을 해봐야 하는데 그러질 못 했다. 최종 방법은 Parabolic + Bi Quad와 Disc Yagi 이런 조합으로 성공은 했다.

 

위에서 두 번째 사진은 작업실에서 공유기를 창문밖에 내놓고 수신을 하게 되었고 지금 이렇게 속도는 조금 느리지만 사용을 할 수 있게 되었다. 작업실에도 집에서와 동일한 접시 안테나를 사용하면 만족할 만한 수신율을 얻을 수 있을 듯하는데 위성 안테나를 구하기가 어렵네요.

 

 세 번째, 네 번째 사진은 조합 또는 변형을 해 보았는데 이것도 큰 효과는 못 봤다. 거리가 멀지 않은 실내나 지향성 효과를 보고자 하는 것이라면 효과가 어느 정도 있는 듯하다.

 

* 지금까지 제작 시험 결론

현재 속도는 공유기 설정에서 멀티 브릿지로 연결해 사용 중이고 이 정도면 유튜브 시청, 인터넷 검색, 인터넷 뱅킹 정도는 무난히 사용된다. 단지 큰 파일 다운로드는 좀 어렵다. 아마도 과거 PSTN 모뎀을 사용하던 시기 14,400 bps 속도 정도라고 하면 나와 비슷한 연배는 느낌적인 느낌 알 듯도 싶다.

 위에서 여러 가지 안테나를 제작해봤지만 모든 안테나의 이론적인 특성을 다 파악하고 세밀한 계산과 수치에 의해서 만들지는 못 했다. 아마도 그래서 큰 효과를 보지 못한 이유이기도 할 것이다. 실패했던 이유를 곰곰이 생각해보고 추측한 내용을 아래 몇 가지 짚어보고 마무리하고자 한다.

 

(실패 이유 추측)

1) 안테나 임피던스 : 임피던스 매칭은 전달 에너지의 전달률과 상관이 있는데 예측되지 않은 임피던스가 때로는 이상현상을 유발한다. 어떤 것은 2 개 붙였을 때 수신이 좋아지기도 하고 어떤 것은 오히려 더 나빠지기도 한다.

 안테나 자체에 임피던스는 심선 굵기, 커넥터, 케이블 길이, 케이블 고유의 임피던스 등 여러 가지 요소에 의해 변하는데 이 부분을 너무 간과했다. 유튜브 영상에서 제작 완성한 사람들은 너무나 쉽게 그리고 대충 만드는 것 같지만 좀 더 곰곰이 생각해보니 약간에 속임수가 들어 있는 듯~

2) 고 주파수 대역 :  가만 생각해보면 사용하는 주파수가 수백 MHz ~ 수 GHz 대역을 건드리고 있었다. 라디오같이 수 MHz 도 아니고 기가 단위 주파수는 빛과 같은 성질의 직진성을 가지고 있고 더군다나 지향성 안테나를 제작한다고 어설프게 설쳤던 게 우습다. 굉장히 예민하고 조금만 방향이 틀어져도 실패율이 높다는 결론.

3) 공유기 출력 세기 : 지금까지 사용한 공유기는 한 개 회사 제품만 사용했다. 비록 다른 모델 세 개를 다 사용해 봤지만 특성이나 수신율은 비슷비슷한 듯하다. 아마도 공유기의 안테나 출력은 법적 규제 때문에 제한을 두지 않았나 싶다. 아무리 안테나 이득만 높여봐야 효과가 그리 크지 않다는 의심을 해 본다. 지금까지 여러 개 중 접시 안테나가 그나마 좋은 효과를 보기는 했지만 그것은 지향성만 아슬아슬하게 개선시킨 것뿐 본질적으로 출력 자체를 건드린 것은 아닌 듯~

 

(결론)

정신건강에 이로운 작업은 아닌 듯싶다. 나처럼 필연적으로 원거리 송수신이 필요한 사람이라면 시행착오를 하지 말고 스카이라이프 위성안테나 솔루션이 그나마 제일 효과가 큰 방법이니 처음부터 이 방법으로 연구를 해보시고, 그게 아니고 짧은 거리 또는 실내의 영역을 넓히고자 한다면, 기존 공유기 안테나에 부착해서 지향성만 개선시키는 은박지 또는 캔맥주 솔루션을 적용해 보시라는 얘기를 전하고 싶다.

 

--- 끝 ---

 

'이것저것' 카테고리의 다른 글

ESR (Equivalent Series Resistance)  (3) 2021.03.12
자동차에서 오픈 컬렉터(드레인)  (0) 2021.03.10
ARM Cortex-M  (0) 2017.05.31
Wifi 안테나 DIY  (0) 2017.05.02
JTAG 이란?  (0) 2017.04.16
Posted by 떼기
,

ARM Cortex-M

이것저것 2017. 5. 31. 14:22

ARM Cortex-M 제품군에는 8개의 프로세서가 있고, 각 프로세서의 기능을 비교하며 애플리케이션에 적합한 프로세서를 선택하기 위한 고려 사항과 기능 및 성능에 대해 살펴봅니다.

1. 개요

현재 ARM Cortex-M 프로세서에는 8개의 제품이 있다. 초보자 뿐 아니라 ARM 아키텍처에 익숙하지 않은 칩 설계자들도 약간 혼란스러울 수 있다. 프로세서마다 서로 다른 명령어 세트 지원, 시스템 기능과 성능을 제공하기 때문이다. 이 장에서는 Cortex-M 프로세서 간의 주요 차이점과 다른 ARM 프로세서들과 어떻게 다른 것인가 알아본다.

1.1 ARM 프로세서 제품군

ARM은 오랜 기간 다양한 프로세서 제품을 개발했다. ARM 프로세서 제품군은 기존 ARM 프로세서와 신규 Cortex 프로세서 제품군으로 나눠진다(그림 1 참조).

이 프로세서들은 애플리케이션 영역을 기준으로 3가지 그룹으로 분류된다.

① 애플리케이션 프로세서다. 모바일 컴퓨팅, 스마트폰, 서버 등을 위한 하이엔드 프로세서들은 1 GHz이상의 고주파 클록에서 실행되며 리눅스, 안드로이드, MS 윈도우 및 모바일 운영체제와 같은 모든 기능을 필요로 하는 메모리 관리 장치(Memory Management Unit, 이하 MMU)를 지원한다. 이러한 운영체제를 요구하는 제품을 개발하기 위해선 애플리케이션 프로세서를 사용해야 한다.

② 리얼타임 프로세서는 하드디스크 컨트롤러, 자동차 파워 트레인과 무선 통신의 기저대역 제어와 같은 실시간 애플리케이션을 지원하는 고성능 프로세서다.

대부분의 리얼타임 프로세서에는 MMU가 없으며, 메모리 보호 장치(MPU), 캐시(Cache) 및 산업용 애플리케이션용 메모리 기능을 탑재하고 있다. 상당히 높은 클럭 주파수(200 MHz~1 GHz)에서 작동할 수 있으며, 응답 지연 시간은 매우 낮다. 이러한 프로세서들은 리눅스나 윈도우의 풀 버전을 실행할 수는 없지만, 이러한 프로세서와 함께 사용할 수 있는 실시간 운영 체제(RTOS)는 많이 있다.

③ 마이크로컨트롤러 프로세서들은 대체로 훨씬 적은 실리콘 면적과 훨씬 높은 에너지 효율성을 가지도록 설계가 되어 있다. 일반적으로 더 짧은 파이프라인을 갖추고 있으며, 일반적으로 최대 주파수는 낮지만 일부 프로세서는 200 MHz 이상 지원된다. 최신 Cortex-M 프로세서 제품군은 매우 쉽게 사용할 수 있도록 설계되어 마이크로컨트롤러와 임베디드 시스템 시장에서 인기가 많다.


▲ 그림 1. ARM 프로세서 제품군


표 1〉은 3가지 프로세서 종류의 주요 특징을 요약한다.

 

애플리케이션 프로세서

실시간 프로세서

마이크로컨트롤러 프로세서

설계

고주파 클럭, 긴 파이프 라인, 고성능, 멀티미디어 지원 (NEON 명령어 세트 확장)

고주파 클럭, 중간에서 긴 길이의 파이프 라인, 확정적 (저지연 인터럽트)

보통 더 짧은 파이프라인, 초저전력, 확정적 (저지연 인터럽트)

시스템

기능

메모리 관리 장치(MMU), 캐시 메모리, ARM TrustZone 보안 확장

메모리 보호 장치(MPU), 캐시 메모리, 밀착 결합 메모리(Tightly Coupled Memory)

메모리 보호 장치(MPU), 중첩 벡터형 인터럽트 컨트롤러(NVIC), 웨이크업 인터럽트 컨트롤러(WIC), 최신  ARM TrustZone 보안 기능 확장

목표

시장

모바일 컴퓨팅, 스마트폰, 에너지 효율 서버, 하이엔드 마이크로프로세서

산업용 마이크로컨트롤러, 자동차, 하드디스크 컨트롤러, 베이스밴드 모뎀

마이크로컨트롤러, 심층 임베디드(Deeply embedded) 시스템 (예: 센서, MEMS, 혼합 신호 IC), 사물인터넷 (IoT)

▲ 표 1. 프로세서 특징 요약


1.2 Cortex-M 프로세서 제품군 

Cortex-M 프로세서 제품군은 성능이 크게 중요하지는 않다. 그러나 이러한 프로세서는 대부분의 마이크로컨트롤러에 사용되는 다른 일반적인 프로세서와 비교할 때 여전히 강력한 성능을 발휘한다. 예를 들어 Cortex-M4와 Cortex-M7 프로세서는 최대 400 MHz 클럭 주파수로 많은 고성능 마이크로컨트롤러 제품에서 사용되고 있다.

프로세서를 선택할 때 성능이 유일한 요인은 아니다. 많은 애플리케이션에서는 저전력과 비용적인 측면이 프로세서를 선택하는데 가장 중요한 기준이다. Cortex-M 프로세서 제품군에는 여러 가지 요구 사항을 충족시킬 수 있는 다양한 제품이 있다.

프로세서

설명

Cortex-M0

저비용, 초저전력 마이크로컨트롤러 및 고도의 임베디드 애플리케이션용 초소형 프로세서(12K 게이트에서 시작)

Cortex-M0+

소형 임베디드 시스템을 위한 최고 수준의 에너지 효율 프로세서. Cortex-M0 프로세서와 비슷한 크기와 프로그래머 모델이지만 단일 사이클 I/O 인터페이스와 벡터 테이블 재배치등 추가 기능이 포함되어 있다.

Cortex-M1

FPGA 설계에 최적화된 소형 프로세서 설계이며 FPGA의 메모리 블록을 통해 밀착 결합 메모리(Tightly Coupled Memory)를 구현한다. Cortex-M0과 동일한 명령어 세트

Cortex-M3

복잡한 작업을 보다 신속하게 처리할 수 있도록 많은 명령어가 설정된 저전력 마이크로 컨트롤러를 위한 작지만 강력한 임베디드 프로세서. 하드웨어 디바이더(Hardware Divider)와 Multiply-Accumulate(MAC) 명령어를 탑재하고 있다. 이와 함께 소프트웨어 개발자가 애플리케이션을 더 빠르게 개발할 수 있도록 포괄적인 디버그 및 추적 기능을 지원한다. 

Cortex-M4

이 프로세서는 Cortex-M3의 모든 기능을 제공하며, Single   Instruction Multiple Data(SIMD)와 보다 빠른 단일 사이클 MAC 연산과 같은 디지털 신호 처리(Digital Signal Processing) 작업에서 추가 명령어 대상을 제공한다. 또한 IEEE 754 부동 소수점 표준을 지원하는 단정도(Single Precision) 부동 소수점 유닛 (옵션)도 제공한다.

Cortex-M7

하이엔드 마이크로컨트롤러 및 프로세싱 집약적인 애플리케이션용 고성능 프로세서. Cortex-M4에서 사용할 수 있는 모든 ISA 기능과 캐시 및 밀착 결합 메모리(Tightly Coupled Memory)와 같은 추가 메모리 기능뿐만 아니라 배정도(double precision) 부동 소수점을 위한 추가 지원을 제공한다.

Cortex-M23?

초저전력과 저비용 설계용으로 설계된 소형 프로세서로 Cortex-M0+ 프로세서와 비슷하지만 명령어 세트 및 시스템 수준의 기능이 다양하게 향상됐다. 이와 함께 TrustZone 보안 기능 확장을 지원한다.

Cortex-M33

기존 Cortex-M3및 Cortex-M4 프로세서와 비슷하지만 더욱 향상된 유연성을 갖춘 시스템 설계와 보다 나은 에너지 효율성과 성능을 제공하는 주류 프로세서 설계. 또한 이 프로세서는 TrustZone 보안 확장을 지원한다.

▲ 표 2. Cortex-M 프로세서 제품군


기존 ARM 프로세서(예: ARM7TDMI, ARM9)와는 전혀 다른 Cortex-M 프로세서는 매우 다른 아키텍처를 가지고 있다. 예를 들면, 

- ARM Thumb  명령어만을 지원하며, Thumb-2 명령어 세트(Instruction Set)라고 정의된 16비트 및 32 비트 명령어를 모두 지원하도록 확장된다.

- 인터럽트 처리는 중첩 벡터형 인터럽트 컨트롤러(NVIC)로 불리는 내장형 인터럽트 컨트롤러에 의해 관리되며, 인터럽트와 시스템 예외의 자동 우선 순위 지정, 네스팅(Nesting), 마스킹(Masking) 등을 제공한다.

- 인터럽트 핸들러는 일반적인 C 함수로 쓰여질 수 있고 벡터 인터럽트 처리 메커니즘은 어떤 인터럽트가 서비스될 지 결정하기 위한 소프트웨어를 사용할 필요가 없도록 해준다. 동시에 인터럽트 응답은 결정적(Deterministic)이며 대기 시간은 짧다.

- 벡터 테이블은 인터럽트 및 시스템 예외 처리 Rountine으로의 분기 명령어(Branch instruction)에서 인터럽트 및 시스템 예외 처리가 시작되는 주소로 변경됐다.

- 또한 레지스터 뱅크와 프로그래머 모델의 세부 사항은 변경됐다. 

변경 사항은 전형적인 ARM 프로세서용으로 작성된 이전의 많은 어셈블리 코드가 수정되어야 한다는 것을 의미하며, 기존 프로젝트는 Cortex-M 으로 마이그레이션 할 때 수정하고 다시 컴파일해야 한다. 

1.3 Cortex-M 프로세서의 공통 기능 

Cortex-M0, M0+, M3, M4 및 M7 프로세서는 서로 유사한 점이 많다. 예를 들어,

- 기본 프로그래머의 모델(섹션 3.1)
- 인터럽트 관리를 위한 중첩 벡터형 인터럽트 컨트롤러(NVIC)
- 아키텍처의 정의된 슬립 모드: 슬립과 심층 슬립(Deep sleep)(섹션 4.1)
- OS 지원 기능(섹션 3.3)
- 디버그 지원(섹션 6)
- 쉬운 사용

▲ 그림 2. Cortex-M 프로세서 안의 NVIC

예를 들어 NVIC은 통합 인터럽트 컨트롤러다.
NVIC은 주변 장치들로부터 다수의 인터럽트 입력, 마스크 불가능 인터럽트 요청, SysTick(3.3 참조)이라고 불리는 내장 시스템 타이머 및 다수의 시스템 예외로부터 인터럽트 요청을 지원한다. NVIC은 이러한 인터럽트와 예외의 우선 순위 관리 및 마스킹을 처리한다.


2. Cortex-M 프로세서의 명령어 세트 

2.1 명령어 세트 개요

대부분의 경우 애플리케이션 코드는 C 또는 다른 고급 언어로 작성이 된다. 그러나 Cortex-M 프로세서의 명령어 세트 지원에 대한 기본적인 이해는 어떤 Cortex-M 프로세서가 작업에 필요한지를 결정하는데 도움을 준다. 명령어 세트 아키텍처(ISA: Instruction Set Architecture)는 프로세서 아키텍처의 일부분이며 Cortex-M 프로세서는 여러 아키텍처 프로파일로 그룹화할 수 있다.

아키텍처

설명

ARMv6-M

Cortex-M0,   Cortex-M0+ 및 Cortex-M1 프로세서용.

ARMv7-M

Cortex-M3, Cortex-M4 및 Cortex-M7 프로세서용. DSP 유형의 명령어 (예: SIMD)를 지원하기 위한 ARMv7-M의 확장은 ARMv7E-M으로 명명된다.

ARMv8-M

이 아키텍처 릴리스는 다음과 같이 나뉘어진다.
Cortex-M23 프로세서용 Baseline 서브 프로파일
Cortex-M33 프로세서용 Mainline 서브 프로파일

▲ 표 3. ARM Cortex-M 프로세서용 아키텍처 프로파일 


모든 Cortex-M 프로세서는 Thumb이라고 불리는 명령어 세트를 지원한다. Thumb-2 기술이 사용 가능하고 확장되었을 때 완벽한 Thumb 명령어 세트는 상당히 커졌다. 그러나 각각의 Cortex-M 프로세서는 〈그림 3〉에서와 같이 Thumb ISA에서 사용할 수 있는 명령어의 다른 서브세트를 지원한다. 



▲ 그림 3. Cortex-M 프로세서의 명령어 세트 지원

2.2 Cortex-M0/M0+/M1 명령어 지원

Cortex-M0/M0+/M1 프로세서는 ARMv6-M 아키텍처를 기반으로, 〈그림 3〉과 같이 작은 타원형 모양처럼 56개의 작은 명령어 세트를 가지고 있으며 이들 대부분은 16비트다. 그러나 프로세서의 레지스터와 작동중인 데이터는 여전히 32비트다. 대부분의 간단한 I/O 제어 작업과 일반 데이터 처리를 위해서는 이 작은 명령어 세트로도 충분하다. 이 작은 명령어 세트는 Cortex-M0 및 Cortex-M0+ 프로세서의 12K 게이트에서 시작해 매우 작은 게이트 카운트로 프로세서 설계를 구현할 수 있도록 해준다.

그러나 이러한 명령어 중 많은 명령어는 높은 레지스터(High Registers, R8~R12)를 사용할 수 없으며, 이 미디어트 데이터(Immediate Date)를 생성하는데 기능의 제한을 가지고 있다. 이는 초저전력 프로세서 설계의 요구 사항과 사용 가능한 성능 사이의 타협점이다.

2.3 Cortex-M3의 명령어 지원

Cortex-M3 프로세서는 ARMv7-M 아키텍처를 기반으로 하면서, 높은 레지스터를 효율적으로 활용할 수 있는 많은 32비트 명령어를 포함하는 훨씬 많은 명령어 세트를 지원한다. 또한 이것은 아래 사항을 지원하고 있다.

- IT 명령어를 사용해 테이블 분기 명령어 및 조건부 실행
- 하드웨어 디바이드 명령어
- 승법 연산(MAC: Multiply-Accumulate) 및 다양한 비트 필드 연산

많은 명령어는 다양한 방법으로 성능을 향상시켰다.

예를 들어, 32 비트 Thumb 명령어는 더 넓은 범위의 이미디어트 데이터 값, 분기 오프셋 및 데이터 메모리접근에 대한 이미디어트 오프셋(Immediate Offset)을 제공한다. 또한 DSP 연산에 대한 기본적인 지원을 한다(예: 다수의 클락 사이클을 취하는 소수의 MAC 명령어와 포화 조정(Saturation Adjustment) 명령어도 사용이 가능). 마지막으로 32비트 명령어는 단일 명령어에서 많은 데이터 연산과 함께 배럴 쉬프터를 사용할 수 있도록 해준다.

조금 더 많은 명령어 세트는 더 큰 실리콘 면적과 더 높은 전력을 발생하게 한다. 일반적인 마이크로컨트롤러에서 Cortex-M3의 게이트 수는 Cortex-M0 또는 Cortex-M0+ 설계의 두 배 이상이 될 수 있다. 그러나 프로세서의 실리콘 면적이 대부분의 최신 마이크로컨트롤러에서 작은 부분임을 감안하면 Cortex-M3의 더 큰 실리콘 면적과 전력이 심각한 수준의 영향을 미치진 않는다.

2.4 Cortex-M4의 명령어 지원

Cortex-M4 프로세서는 Cortex-M3과 여러 가지 면에서 매우 비슷하다(파이프라인, 프로그래머 모델). 또한 Cortex-M3의 모든 기능을 지원하며 SIMD, 포화 산술연산 명령어, 단일 사이클에서 실행할 수 있는 다양한 MAC 명령어와 (Cortext-M3에서는 여러 사이클이 걸리고 및 제한된 종류의 연산만 제공된다) 같이 DSP애플리케이션을 위한 다양한 명령어 타깃을 추가로 지원한다. 단정도(Single Precision)부동 소수점 연산을 지원하는 부동 소수점 처리 장치(옵션)를 제공한다. 

Cortex-M4의 SIMD 연산은 2개의 16비트 데이터 또는 4개의 8비트 데이터를 병렬로 처리한다. 예를 들어, 〈그림 4〉는 QADD8 및 QADD16 연산을 보여준다.


▲ 그림 4. SIMD 명령어 예: QADD8 및 QADD16

계산을 병렬로 처리할 수 있는 것처럼 SIMD의 사용은 특정 DSP 연산에서 16비트 및 8비트 데이터를 훨씬 빠르게 계산할 수 있도록 해준다. 그러나 일반적인 프로그래밍에서 C 컴파일러는 SIMD 기능을 사용하지 않는다. 이것이 바로 Cortex-M3와 Cortex-M4의 일반적인 벤치마크 결과가 유사한 이유다. 그러나 Cortex-M4의 내부 데이터 경로는 Cortex-M3과는 다르고, 몇 가지 경우(예: 단일주기 MAC 지원 및 단일 클록 주기에 두 레지스터에 Write Back 가능)에서는 더 빠른 연산 작업이 가능하다.

2.5 Cortex-M7의 명령어 지원

Cortex-M7 프로세서의 명령어 세트지원은 Cortex-M4와 비슷하며, 아래와 같은 기능이 추가됐다.

- (Cortex-M4에서) 부동 소수점 아키텍처는 FPv4보다 FPv5를 기반으로 하며, 몇 가지 추가적인 부동소수점 명령어를 가지고 있다.
- 배정도(Double Precision) 부동 소수점 명령어(옵션)
- 사전에 데이터 캐싱을 위한 사전로드 데이터(Preload Data: PLD) 명령어 지원

Cortex-M7는 Cortex-M4와 매우 다른 파이프라인을 가지고 있다. 그것은 높은 성능을 가능하게 하는 6 단계 이중 이슈 파이프라인을 가지고 있다.

Cortex-M4를 위해 작성된 대부분의 소프트웨어는 Cortex-M7에서 재사용할 수 있는 반면, 소프트웨어는 파이프라인의 특성 차이로 인해 최고의 최적화를 위해 재컴파일을 해야 하며 대부분의 경우 캐시와 같은 새로운 기능을 이용할 수 있는 마이너 업데이트가 요구된다.

2.6 Cortex-M23의 명령어 지원

Cortex-M23 프로세서의 명령어 세트는 ARMv6-M의 상위 집합인 ARMv8-M Baseline의 서브 프로파일을 기반으로 한다. 추가 명령어는 다음과 같다.

- 하드웨어 디바이드 명령어
- 비교, 분기 및 32 비트 분기 명령어
- TrustZone 보안 확장을 위한 명령어
- 배타적 접근(Exclusive access) 명령어(보통 세마포어 연산에 사용됨)
- 즉각적인 16비트 데이터 생성 명령어
- C11 지원을 위한 Load-Acquire(LDAR) 및 Store-Release(STLR) 명령어

어떤 경우에는 이러한 명령어 세트 향상이 더 좋은 성능으로 나타날 수 있다. 그리고 또한 다중 프로세서를 포함하는 SoC 설계에도 유용하다(예: 배타적 접근은 다중 프로세서 전반에 걸쳐 세마포어에 유용함).

2.7 Cortex-M33의 명령어 지원

Cortex-M33 설계는 구성에 대한 다양한 설정이 가능하며(Configurable), 일부 명령어는 옵션이다. 예를들어,

- (Cortex-M4 및 Cortex-M7 프로세서에서 지원되는) DSP 명령어는 옵션이다.
- 단정도(Single Precision) 부동 소수점 지원은 옵션이며, Cortex-M4 부동 소수점 연산과 비교시 몇 가지 추가된 명령어를 가진 FPv5를 기반으로 한다.

또한 Cortex-M33은 아래 내용을 포함해 ARMv8-M Mainline 서브 프로파일을 위해 도입된 새로운 명령어를 지원한다.

- TrustZone 보안 확장을 위한 명령어
- C11 지원을 위한 Load-Acquire(LDAR) 및 Store-Release(STLR) 명령어

2.8 ISA 기능 비교 요약

아키텍처에는 많은 ISA 기능이 있어 모든 기능을 자세히 다루기는 어렵다. 그러나 〈표 4〉는 주요 차이점을 요약한 것이다.

 

Cortex-M0/M0+

Cortex-M1

Cortex-M3 

Cortex-M4 

Cortex-M7 

Cortex-M23 

Cortex-M33 

아키텍처 

ARMv6-M

ARMv6-M

ARMv7-M

ARMv7E-M

ARMv7E-M

ARMv8-M Baseline

ARMv8-M Mainline

v4T,v5T, v6-M Thumb ISA 

Y

Y

Y

Y

Y

Y

Y

v7-M   Thumb ISA 

-

-

Y 

Y 

Y 

-

Y

저전력/슬립 모드:   WFE, WFI, SEV

Y

NOP로 실행 

Y

Y

Y

Y

Y

Single cycle Multiply(32 비트 결과) 

Y

Y

Y

Y

Y

Y

Y

비트 필드 프로세싱 

-

-

Y

Y

Y

-

Y

하드웨어 디바이드(integer) 

-

-

Y

Y

Y

Y

Y

비정렬 데이터 접근 

- 

- 

Y

Y

Y

-

Y

테이블 분기

- 

- 

Y

Y

Y

- 

Y

조건부 실행(IT) 

-

-

Y

Y

Y

-

Y

비교 & 분기(CBZ, CBNZ) 

-

-

Y 

Y 

Y 

Y 

Y 

부동 소수점 

-

-

-

단정도(옵션) 

단정도/ 단 + 배정도 (옵션) 

-

단정도(옵션)

MAC 

-

-

Y(다중 주기, 제한적) 

Y(단일 주기) 

Y(단일 주기) 

-

Y(단일 주기) 

SIMD 

-

-

-

Y 

Y 

-

Y

포화 

-

-

USAT, SSAT만 해당 

Y 

Y 

- 

Y 

배타적 접근 

-

-

Y 

Y 

Y 

Y 

Y 

Load acquire, store release

-

-

-

-

-

Y 

Y 

메모리 장벽 

Y 

Y 

Y 

Y 

Y 

Y 

Y 

SVC 

Y 

옵션 

Y 

Y 

Y 

Y 

Y 

TrustZone 지원
--
-
-
-
 --

▲ 표 4. ISA의 기능 비교


Cortex-M 프로세서에서 ISA의 핵심 특징 중 하나는 상위 호환성이다. Cortex-M3 프로세서에서 지원되는 명령어는 Cortex-M0/M0+/M1의 상위 집합이다. 이론적으로 메모리 맵이 같다면 Cortex-M0/M0+/M1의 이진 이미지를 Cortex-M3에서 직접 실행할 수 있다. 

이는 Cortex-M4/M7과 다른 Cortex-M 프로세서 간의 관계에도 동일하게 적용된다. Cortex-M0/M0+/M1/M3에서 사용 가능한 명령어는 Cortex-M4/M7에서도 실행될 수 있다.

Cortex-M0/M0+/M1/M3/M23 프로세서에는 부동소수점 처리 장치 옵션이 없지만 소프트웨어를 사용하여 부동 소수점 계산을 수행할 수는 있다. 이는 부동소수점 처리 장치가 없는 Cortex-M4/M7/M33 기반의 제품에도 적용이 된다. 이러한 경우, 부동 소수점 데이터가 프로그램에서 사용될 때 컴파일러는 링크 단계에서 필요한 런타임 라이브러리 함수를 삽입하게 된다.

소프트웨어를 사용한 부동 소수점 계산은 시간이 오래걸리며 이때 코드 크기는 약간 커질 수 있다. 그러나 부동 소수점 계산이 빈번하지 않는다면 애플리케이션에 적합할 수 있다.

3. 아키텍처 특징 

3.1 프로그래머 모델

Cortex-M 프로세서 제품군의 프로그래머 모델은 매우 일관성이 있다. 예를 들어 R0~R15, PSR, CONTROL 및 PRIMASK는 모든 Cortex-M 프로세서에서 사용이 가능하다. 2개의 특수한 레지스터(FAULTMASK와 BASE PRI)는 Cortex-M3, Cortex-M4, Cortex-M7 및 Cortex-M33에서만 사용이 가능하며, 부동 소수점 레지스터 뱅크와 FPSCR(부동 소수점 상태 및 제어 레지스터)은 옵션인 부동 소수점 처리 장치가 있는 Cortex-M4/M7/M33에서만 사용이 가능하다.

 

▲ 그림 5. 프로그래머 모델

BASEPRI 레지스터를 통해 특정 우선 순위 레벨 또는 낮은 우선 순위의 예외 처리 및 인터럽트를 차단할 수 있다. Cortex-M3, Cortex-M4, Cortex-M7 및 Cortex-M33프로세서들에서는 많은 우선 순위 레벨을 가질 수 있으므로, 이러한 기능은 ARMv7-M 프로세서들과 ARMv8M Mainline에서 중요할 수 있다. 반면, ARMv6-M 및 ARMv8 Baseline에서는 4가지 프로그램 레벨로 제한이 된다. 일반적으로 FAULTMASK는 복잡한 오류 처리기(Fault Handler)에서 사용이 된다(3.4 섹션 참조).

권한이 없는(Unprivileged) 실행 레벨은 ARMv6-M에서 옵션이지만, ARMv7-M과 ARMv8-M에서는 항상 사용할 수 있다. Cortex-M0+에서는 옵션이며, Cortex-M0과 Cortex-M1에서는 사용할 수 없다. 이러한 차이점은 CONTROL 레지스터가 다른 Cortex-M프로세서 간에 작은 차이를 가질 수 있음을 의미한다. 또한 FPU 옵션은 〈그림 6〉에서 보는 바와 같이 CONTROL 레지스터에도 영향을 준다.


▲ 그림 6. CONTROL 레지스터

프로그래머 모델 간의 다른 차이점은 프로그램 상태 레지스터(PSR: Program Status Register)의 세부사항이다. 모든 Cortex-M 프로세서에서 PSR은 애플리케이션 PSR(APSR), 실행 PSR(EPSR) 및 인터럽트 PSR(IPSR)로 구분이 된다. 

APSR의Q 비트와 EPSR의 ICI/IT 비트는 ARMv6-M과 ARMv8-M Baseline 에서는 사용할 수 없으며, GE 비트는 ARMv7E-M(예:Cortex-M4, Cortex-M7)과 ARMv8-M Mainline(예:DSP 기능 확장이 구현됐을 때의 Cortex-M33)에서 사용이 가능하다. 또한 IPSR에서 인터럽트 번호의 넓이는 ARMv6-M에서 더 작은 범위를 가지게 된다. 이것은 〈그림 7〉에 표시되어 있다.


▲ 그림 7. PSR 차이점

Cortex-M의 프로그래머 모델은 ARM7TDMI와 같은 기존의 ARM 프로세서와는 다르다. 레지스터 뱅크 이외에 기존 ARM 프로세서의 '모드' 및 '상태'에 대한 정의는 Cortex-M에서 또한 다르다. Cortex-M에는 쓰레드(Thread)와 처리기(Handler)의 2가지 모드만 있으며, Cortex-M 프로세서는 Thumb 상태에서 항상 작동한다(ARM 명령어는 지원되지 않음). 

3.2 예외 처리 모델과 NVIC

모든 Cortex-M 프로세서에는 중첩 백터형 인터럽트 컨트롤러(NVIC)가 포함되어 있으며 동일한 예외 처리 모델을 공유한다. 예외 처리가 발생하며 현재 레벨보다 우선 순위가 높고, 마스킹 레지스터에 의해 차단되지 않을 때 프로세서는 인터럽트/예외 처리를 허용하고, 현재 스택(Stack)에 다수의 레지스터를 스택한다. 이 스택 메커니즘은 인터럽트 처리기(Interrupt Handler)를 일반 C 함수로 쓸 수 있게 하며, 또한 스태킹 기능이 필요하지 않기 때문에 많고 작은 인터럽트기능을 통해 실제 작업을 바로 시작할 수 있다.

ARMv7-M/ARMv8-M Mainline에서 사용 가능한 일부 인터럽트 및 시스템 예외 처리는 ARMv6-M/ARMv8-M Baseline에서는 사용할 수 없다(그림 8 참조). 예를 들어 Cortex-M0, M0+ 및 M1에서는 인터럽트 수가 32까지 제한적이고, 디버그 모니터 예외 처리는 없으며 오류 예외 처리는 HardFault로 제한이 된다(오류 처리에 대한 세부 정보는 3.4 섹션을 참조). 

반면 Cortex-M23, Cortex-M3, Cortex-M4 및 Cortex-M7 프로세서는 최대 240개의 주변 장치 인터럽트를 지원한다. Cortex-M33 프로세서는 최대 480개의 인터럽트를 지원한다. 또 다른 차이점은 사용 가능한 우선 순위 레벨의 수다.

- ARMv6-M 아키텍처 - ARMv6-M 아키텍처에서 인터럽트/예외 처리의 우선 순위 레벨에는 (NMI 및 HardFault를 위한) 2개의 고정된 레벨과 4개의 프로그래밍 가능한 레벨(우선 순위 레벨 레지스터 당 2비트)이 포함되어 있다. 이것은 대부분의 마이크로컨트롤러 애플리케이션에 충분하다.
- ARMv7-M아키텍처 - 8레벨(3비트)에서 256레벨(8비트) 범위까지 프로그래밍이 가능한 우선 순위.

실제로 대부분의 디바이스는 실리콘 면적 때문에 단지 8레벨(3비트)에서 16레벨(4비트)까지만 구현한다. 또한 ARMv7-M에는 우선 순위 그룹화라는 기능이 있기 때문에 이 기능을 통해 우선 순위 레벨 레지스터를 그룹 우선 순위와 하위 우선 순위로 세분할 수 있을 뿐만 아니라 선점(Preemption) 동작을 자세하게 정의할 수도 있다.

- ARMv8-M Baseline - ARMv6-M과 유사하게, ARMv8-M Baseline도 역시 2비트 우선 순위 레벨 레지스터를 가지고 있다. 옵션인 TrustZone 보안기능 확장으로, 보안 소프트웨어는 비보안 인터럽트의 우선 순위 레벨을 우선 순위 레벨 공간의 하반부로 이동할 수 있으며, 이를 통해 보안 예외 처리/인터럽트 중 일부는 비보안 인터럽트보다 항상 높은 순위를 가지는 것이 가능하다.
- ARMv8-M Mainline-8에서 256 인터럽트 우선 순위 레벨과 우선 순위 그룹화 기능을 가질 수 있는 ARMv7-M과 비슷하다. 또한 ARMv8-M Baseline에서와 같이 우선 순위 레벨 이동을 지원한다.


▲ 그림 8. Cortex-M 프로세서의 예외 유형 

모든 Cortex-M 프로세서는 예외 처리 중 벡터 테이블에 의존하게 된다. 벡터 테이블은 〈그림 8〉에서 보는 것과 같이 예외 처리기의 시작 주소를 저장한다. 벡터 테이블의 시작 주소는 벡터 테이블 오프셋 레지스터(VTOR)라고 불리는 레지스터에 의해 정의된다.

- Cortex-M0+, Cortex-M3 및 Cortex-M4 프로세서: 기본적으로 벡터 테이블은 메모리 맵(주소 0x0)의 시작 부분에 위치하고 있다.
- Cortex-M7, Cortex-M23 및 Cortex-M33 프로세서: VTOR의 기본값은 칩 설계자에 의해 정의된다.

Cortex-M23 및 Cortex-M33 프로세서는 보안 및 비보안 예외처리/인터럽트에 대해 2개의 분리된 벡터 테이블을 가질 수 있다.

- Cortex-M0 및 Cortex-M1은 프로그래밍이 가능한 VTOR을 구현하지 않으며 벡터 테이블의 시작 주소는 항상 0x00000000이다.

VTOR은 Cortex-M0+ 및 Cortex-M23 프로세서에서 옵션이다. VTOR이 구현되면 VTOR를 프로그래밍하여 벡터 테이블 시작 주소를 변경할 수 있다. 이것은 다음과 같은 경우에 유용한 기능이다.

- 동적으로 변하는 예외 처리기의 진입점을 허용하기 위해 벡터 테이블을 SRAM으로 재배치
- 좀 더 빠른 벡터 인출(Vector Fetch)을 위해 벡터 테이블을 SRAM으로 재배치(플래시 메모리가 느린 경우)
- 벡터 테이블을 ROM(또는 플래시)의 다른 테이블로 재배치해 프로그램 실행의 다른 단계에서 다른 예외 처리기를 가질 수 있다.

NVIC 프로그래머 모델은 다른 Cortex-M 프로세서들과 몇 가지 차이점이 있다(표 5 참조). 

 

Cortex-M0

Cortex-M0+

Cortex-M1

Cortex-M3/M4/M7

Cortex-M23

Cortex-M33

인터럽트의 수 

최대 32

최대 32

최대 32

최대 240

최대 240

최대 480 

NMI

Y

Y 

Y 

Y 

Y 

Y 

SysTick 

Y(옵션) 

Y(옵션) 

Y(옵션) 

Y 

Y(옵션) 

Y 

오류 처리기 

1(HardFault) 

1(HardFault) 

1(HardFault) 

4

1(HardFault) 

4

VTOR 

- 

Y(옵션) 

- 

Y 

Y(옵션) 

Y 

디버깅 모니터 

- 

- 

- 

Y 

- 

Y 

프로그래밍이 가능한 우선순위 레벨 

4 

4 

4 

8~256 

4 

8~256 

소프트웨어 트리거 인터럽트 레지스터 

-

-

-

Y

-

Y

인터럽트 활성화 상태 

- 

- 

- 

Y 

Y 

Y 

레지스터 접근 

32비트 

32비트 

32비트 

8/16/32비트 

32비트 

8/16/32비트 

동적 우선순위 변경 

-

-

-

Y

Y

Y

▲ 표 5. NVIC 프로그래머 모델 및 기능의 차이점


대부분의 경우 NVIC의 인터럽트 제어 기능에 대한 접근은 마이크로컨트롤러 공급업체의 디바이스 드라이버 라이브러리에 포함된 CMSIS-CORE에 제공된 API에 의해 처리된다. Cortex-M3/M4/M7/M23/M33에서는 활성화된 경우에도 인터럽트의 우선 순위를 변경할 수 있다. 이와 같은 동적 우선 순위 레벨 변경은 ARMv6-M에서 지원되지 않으므로 우선 순위 레벨을 변경할 때에는 일시적으로 인터럽트를 비활성화해야 한다. 

3.3 OS 지원 기능

Cortex-M 프로세서를 위한 아키텍처는 OS를 중심으로 설계됐다. OS 지원에 대한 주요 기능은 아래와 같다.

- 쉐도우 스택 포인터(Shadowed Stack Pointer)
- SVC 및 PendSV 예외
- SysTick 타이머 - 시간 유지와 작업 관리를 위해 정기적으로 OS 예외 처리를 생성하는 24비트 다운 카운터
- Cortex-M0+/M3/M4/M7/M23/M33의 권한없는(Unprivileged) 실행 레벨 및 메모리 보호 장치(MPU)

SVC 예외 처리는 권한이 없는 상태(Unprivileged State)에서 실행중인 애플리케이션 작업이 권한이 있는 OS서비스(Priviliged OS Service)를 트리거할 수 있도록 하기 위해 SVC 명령어에 의해 트리거된다.

PendSV 예외 처리는 컨텍스트 스위칭과 같이 중요하지 않은 연산을 예약하기 위해 OS에 유용하다.
Cortex-M1을 일부 소형 FPGA 디바이스에 적합하게 하기위해 Cortex-M1에서 이러한 모든 OS 지원 기능을 옵션으로 만들었다. Cortex-M0, Cortex-M0+ 및 Cortex-M23 프로세서에서 SysTick 타이머는 옵션이다.

일반적으로 OS 지원은 모든 Cortex-M 프로세서에서 가능하다. Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M23 및 Cortex-M33 프로세서에서의 애플리케이션 작업은 권한없는 실행 레벨에서 실행할 수 있으며 메모리 접근 위반을 방지하기 위해 MPU 옵션인 메모리 보호 장치와 함께 작동한다. 이것은 시스템의 견고성을 향상시킬 수 있다.

3.4 TrustZone 보안 기능 확장

지난 몇 년간 사물인터넷(IoT)은 임베디드 시스템 설계자에게 매우 뜨거운 주제였다. 사물인터넷 시스템이 더욱 정교해지고 시장 진입 압박이 증가함에 따라 임베디드 시스템은 시스템의 보안을 보장하는 더 좋은 방법이 필요한 반면, 동시에 소프트웨어 개발자가 쉽게 구
현할 수 있어야 한다.

일반적으로 소프트웨어를 권한이 있는 부분과 권한이 없는 부분으로 분리하여 권한이 있는 소프트웨어가 권한이 없는 애플리케이션으로 하여금 보안에 민감한 정보를 비롯해서 중요한 시스템 리소스에 접근하는 것을 방지할 수 있도록 메모리 보호 장치(MPU)를 활용할 수 있다.

이러한 방식은 다양한 사물인터넷 시스템에서 제대로 동작하지만 어떤 경우에는 2개의 분할만으로도 충분하지 않다. 특히 복잡한 권한 있는 소프트웨어 구성 요소가 많이 포함된 시스템의 경우 권한 있는 코드 중 하나의 취약점으로 인해 해커가 시스템을 완전히 장악할 수 있다.

ARMv8-M 아키텍처에는 TrustZone이라는 보안 기능 확장이 포함되어 있으며 이는 보안 및 비보안 상태의 직교 분할(Orthogonal Partitioning)을 추가한다.

- 비보안 상태는 일반 애플리케이션용이다.
- 보안 상태는 소프트웨어 구성 요소 및 보안 리소스용이다(예: 보안 저장 공간, 암호화 가속기, 순수난수 생성기(TRNG)).


▲ 그림 9. 보안 및 비보안 상태의 분리

비보안 소프트웨어는 비보안 메모리와 주변 장치에만 접근할 수 있으며, 보안 소프트웨어는 양쪽 모두에 있는 리소스에 접근할 수 있다. 

이러한 방식으로 소프트웨어 개발자는 이전과 같이 비보안 환경에서도 자신의 애플리케이션을 개발할 수 있다. 동시에 칩 벤더가 제공하는 보안 통신 라이브러리에 의존하여 안전한 사물인터넷 연결을 수행할 수 있다.

그리고 비보안 권한 소프트웨어에 취약성이 있더라도 TrustZone 보호 메커니즘을 통해 해커가 전체 디바이스를 장악하지 못하게 함으로써 공격의 영향을 제한할 뿐만 아니라 잠재적으로 시스템을 원격으로 복구할 수 있다. 또한 ARMv8-M 아키텍처는 추가 보안 조치를 좀 더 쉽게 구현하기 위해 스택 제한 검사(Stack Limit Checking)와 향상된 MPU 설계를 도입했다.

보안 아키텍처는 시스템 레벨로 확장이 되며 각 인터럽트는 보안 또는 비보안으로 할당될 수 있다. 인터럽트/예외 처리 시퀀스는 보안 정보가 유출되지 않도록 하기 위해 레지스터에 보안 데이터를 자동으로 저장하고 복원한다. 결과적으로, TrustZone 보안 기능 확장은 시스템이 실시간으로 시스템 요구 사항을 지원하고 사물인터넷 애플리케이션에 대해 견고한 보안 기반을 제공할 수 있도록 해주며 소프트웨어 개발자가 애플리케이션을 쉽게 개발할 수 있도록 도와준다.

TrustZone은 Cortex-M23 와 Cortex-M33 프로세서에서는 옵션이다. ARMv8-M프로세서의 TrustZone에 대한 자세한 내용은 스마트 연결 시대를 위한 임베디드 프로세서의 발전 과정에 있는 다음 단계에서 찾을 수 있다.

3.5 오류 처리

ARM 프로세서와 일부 다른 마이크로컨트롤러 아키텍처의 차이점 중 하나는 오류 처리 기능이다. 오류가 감지될 때 해당 소프트웨어가 적절한 조치를 수행할 수 있도록 오류 예외 처리가 트리거된다. 오류는 다음과 같다.

- 정의되지 않은 명령어(예: 손상된 플래시 메모리)
- 잘못된 주소 공간(예: 스택 포인터 손상)에 대한 접근 또는 MPU 접근 위반
- 잘못된 연산(예: 프로세서가 SVC보다 이미 높은 인터럽트 우선 순위에 있을 때 SVC 예외 처리를 트리거하려는 시도)

오류 처리는 임베디드 시스템이 다양한 문제에 대해 훨씬 빠르게 대응할 수 있도록 도와준다. 그렇지 않으면 시스템이 멈춘 경우 워치독 타이머가 시스템을 초기화하는 데 오랜 시간이 걸릴 수 있다.

ARMv6-M 아키텍처에서 모 든 오 류 이벤트는 HardFault 처리기를 트리거하며, 우선 순위 레벨은 -1 이다(모든 프로그래밍이 가능한 예외 처리보다 높은 우선 순위지만 마스크가 불가능한 인터럽트 NMI 바로 아래임). 모든 오류는 복구 불가능한 것으로 간주되며 일반적으로 오류 보고를 수행하고 잠재적으로 HardFault 처리기 내에서 자체 초기화를 생성한다. 

ARMv8-M Baseline은 단 하나의 오류 예외 처리(HardFault)를 가지고 있는 ARMv6-M과 비슷하다. 그러나 TrustZone 보안 기능 확장이 구현될 때 HardFault의 우선 순위 레벨은 -1 또는 -3이 될 수 있다.

ARMv7-M 및 ARMv8-M Mainline에는 HardFault 외에도 몇 가지 구성 가능한 오류 처리기가 있다.

- Memmanage(메모리 관리 오류)
- 버스 오류(버스는 오류 응답을 반환)
- 사용 오류(정의되지 않은 명령어 또는 다른 잘못된 연산)
- SecureFault(TrustZone 보안 기능 확장의 보안위반 처리를 위한 ARMv8-M Mainline에만 해당)

이러한 예외 처리들은 프로그래밍이 가능한 우선 순위 레벨을 가지고 있으며 개별적으로는 활성화 또는 비활성화를 할 수 있다. 또한 필요에 따라 HardFault와 동일한 레벨로 우선 순위를 높일 수 있도록 FAULTMASK 레지스터를 사용할 수 있다. 뿐만 아니라 오류 예외 처리를 트리거한 것에 대한 힌트를 제공하는 다양한 오류 상태 레지스터와 디버깅을 쉽게 하기 위해 오류를 트리거한 전송 주소를 정확히 찾는데 사용될 수 있는 오류 주소 레지스터가 있다.

ARMv7-M 과 ARMv8-M Mainline프로필의 추가 오류 처리기는 좀 더 유연한 오류 처리 기능을 제공하며 오류 상태 레지스터는 오류 이벤트를 쉽게 찾아 디버그할 수 있도록 했다. 상용 개발 제품군에 있는 여러개의 디버거에는 오류 상태 레지스터를 사용하여 오류 이벤트를 진단하는 기능이 포함되어 있다. 또한 잠재적으로 런타임 중에 오류 처리기는 일부 처리 조치를 수행할 수 있다.

 

 ARMv6-M(Cortex-M0,   Cortex-M0+, Cortex-M1) 및 ARMv8-M Baseline(Cortex-M23)

ARMv7-M(Cortex-M3, Cortex-M4,   Cortex-M7) 및 ARMv8-M Mainline(Cortex-M33)

HardFault 

Y

Y

MemManage 

-

Y 

사용 오류 

- 

Y 

버스 오류 

-

Y

SecureFault 

- 

ARMv8-M Mainline 용 

오류 상태 레지스터 

- (디버그만을 위한 하나의 디버그   FSR) 

Y 

오류 주소 레지스터 

-

Y

▲ 표 6. 오류 처리 기능 비교의 요약

'이것저것' 카테고리의 다른 글

자동차에서 오픈 컬렉터(드레인)  (0) 2021.03.10
Wifi 안테나 DIY (두 번째)  (0) 2020.12.09
Wifi 안테나 DIY  (0) 2017.05.02
JTAG 이란?  (0) 2017.04.16
JTAG 을 이용한 PCB Test  (0) 2017.04.16
Posted by 떼기
,

Wifi 안테나 DIY

이것저것 2017. 5. 2. 15:21

테나 DIY (깡통으로 Wifi 안테나 만들기)


일주일에 하루 정도 작업실에 머문다. 이를 위해서 인터넷을 가입하고 설치하기가 좀 아깝다는 생각이 든다. 밑에 카페에서 열어 놓은 채널이 있어서 이렇게 별 무리 없이 인터넷은 사용하지만, 어쩔 땐 Wifi 공유기를 꺼버리고 퇴근 할 때가 있어서 당황스러울 때가 가끔 있다. 그래서 집에서 작업실 까지 거리가 대략 150M 정도 되니 요즘 한참 유행인 캔테나 정도면 가볍게 집에 Wifi 를 끌어와서 연결 가능할 꺼라 생각하고 안테나 DIY 자료 수집에 열공을 해 봤다.


이 또한 신세계가 아닐 수 없다. 뭐 그리 많은 매니아들이 있는지 그리고 국내 다른 포털이나 블로그는 너무 어렵다. 이 페이지에 좀더 쉽게 이해될 만한 자료를 수집하고, 정리해서 실제 제작까지 해보려 한다.


* RF & 안테나 개념 잡기 :

http://www.rfdh.com/bas_rf/begin/antenna.php3


* 무선 LAN 표준 알기 : 

http://www.ktword.co.kr/abbr_view.php?id=371&m_temp1=2339&nav=2

   

  1. 무선 LAN의 주파수 현황


    ⓐ 2.4 ㎓ 대역 : 2.4~2.4835 GHz (802.11b/802.11g/802.11n)

        - 약 14개 중첩 채널(20 MHz) 중 동시 사용 가능 3개 채널

 

    ⓑ 5 ㎓ 대역   : 5.15~5.825 GHz (802.11a/802.11n/802.11ac)

        - 24개 비 중첩 채널(20 MHz)


    ⓒ 국내 할당 현황     

        - 기타 : 17.7 ㎓ 및 19.2 ㎓ 대역 (미사용)              ※ 관련참고용어 ☞ ISM 밴드, UNII 참조


  2. 무선 LAN 채널 번호 및 중심 주파수


    ⓐ (채널 중심 주파수) = (채널 시작 주파수) + 5 x (채널 번호) [MHz]


       - 2.4 GHz 대 : 13번 채널 중심 주파수 : 2472 MHz

         . 채널 시작 주파수 : 2407

         . 채널 번호 : 1,2,...,13


       - 5 GHz 대 : 36번 채널 중심 주파수 : 5180 MHz

         . 채널 시작 주파수 : 5000

         . 채널 번호 : 0,1,...,200


  3. 표준별 주파수 사용 특징


 구분

802.11

 802.11b

802.11a

802.11g

802.11n

802.11ac

 최대 속도

 2 Mbps

 11 Mbps

54 Mbps

54 Mbps

600 Mbps

 2.6 Gbps

 전송 방식

 DSSS/FHSS

HR-DSSS

OFDM

DSSS/OFDM

OFDM

OFDM

 변조 방식

 -

DSSS/CCK

64 QAM

64 QAM

64 QAM

256 QAM

 공간스트림 수

 1

1

1

1

4

3/4/8(AP)

 최대안테나 수

 1x1 SISO

1x1 SISO

1x1 SISO

1x1 SISO

4x4 MIMO

8x8 MIMO

 주파수 대역

 2.4 GHz

 2.4 GHz

5 GHz

2.4 GHz

2.4/5 GHz

5 GHz

 채널 대역폭

 20 MHz

20 MHz

20 MHz

20 MHz

20/40 MHz

20/40/80/160 MHz



* 캔테나 제작 이론 : 

 


캔테나에 대한 이미지 검색결과

지금부터 만들려고 하는 안테나의 모습은 아래와 같다. 일명 깡통 안테나 라고 불리는 캔테나 비교적 제작이 간단다고 쉬워 보이지만 치밀한 계산과 정확한 치수에 의해 호불호가 갈리게 되는 어려운 DIY 임에 틀림 없다.


국내 블로그들로 부터 공유되고 있는, 치수를 자동계산 해 주는 URL 은 접속이 되지 않는다. 너무 많은 접속자가 몰려서 그런가 폐쇄 되 버린듯 하다.그러나 외국에 블로그들 중 여러가지 모양의 안테나를 제작 성공기를 보면 강한 매력이 끌리기도 한다.

Lo/Lg/파장/1/4파장/3/4파장 등 용어부터 와 닿지 않으니 뭐 공부해야지 별수 있나?



(캔테나 자동 치수 계산기 새로운 URL) : http://www.changpuak.ch/electronics/cantenna.php


여기에서 계산은 아래 URL 에서의 계산 값과 약간 차이가 있다. 그러나 Low/High 컷 주파수를 계산해주니 대역폭을 예상 할 수 있어 편하기는 하다.



사용 할 캔의 지름을 해당 칸에 입력하고 Calculate 버튼을 누르면 나오는 결과 값 으로 사용 가능 여부를 알 수 있다.


802.11b.g 무선 장비는 2.412 GHz 와 2.462 GHz 주파수 대역을 사용하므로 TE11 (Transverse Electric)의 컷오프 값은 2.412 GHz 보다 낮고 TM01 (Transverse Electric) 의 값은 2.462 GHz 보다 높아야 한다. 


또 캔의 길이는 가급적 3/4 관내 파장보다 긴 것이 효과적이다.


* TE11 모드 에서 의 일정 주파수 (컷오프 주파수) 값

* TM01 모드 에서 의 일정 주파수 (컷오프 주파수) 값

* 지름에 따른 관내 파장 (Guide Wavelength)

* 1/4 관내 파장 (1/4 Guide Wavelength)

* 3/4 관내 파장 (3/4 Guide Wavelength) 




(또 다른 캔테나 자동 치수 계산기 URL) : http://www.elepal.fi/antennit/antenna2calc.php


위에 자동계산 보다는 좀 더 이해하기 쉽고 소수점 이하는 과감하게 삭제해서 더 직관적인 듯 하다. 





* Lo : 대기 중 의 HF 대역 파장

  => 2.45 GHz 주파수 파장은 122mm 입니다.


* Lo/4 : 피더의 높이


* Lg/4 : 피더의 위치


* Lc : 깡통 직경에 의해 변동 되는 저주파 컷 오프 파장 입니다.

  => Lc = 1.708 X 100 = 170.6mm


* Lg : 관내의 파장 입니다. (Lg 의 값은 Lo 와 Lc의 함수 관계 이다)

  => Lo, Lc, Lg 의 역수를 취한 값은 피타고라스 함수와 같다.

  -> (1/Lo)2 = (1/Lc)2 + (1/Lg)2

  -> 위 식을 풀이 하면

  -> Lg = 1 / root [ (1/Lo)2) - (1/Lc)2 ]

  -> Lg = 1 / root [ (1/122)2 - (1/170.8)2]

  -> Lg = 176mm


* Lg / 4 = 176 / 4 = 44mm


* 3/4 Lg = 0.75 * 176 = 132 mm



(수식 해설)


1. 전파의 속도는 빛의 속도 (30만 Km / Sec) : 1초 당 30만Km 속도로 전달 된다는 가정 에서 주파수 길이가 나온다.

 - 파장은 전파의 한 사이클 길이. 주파수가 높으면 파장의 길이는 짧고 반대로 주파수가 낮으면 파장의 길이는 길다.

 - 결과적으로 내가 사용하려는 주파수는 2.45GHz 이므로 수식을 정리 해 보면 :

 => 파장(λ) = 빛 의 속도 300,000(Km) / 주파수(f)


2. 캔의 직경과 사용 주파수의 의해서 파장(Lo) 과 피더 길이(Lo/4) 가 결정 된다.

 - 캔의 직경은 2.4GHz 대역에서 대략 100mm 정도 가 가장 무난하게 제작된다. 직경은 90~110mm 사이여야 하며 측면과 바닥은 평탄하게 연결되어야 하고, 캔의 끝 부분에 약간 구부러져 있다면 망치로 부드럽게 펴 줘야 한다.



3. 파장 (Lg) 은 Lc, Lo에 따라서 변동 되므로 결국은 주파수와 깡통의 직경에 의해서 변동 된다.

 - 대략 일반적으로 사용되는 100mm 직경일 때, 길이(3/4 Lg)는 132mm 이상 요구 된다. 대략 직경보다 길이가 약간 더 긴 깡통이면 된다는 것이다. 그리고 직경이 100mm 보다 작으면 길이는 더 길어야 되고,  반대로 직경이 100mm 보다 크다면 길이는 더 짧아도 된다.

 

* 재료 구하기


- N 콘넥터의 가운데 탭은 직경 4mm 라고 하는데, 이상합니다. 보통은 철근이라고 하는게 맞는지 모르겠습니다. 추측 컨데 아마도 잘못 번역 했거나 잘못 환산을 했을거라 예상 합니다. 그래서 결론은 1~1.2mm 굵기의 구리선 이면 충분할 듯 합니다. 보통은 벽면 매립 콘센트 배선 용으로 사용되는 전원 용 단선이 그 정도 굵기에 해당 됩니다.


01

02

03

처음 구한 복숭아 캔

너무 작아서 못씀

김 여사가 카페에서 얻어온

원두커피 캔 

이마트 과자 캔

사이즈 안성 맞춤 


- 처음 구한 복숭아 캔은 직경 72mm / 길이 115mm 로 직경이 너무 작아서 길이가 1.5M 정도 되어야 공칭되는 계산결과 값이 나온다. 적용 못함 아쉽지만 버려야 한다.


- 두 번째 는 깡통 찾아 분리수거 함 이곳 저곳을 두리번 거리는 나를 보고 참다 못해 김여사 가입한 모현면 카페에 게시해서 얻어온 원두커피 캔 이다. 직경 /길이 모두 117mm 로 직경이 약간 넓어서 컷오프 주파수를 약간 벗어남, 그래두 못 쓸 정도는 아니고, 모양이 꽤나 이뻐서 합격..


- 어제 이마트 들렀다가 딱 맞는 캔 사이즈의 과자를 발견해서 너무 기분 좋았다. 직경 100mm / 길이 177mm 로 위에 자동 계산기에 나오는 수치와 절묘하게 딱 맞아 떨어진다. 복권에 맞은 듯한 기분~ㅋㅋ 나란 남자~


* 최종 제작 도면


* 제작 사진 (캔테나)


제작은 별로 어렵지 않네요, 캔 끝에서 44mm 치수 마킹하고, 드릴로 뚫어주면 작업은 끝, 미리 콘넥터에 케이블 길이를 31mm 로 붙이는 작업이 있는데, 사실 기존 SMA 콘넥터에 케이블이 작업 되 있어서 잘라내고 피복을 벗겨내는 것만으로 작업 완료, 다음은 공유기 내 안테나 뜯어내고, SMA 콘넥터 를 심어서 안테나 케이블 연결할 수 있도록 해야되겠네요~


01

02

03

SMA 암/수

콘넥터 자리 구멍 뚫기

완성된 사진


* 제작 사진 (무선공유기)


우선 무선 공유기 안테나 3개중 한 개를 분리하고 내부에 BNC 콘넥터를 끼웁니다. 안테나를 뽑아내고 보니까 BNC 콘넥터 지름이 딱 맞아 떨어지는 건 우연인지 모르겠네요!


01

02

03

공유기 안테나 분리 하고

BNC 콘넥터 로 교체

안테나 케이블 양쪽 콘넥터

연장 작업

캔테나 고정 브라켓 대신

샤워기 고정대로 작업 


캔테나를 고정하기 위한 브라켓도 설치 할 곳이 정해지면 달아야 겠지만 우선 임시로 사용하기 위해 굴러다니던 욕실타일에 고정되는 샤워기 헤드 고정대를 사용했네요~


01

02

03

아이팟 고정대 활용

캔테나 두개 완성

공유기에 연결하고 테스트


* 테스트 (속도 측정)


벤치마크 프로그램으로 인터넷 속도를 측정하고 싶은데, 그래프로 보여주는 기능은 무선 신호를 받을떄 이고 나처럼 멀티브릿지로 사용하면 그냥 유선인터넷 측정으로 밖에 못하네~ 그래두 전보다 체감적으로 무척 빨라졌다.


나머지 한개 캔테나를 집에 달아보고 집에서 작업실까지 성공하면 다시 내용 추가 합니다.


---투비콘티뉴---

'이것저것' 카테고리의 다른 글

Wifi 안테나 DIY (두 번째)  (0) 2020.12.09
ARM Cortex-M  (0) 2017.05.31
JTAG 이란?  (0) 2017.04.16
JTAG 을 이용한 PCB Test  (0) 2017.04.16
인덕터 와 비드 의 차이  (0) 2017.03.19
Posted by 떼기
,

JTAG 이란?

이것저것 2017. 4. 16. 02:39

JTAG (Joint Test Action Group)

소개

JTAG은 1990 년 산업 표준으로 도입 된 이래 계속해서 채택, 인기 및 유용성이 증대되었습니다. 현재까지도 IEEE Std.-1149.1 표준 의 새로운 개정 및 보완  이 개발되고 실행되고 있습니다. 이 문서는 JTAG의 성격과 역사에 대한 간략한 소개, 현재 개발 중인 새로운 확장에 대한 소개부터 시작합니다.

JTAG 기술

JTAG은 일반적으로 바운더리 스캔 (boundary-scan)이라고도 불리며 전기 전자 기술자 협회 (IEEE) 1149.1에 의해 정의되었으며, 원래 집적 회로 (IC) 수준에서 구현 된 인쇄 회로 기판(PCB)의 상호 연결을 테스트 하기 위해 통합 된 방법으로 시작되었습니다. PCB가 복잡해지고 밀도가 높아짐에 따라 ICT 등 기존의 테스트 방법과 JIG 고정 장치의 한계가 분명 해졌습니다. 계속 증가하는 물리적 공간 제한을 충족 시키도록 설계된 패키징 형식, 특히 BGA (그림 1) 및 기타 미세한 피치의 디바이스 신호에 대한 물리적 액세스의 손실을 가져 왔습니다.

이러한 새로운 기술 개발로 인해 JIG 고정 장치의 설계 및 제작과 관련된 비용이 크게 증가했습니다. 동시에, 회로 기

판 테스트 커버리지도 필요하게 되었다. JTAG / boundary-scan은이 문제에 대한 현실적인 해결책을 제시했습니다. 조립 된 전자 시스템을 테스트하는 데 도움이 되도록 IC에 기능을 구축하십시오.

오늘날 JTAG은 IC의 상호 연결 및 기능 테스트에서 현장에 설치된 시스템의 플래시 메모리 프로그래밍 및 그 사이의 모든 것에 사용됩니다. 

JTAG 및 관련 표준은 3D IC 및 복잡한 계층 형 시스템의 테스트를 포함하여 전자 테스트 및 제조의 추가 과제를 해결하기 위해 계속 확대되어 왔으며 앞으로도 계속 확장 될 것입니다. 

회로 기판 테스트 커버리지 또한 해결 과제이다. JTAG / boundary-scan은이 문제에 대한 현실적인 해결책을 제시했습니다. 조립 된 전자 시스템을 테스트하는 데 도움이 되도록 IC에 기능을 구축하십시오.

JTAG의 역사

1980 년대에 JTAG (Joint Test Action Group)은 1990 년 IEEE 표준으로 표준화 된 바운더리 스캔 테스트 사양을 개발하기 시작했습니다. 1149.1-1990. 몇 년 후 1993 년에 표준 1149.1a에 대한 새로운 개정이 원래 사양을 명확히 하고, 수정하고, 향상 시키기 위해 소개되었습니다. 

BSDL (Boundary-Scan Description Language)을 표준에 추가하여 빠르고 자동화 된 테스트 개발을 위한 방법을 마련하고 전 세계의 주요 전자 제품 생산 업체의 지속적인 채택을 촉진하기 위해 1994 년에 추가 보완 물인 1149.1b가 게시 되었습니다. 2001 년에 핵심 표준에 대한 업데이트를 통해 학습 된 교훈이 공식화 되고 IEEE-1149.1-2001이 게시 되었습니다. 

JTAG의 새로운 애플리케이션이 발견되면서, JTAG의 기능을 확장하기 위해 새로운 표준이 개발되었습니다.

1995년 IEEE-1149.5 모듈 테스트 및 유지 보수 버스 표준 및 1999년 혼합 신호 테스트 용 IEEE-1149.4 과 같은 표준은 낮은 채택률을 보였으며 현재 널리 사용되지는 않습니다.

반면에 2003년에 도입 된 IEEE-1149.6 표준은 뒤늦게 표준으로 채택 되었지만 고속 IC의 신호 결합 기술이 전자 시스템의 공통된 특징이 되어 많은 IC에서 표준이 되었습니다.

저전력 시스템에서 JTAG의 필요성을 해결하기 위해 2009년에 발표 된 IEEE-1149.7은 이제 많은 보편적 인 마이크로 컨트롤러에서 표준이 되었습니다.

특정 테스트 기능을 추가하기 위한 추가 표준이 게시 되었습니다. 2002년에 프로그래머블 디바이스의 시스템 내 구성을 위한 IEEE-1532 표준이 발표되었으며, 이제는 FPGA 및 지원 소프트웨어 시스템의 공통된 특징입니다.

IEEE-1581은 고속 메모리 상호 연결을 저속 테스트 벡터로 테스트하는 편리한 방법을 제공하기 위해 2011년에 개발되었습니다. 이 기능의 버전은 일부 DDR4 메모리 구성 요소에서 구현됩니다. 커패시턴스 센싱과 바운더리 스캔 테스트의 새로운 응용 분야를 다루기 위해 IEEE-1149.8.1이 2012년에 출간되었습니다. JTAG의 확장 성은 수 차례 입증되었습니다. 

최근에는 IC에 내장 된 계측기에 대한 JTAG 액세스를 표준화 하려는 노력이 이루어지고 있습니다. IEEE-1149. 1 표준은 몇 가지 정리 작업을 위해 2013년에 한 번 더 업데이트 되었으며 이러한 도구에 액세스 하기위한 확장을 추가했습니다. 불과 1 년 후,이 계측기에 액세스 하기위한 대체 표준 인 IEEE-1687이 출판되었습니다. 앞으로 JTAG를 3D-IC 테스트, 시스템 레벨 테스트 및 고속 테스트로 확장하려는 산업 활동이 이미 진행 중이며 JTAG의 다 기능성과 확장 성이 여기에 있음을 입증합니다.

'이것저것' 카테고리의 다른 글

ARM Cortex-M  (0) 2017.05.31
Wifi 안테나 DIY  (0) 2017.05.02
JTAG 을 이용한 PCB Test  (0) 2017.04.16
인덕터 와 비드 의 차이  (0) 2017.03.19
개인 작업실이야? 창업이야?  (1) 2016.12.19
Posted by 떼기
,

JTAG 테스트 개요

원래 PCB (Printed Circuit Board Assembly) Interconnect (상호 연결) 테스트 요구를 해결하기 위해 개발되었지만 JTAG 테스트 방법을 사용하여 간단한 구조 테스트 이상으로 많은 요구 사항을 해결할 수 있다. 일반적인 JTAG 테스트 및 애플리케이션 유형을 간략하게 살펴 본다.

JTAG 테스트 기초

대부분의 JTAG / 바운더리 스캔 시스템은 테스트 개발 및 생성을 위한 테스트 프로그램 생성기와 테스트 실행 및 결과 보고를 위한 테스트 프로그램 실행부 두 가지 주요 구성 요소로 구성된다.

JTAG의 작동 원리

JTAG / 바운더리 스캔 테스트 아키텍처는 원래 물리적 테스트 프로브를 사용하지 않고 PCB에 탑재 된 IC 간의 상호 연결을 테스트하는 방법으로 개발되었다. 멀티플렉서 및 래치 회로를 사용하여 생성 된 경계 스캔 셀은 디바이스의 각 핀에 연결됩니다. 디바이스에 내장 된 이들 셀은 핀 또는 코어 로직 신호에서 데이터를 캡처 할 뿐만 아니라 데이터를 핀에 강제로 유지 할 수 있다. 캡처 된 데이터는 JTAG 테스트 액세스 포트 (TAP)를 통해 순차적으로 이동 되고 예상 값과 비교되어 통과 또는 실패 결과를 결정할 수 있습니다. 강제 테스트 데이터는 연속적으로 바운더리 스캔 셀로 이동됩니다. 이 모든 것은 스캔 경로 또는 스캔 체인이라는 직렬 데이터 경로에서 제어됩니다.

각 핀을 개별적으로 제어 할 수 있기 때문에 바운더리 스캔은 일반적으로 순차 논리를 올바르게 초기화하는 데 필요한 많은 수의 테스트 벡터를 제거합니다. 

JTAG을 사용하면 수천 또는 수백 개의 테스트 벡터가 이전에 수천 개가 필요했던 작업을 수행 할 수 있습니다. Boundary-scan은 테스트 시간 단축, 테스트 커버리지 향상, 진단 기능 향상 및 투자 장비 비용 절감을 가능하게 합니다. 

바운더리 스캔 구성 요소를 사용하는 상호 연결 테스트의 원리는 좌측 그림 설명되어 있습니다. 두 개의 바운더리 스캔 호환 장치는 네 개의 넷과 연결됩니다. 첫 번째 장치는 사전 정의 된 값으로 다른 4 개의 입력을 구동하는 4 개의 출력을 포함합니다. 이 경우 회로에 두 가지 오류가 있다고 가정합니다. Net2와 Net3 간의 단락, Net4에서의 단선. 우리는 또한 2 개의 그물 사이의 단락이 유선 AND로 동작하고 열린 단선이 1 일 때 멈춤으로 작용한다고 가정합니다. 

결함을 검출하고 분리하기 위해 테스터는 그림에 표시된 패턴을 첫 번째 바운더리 스캔 레지스터로 이동하고 이러한 패턴을 두 번째 장치의 입력에 적용합니다.

두 번째 장치의 바운더리 스캔 레지스터에 캡처 된 입력 값이 이동되어 예상 값과 비교됩니다. 이 경우 Net2, Net3 및 Net4에서 밑줄이 그어지고 빨간색으로 표시되는 결과는 예상 값과 테스터 태그와 일치하지 않습니다. 정교한 알고리즘은 특정 넷, 장치 및 핀에 대한 결함을 탐지, 격리 및 진단하기 위해 최소한의 테스트 벡터 세트를 자동으로 생성하는 데 사용됩니다. 

물론 상호 연결 테스트는 JTAG의 많은 용도 중 하나 일뿐 입니다. 위에서 언급 한 JTAG TAP은 ISP (in-system-programming), ICE (In-Circuit-Emulation), 내장 기능 테스트 및 기타 기능을 포함한 추가 기능을 지원하도록 확장되었습니다. 더. 이 표준은 추가 IC 기능과 상호 작용하는 데 사용할 수있는 장치 별 명령어 및 레지스터를 추가로 설명합니다. 예를 들어, 마이크로 프로세서 디바이스는 JTAG TAP을 사용하여 액세스 할 수있는 데이터 다운로드, 프로그램 실행 또는 등록 peek-and-poke 활동을 위한 임베디드 기능을 가질 수 있습니다.

 IEEE-1532 표준을 통해 JTAG 명령어를 사용하여 동일한 툴을 사용하여 FPGA 및 CPLD 디바이스를 지우고, 구성하고, 읽고 백킹하고 제어 할 수 있습니다. 

최근에는 칩에 대한 고속 테스트를 수행 할 수있는 디바이스에 이르기까지 전압 및 전류를 측정하는 계측기에서 비롯된 임베디드 IC 계측이 액세스 메커니즘으로 JTAG TAP을 사용하여 IC에 대한 새로운 가시성을 제공하고 JTAG의 범위를 더욱 확대했습니다 테스트. 마이크로 프로세서 디바이스는 데이터 다운로드, 프로그램 실행, 또는 JTAG TAP을 사용하여 접근 가능한 peek-and-poke 활동 등록 기능을 내장 할 수 있다. 

JTAG Test Program Generator (TPG)

테스트 프로그램 생성기는 CAD (computer aided design) 데이터의 넷리스트, BOM (bill of materials), 회로도 및 레이아웃 정보의 형태의 입력으로 받아들입니다.

테스트 프로그램 생성기 (TPG)는 테스트 개발자의 지침과 함께 이 파일에 제공된 정보를 사용하여 PCB에서 JTAG 테스트 가능한 네트워크를 사용하여 오류를 탐지하고 격리하는 테스트 패턴을 자동으로 작성합니다. 

모든 기능을 갖춘 테스트 프로그램 생성 소프트웨어에는 일반적으로 바운더리 스캔 장치에 연결된 로직 클러스터 및 메모리를 포함하여 스캔 할 수 없는 디바이스 까지 테스트를 자동으로 생성하는 기능이 포함된다 . 

그림 1 JTAG 테스트를 통해 감지된 오류 샘플

JTAG Test Program Executive

테스트 프로그램 실행 자는 테스트 프로그램 생성 소프트웨어로 작성된 테스트를 실행하는 데 사용됩니다. 테스트 실행 자는 JTAG 하드웨어와 I/F 하여 테스트 중인 유닛 (UUT)에서 테스트 패턴을 실행 한 다음 결과를 예상 값과 비교하고 오류를 진단합니다. 

최신 테스트 실행들 에는 흐름 제어, 타 사 테스트 유형 지원과 같은 고급 기능이 포함되어 있으며 종종 추가 테스트 시스템과의 통합 또는 단순 사용자 인터페이스의 개발을 위한 API (Application Programming Interface)가 포함됩니다.

JTAG의 이점

고밀도로 연결 된 미세한 피치 BGA (ball-grid-array) 의 지속적인 패키지 발전으로 인해서 필요한 테스트 포인트 수를 최소화하는 테스트 전략이 요구 되고있다. 

JTAG / boundary-scan 은 IC 자체에 테스트 로직을 내장하고 물리적 인터페이스를 단 몇 개의 신호로 제한함으로써 최신 전자 시스템을 테스트, 디버깅 및 진단하는 훌륭한 솔루션을 제시합니다. . 

제품 수명주기를 통한 재사용 (Reuse through the product life cycle)

테스트 포인트 감소 . JTAG는 단 4 개의 핀 (IEEE-1149.7 호환 장치의 경우 2 개 핀)을 통해 테스트 액세스를 제공하므로 필요한 테스트 포인트 수를 줄여 PCB 제조 비용을 줄이고 테스트 JIG Tool 의 복잡성을 줄입니다. 

독립적 인 관찰 및 제어 확장 성 (Independent observation and control)

boundary-scan 테스트는 시스템 로직과 독립적으로 작동합니다. 즉, 기능적으로 작동하지 않을 수 있는 시스템을 진단하는 데 사용할 수 있습니다. . JTAG은 지속적으로 개발되어 왔으며 새로운 애플리케이션이 자주 발견되고 있습니다. AC 커플 링 테스트를 처리 하기위한 추가 표준이 개발되었으며, 오늘날 JTAG은 다양한 시스템 운영을 위한 액세스 메커니즘을 제공합니다. JTAG이 제공하는 몇 가지 이점은 다음과 같습니다.

JTAG 스캔 체인 인프라 테스트 (JTAG Scan Chain Infrastructure Test)

JTAG 테스트 는 일반적으로 기본 하부 구조(인프라)를 검사하여 모든 장치가 연결되고 테스트 기능이 작동하는지 확인하는 것으로 시작합니다. 테스트 패턴은 예상 길이 및 값과의 비교를 위해 명령 레지스터 및 boundary-scan 레지스터를 실행 하는 데 사용 됩니다. 장치 ID 코드가 있는 경우 올바른 구성 요소가 배치되었는지 확인하기 위해 장치 ID 코드를 읽고 예상 값과 비교할 수도 있습니다.

JTAG 인터커넥트, 버스 와이어 및 레지스터 테스트 (JTAG Interconnect, Bus Wire, and Resistor Tests)

스캔 체인이 제대로 작동하는지 확인한 후 테스트 패턴을 사용하여 시스템 구성 요소 간의 상호 연결을 검증 할 수 있습니다. 3 개 이상의 boundary-scan 핀이 포함 된 넷은 버스 와이어라고 하는 특수한 경우를 나타내며 그림 2와 같이 추가 패턴을 사용하여 특정 핀에 결함을 격리 할 수 있다. 버스 와이어 테스트 중에 boundary-scan 드라이버 핀 모든 가능한 Open이 테스트 되는지 확인하기 위해 한 번에 하나씩 테스트합니다.

그림 2 버스 와이어 테스트는 핀 레벨에서 오픈 오류를 진단하는데 사용할 수 있다.

DC 신호를 전달하는 장치는 "짧은"신호 경로로 모델링 되어 테스트에 포함될 수 있습니다. 예를 들어, 직렬 저항은 구성 요소 존재 및 오픈 오류에 대해 테스트 할 수 있지만 방향 버퍼는 버퍼 출력 핀에서 샘플링 된 신호가 버퍼 입력 핀에 적용되는 신호와 일치하도록 제한 및 테스트 할 수 있습니다. 

또한 AC 결합 신호에 대한 테스트는 IEEE-1149.6 표준 구성 요소가 있는 시스템에서 인터커넥트 및 버스 와이어 테스트와 통합 될 수 있으므로 AC 신호 투명성을 위해 커패시터를 테스트 할 수 있습니다.

또한 특수 테스트를 사용하여 풀업 및 풀다운 저항을 점검 할 수 있다.

논리, 메모리 및 복합 디바이스에서의 JTAG 테스트

뿐만 아니라 boundary-scan 부품들 과 단순 전달 부품의 인터콘넥션 테스트를 할 수 있지만, boundary-scan 셀이 없는 부품들은 추가적으로 연결된 boundary-scan 구성 요소를 사용하여 기능 및 연속성에 대해 제어 및 테스트 할 수 있습니다.

간단한 테스트 패턴은 디코더 또는 멀티플렉서와 ​​같은 로직 디바이스를 테스트하는 데 사용될 수 있으며 정교한 스크립트는 아날로그 - 디지털 컨버터, UART 및 이더넷 PHY를 포함한 기본 또는 고급 기능을 위한 복잡한 디바이스를 제어 및 테스트하는 데 사용할 수 있습니다. 

클러스터 테스트의 일반적인 응용 프로그램은 RAM 장치의 저장 기능을 사용하여 boundary-scan 장치와 연결된 메모리 간의 상호 연결을 확인 합니다. 메모리 구성 요소 모델을 사용하면 메모리 주소에 특정 데이터 패턴을 쓰고 예상 값과 비교하여 다시 읽는 테스트를 자동으로 만들 수 있습니다. 이 패턴은 모든 메모리 데이터 및 어드레스 신호가 하이 및 로우 로직 상태로 구동 되도록 설계되었습니다. RAM 테스트와 동일한 개념을 플래시, EEPROM 및 NVRAM 구성 요소와 같은 비 휘발성 메모리에도 적용 할 수 있습니다.

제품 수명주기 전반에 걸친 JTAG 테스트

JTAG / boundary-scan 은 원래 생산 단계에서 전자 제품을 테스트하는 방법으로 간주 되었지만 IEEE-1149.1 표준 의 새로운 개발 및 적용으로 인해 다른 많은 제품 수명주기 단계에서 JTAG를 사용할 수 있게 되었습니다. boundary-scan 기술은 일반적으로 제품 디자인, 프로토 타입 디버깅 및 현장 서비스에 적용됩니다.

설계 테스트 가능성을 검증하는 데 사용 된 것과 동일한 테스트 슈트를 보드 Bring-up, 대량 제조 테스트, 트러블 슈팅 및 수리, 심지어 현장 서비스 및 재 프로그래밍에 적용하여 활용할 수 있습니다. JTAG / boundary-scan 툴의 다양성은 생산 단계를 넘어서는 조직에 막대한 가치를 제공합니다.

* JTAG 도구는 제품 수명주기의 모든 단계에서 사용 된다.

JTAG 임베디드 테스트

대부분의 최신 프로세서 는 임베디드 시스템 내에서 JTAG 포트를 통해 프로세서를 제어 할 수 있도록 OTD (on-chip debugging)의 주 인터페이스로 JTAG를 사용 합니다. JTAG 포트 는 동일한 인터페이스를 사용하여 프로세서를 초기화하고, 테스트 프로그램을 다운로드 및 실행 한 다음 결과를 얻는 데 사용할 수 있습니다. 이 테스트 기술은 임베디드 시스템 에서 주변 테스트 및 시스템 내 프로그래밍 작업을 개발하고 실행 하기위한 빠르고 편리한 방법입니다. 

이러한 테스트는 시스템 프로세서 속도에서 실행되기 때문에 저속 실행 중에 식별 되지 않을 수 있는 결함을 감지 할 수 있습니다.

그림 3 메모리 상호연결(Interconnects)은 Boundary-scan 디바이스와 연결하여 테스트 된다. 

JTAG을 사용한 인 시스템 프로그래밍

JTAG은 테스트 애플리케이션 외에도 플래시 메모리 및 CPLD와 같은 장치를 프로그래밍 하는 주요 방법으로 자주 사용됩니다. 플래시 장치를 프로그래밍하기 위해 연결된 바운더리 스캔 호환 구성 요소의 핀을 사용하여 메모리를 제어하고 바운더리 스캔 체인을 사용하여 구성 요소를 지우고, 프로그램하고 확인합니다. IEEE-1532 표준 명령어를 지원하는 FPGA 및 CPLD 디바이스는 JTAG 포트를 사용하여 직접 액세스하고 프로그래밍 할 수 있습니다. 

CPU 또는 FPGA를 사용하여 플래시를 프로그래밍 할 때보다 빠른 성능을 얻을 수 있습니다. 이러한 경우 작은 플래시 프로그래밍 어플리케이션이 JTAG 포트를 통해 제어 장치에 다운로드되며,이 포트는 테스트 시스템과 임베디드 시스템에서 실행되는 플래시 프로그래밍 어플리케이션 간의 인터페이스에 사용됩니다. 이 프로그램은 바운더리 스캔보다 훨씬 빠른 속도로 작동 할 수있어 임베디드 시스템에 운영 체제 나 고급 소프트웨어가 필요없이 생산 처리량이 증가하고 USB 및 이더넷 기반 프로그래밍 솔루션의 속도를 능가합니다.

그림 4 JTAG 제어하 에있는 CPU 또는 FPGA는 플래시 메모리를 프로그래밍 하는데 사용될 수 있다.

(메이커 홍보 문구)

IEEE-1149.1 JTAG 팀은 확장 가능한 표준을 설계 하기 위한 선견지명이있었습니다. 여러 가지 응용 프로그램에 대해 추가 데이터 레지스터를 사용할 수 있는 표준입니다. 

결과적으로, JTAG은 보드 테스트를 위한 원래의 뿌리 에서부터 인 시스템 프로그래밍, 온칩 디버깅, 더 최근에 IC에 내장 된 계측기의 제어와 같은 다양한 애플리케이션에 사용할 수 있는 유비쿼터스 포트로 성장했습니다. 임베디드 시스템에 운영 체제 또는 고급 소프트웨어가 필요 없이 생산 처리량이 증가하고 USB 및 이더넷 기반 프로그래밍 솔루션의 속도를 능가하거나 능가합니다. IEEE-1149.1 JTAG 팀은 확장 가능한 표준을 설계 하기위한 선견지명이있었습니다. 여러 가지 응용 프로그램에 대해 추가 데이터 레지스터를 사용할 수 있는 표준입니다. 

'이것저것' 카테고리의 다른 글

ARM Cortex-M  (0) 2017.05.31
Wifi 안테나 DIY  (0) 2017.05.02
JTAG 이란?  (0) 2017.04.16
인덕터 와 비드 의 차이  (0) 2017.03.19
개인 작업실이야? 창업이야?  (1) 2016.12.19
Posted by 떼기
,

Inductor & Ferrite Bead

 

주변 동료 엔지니어가 자주 묻곤 하는 질문 중 하나 입니다. 때론 경력이 없는 후배이거나 때론 경력이 있고, 실제로 회로설계를 하고 있는 현업의 엔지니어도 묻는 질문 중 하나 입니다. 그런데 본인도 딱히 와 닿게 설명을 하기가 어렵네요, 그래서 인터넷 검색을 해 봐도 도체 모르는 소리들만 늘어 놓습니다. 그래서 정리좀 해 보게 되네요~

 

이럴땐 옛날 얘기를 해 가면서 현재까지 어떻게 변해 왔는가를 설명하면서 보여주면 좀 이해가 될지 모릅니다. 아니 경험상 이건 이거다 라고 설명을 굳이 하지 않아도, 이해가 되는 경우를 봤습니다. 그래서 옛날 우리 선배들이 주로 사용하던 부품을 먼저 설명하고 사용방법을 먼저 설명하고, 현재 얼마나 변해 왔는지 보여드리면 자연스럽게 이해가 되지 않을까요?

 

인덕터와 비드 의 회로 설계툴(OrCad) 에서 보면 라이브러리가 동일하다. 아니 비슷하다. 물론 라이브러리를 그리는 사람의 의도대로 똑같이 그릴수도 있고, 다르게 그릴 수도 있는데, 왜 하필 인더터와 비드를 같은 L 로 표시 했을까? 를 생각해봐야 할 필요가 있다. 결론은 동일하다고 봐야 정신건강에 도움이 될듯 합니다.

 

회로툴 L 라이브러리

 회로툴 Trans 라이브러리

 

동일한 종류의 부품이다 하고 이해하고 넘어 갑시다. 왜냐 하면 Inductor 라는 부품의 특성은 아주 많은 응용분야에 여러가지 형태로 이용하게 된다. 그래서 단편적인 예를 들어서 설명하기 어려운 부품이 바로 인덕터 L (Inductor) 입니다.

 

인덕터는 현재도 많은 종류가 존재 하고 앞으로도 많은 형태가 새로 만들어 질 것이기 때문에 복잡한 것이다.

 

01

02

03

04

공심 형태 

칩 형태 

동조용 IFT 

트랜스 

 

 

제일처음 보게 되는 인덕터 트랜스포머 (Transformer)

 

공학도 들은 위에 그림을 전자/전기/통신 을 막론하고 모두 공부했고 봐 왔다. 모르는 공학도는 없을 정도로 많이~

상호 인덕턴스 바로 에너지의 전달이다. 상용전기(220V/110V) 에서 전자부품의 동작전원 을 만들기 위해 인덕터를 이용하여 제일처음 사용하는 부품이고, 원리 입니다. 자세한 내용은 생략해도 될 정도로 이미 많은 이론과 지식이 있는 분야 이기도 하지요~

 

공진 회로로 사용되는 바 안테나 (Bar ANT) 와 동조코일 (IFT)

 

01

02

03

라디오 바 안테나

안테나 공진회로

동조용 IFT


그 다음 라디오 또는 가정용 수신기등에 많이 사용되는 라디오 안테나 및 공진회로 입니다. 바 안테나를 통해 들어오는 Radio Frequncy 를 공진회로(탱크회로)를 통해서 필터링 하고, 원하는 주파수 만을 받아들여 라디오로 수신되도록 만드는 회로이고 이 부분에 이용되는 부품 들입니다. 그리고 때론 발진회로에도 사용되어지고 이미 오래전 부터 Inductor는 사용되어 왔습니다.

 

전원입력 단 노이즈 제거용 코일 (Inductor)

 

그 다음 제일 많이 사용되고 일반적인 분야가 전원입력 단 노이즈 제거를 위해 사용되는 여러 형태의 인덕터 이다.

 

01

02

03

04

05

 트로이달

페라이트 코아형 

쵸크형

액셜 고정형 

SMD 코아형 

 

전원 입력단에 사용되는 인덕터는 광대역의 주파수를 차단 또는 흡수하기 위해 사용되어 지고, 크기와 가격적인 면에서 좀더 효율적인 방법을 찾기 위한 노력이 꾸준히 발휘되는 분야 이고 그만큼 새로운 제품이 많이 나오기도 한다.

 

사용측면에서 주의 할점은 부품에 흐르는 전류의 양과 주파수가 중요하다. 허용용량 이상의 양을 흐르게 하기해서는 자기포화(세츄레이션) 상태가 되지 않는 범위 내 에서 사용되어야 한다.

 

인덕터에서 사용되는 페라이트코어는 인덕턴스를 높이기 위해 사용됩니다. 구리(Cu) 값이 꾀 비싼 금속이기 때문에 적은량의 구리를 사용하면서 효과적으로 인덕턴스를 높이기 위한 방법 입니다. 그리고 페라이트 코어에서 노이즈는 열로 변환해 버리기 떄문에 노이즈 반사가 아닌 흡수의 개념이 포함 됩니다.

 

바로 여기에서 광대역(여러 주파수 대)에서 보편적인 인덕턴스 값을 보이는 페라이트 코일과 다르게 점점 사용량이 많아지는 고주파 회로에서 발생하는 고주파성 노이즈를 줄이기 위해 분리되어 만들어진 페라이트 Bead 가 나오게 됩니다. 바로 우리가 많이 헷갈려 하는 비드(Bead) 는 바로 페라이트 코어를 지칭하기도 합니다.

 

고주파 회로에 많이 사용되는 비드 (Bead)

 

01

02

03

비드 필터 

Tow Turn Bead 

비드 어레이 

 

지금까지 봐 왔던 인덕터와 비드라 불리는 차이가 여기에 있다. 코아가 없는 공심형 인덕터나 또는 있는 인덕터는 인덕턴스를 높이기 위해 형태가 변한 것일 뿐 근본적인 원리는 여러 주파수 대역에 걸쳐 동일한 인덕턴스 성질을 이용하는 것이고, 여기에 주파수가 상대적으로 높은 디지털 회로가 많이 사용되면서 고주파에 많이 포진된 노이즈 제거를 위해 비드 라는 부품이 많이 사용되는 것이지 원리가 전혀 다른 부품이 아니라는 것이다.

 

비드는 고주파에서 저항값이 많이 높아진다. 하지만 주파수가 많이 올라가면 그 효과는 무의미 하게 된다. 즉 대체적으로 이용하는 주파수 대역에서만 효과적으로 임피던스가 높아져 노이즈를 흡수하게 된다.

 

그외 인덕터와 비드의 차이는 인덕턴스 값이 다르다. 인덕턴스는 구리선이 감겨있는 형태를 가지고, 여기에 코어가 있느냐 없느냐 에 따라 인덕턴스가 차이 나겠지만, 근본적으로 비드 보다는 훨씬 높은 값을 가지게 된다.

 

비드의 구조를 보면 철심 주변에 페라이트 코어가 감싸고 있는 형태이다. 그러면 예상되는 특성은 인덕턴스 는 온전히 페라이트 코어에 의한 고주파 임피던스 특성만 있고, 직류 저항은 아주 작거나 0 오옴에 가까운 특성을 보인다.

다시 말해서 전원입력 회로에 있어서 직류에 개념으로 봤을떄 전류/전압에 손실없이 전달하면서 고주파 노이즈에 대해서는 높은 임피던스 저항으로 작용을 함으로써 노이즈 제거를 하게 된다.

 

칩(Chip) 타입으로 변형되면서 구분이 모호해진 SMD Type Bead 와 Inductor

 

Inductor 도 SMD 타입으로 변형이 되어 새로 출시가 되기도 하고, Bead 도 마찬가지로 개발 출시가 되면서 외형적인 구분이 어려워 진다. 아래 사진에 몇가지 예를 들겠지만 간단히 설명을 하자면 칩 내부에 실제로 코일형태로 감겨져 있는 (Wound Inductor) 타입이 있는가 하면 적층형(Multilater) 타입으로도 만들어 지는데, 이게 인덕터와 비드를 구분하지는 않고 있다. 다시 말해 구성되어진 형태로 구분되지 않고, 작용하는 특성 및 애초에 사용용도에 맞춰진 시리즈로 구분되어 만들어지는데, 이게 양측의 장점을 다 이용한다. 인덕터에서 인덕턴스를 올리기위한 효과적인 방법으로 페라이트 를 사용하고, 비드는 광대역에 고임피던스 이용을 위해 페라이트를 이용하기도 하고, 코일처럼 감기도 한다는 것이다.

 

01

02

03

04

권선형 단면 

적층형 단면

권선형 투시 

칩 타입 외형 

 

 

 적층형 투시

적층형 구조 


결론적으로 설계시 인덕터 냐 비드냐 를 선택하려면 :

부품의 외형만 보지 말고 내부에 권선형 인지 아니면 적층형 코일인지 아니면 내부에 심선이 굵은 리드형인지 구분할 필요가 있고, 이것도 여의치 않으면 해당부품이 어느파트에 사용되는 부품인지는 구분을 해야 한다. 중요!

 

01

02

03

Axial 비드 

SMD 비드 (Turn) 

SMD 비드 


위 에 보인 몇가지 비드는 액셜타입 이 원래 개념에 맞는 비드 일지 모르겠다. 나머진 좀더 좋은 효과를 보려고 또는 사용상의 편의상 변형 된 것이라 판단 하자, 그러면 전원입력 회로에 전압/전류의 손실이 없도록 하면서 고주파 노이즈 제거를 위해 사용하려면 위 에 3가지 타입를 고르되 내부 구조가 많은 전류가 흘러도 손실이 없는지 즉, 직류저항이 충분히 낮은지 허용전류와 주파수 응답특성 곡선을 확인 해 볼 필요가 있다.

 

나머진 해당 시그널 또는 해당 핀에 맞는 특성, 사용주파수에 따라서 적절히 추천부품을 사용하거나, 레퍼런스 회로에 사용된 부품과 동일특성 부품으로 대치 시켜야 한다.

 

시간이 되면 사용하고 있는 부품을 일부러 파손시켜 내부 구조를 파악해 두는 것도 좋을듯 합니다.

 

마지막으로 Maker 카다로그에 보면 사용용도에 맞춰서 시리즈를 내 놓기도 한다. 설계시 표를 참조해야 한다.

 

 


'이것저것' 카테고리의 다른 글

ARM Cortex-M  (0) 2017.05.31
Wifi 안테나 DIY  (0) 2017.05.02
JTAG 이란?  (0) 2017.04.16
JTAG 을 이용한 PCB Test  (0) 2017.04.16
개인 작업실이야? 창업이야?  (1) 2016.12.19
Posted by 떼기
,

이것 저것 만들기를 좋아하는 탓에 우리집 내 공간은 항상 잡동사니가 많이 굴러다닌다. 쉽지 않은 회사생활을 하다보니 컴퓨터가 고장나 책상위에 뜯어 놓고 방치되어 먼지가 쌓이고, 그걸 다시 손 데려면 먼지부터 청소하고, 큰 맘을 먹어야 다시 손데서 정리하고 하길 반복하다 보니 그런 생활이 내 전부가 되어버린지 오래 되었다.


그래서 막연히 개인작업실 하나 있었으면 좋겠다 싶은 꿈만 꾸다가, 이번에 큰 맘 먹고 일을 벌인다. 바로 집 앞에 있는 작은상가 하나를 얻었다. 이제 이 작은 공간에 이쁘고 아기자기 한 공돌이 놀이터를 꾸미려 한다. 작업실 이름도 짓고 인테리어도 하고 로고도 만들어 특이한 간판도 달고 싶다. 아는 지인들은 회사 창업하냐고 묻곤 한다. 그러면 난 어~ 회사 차릴라고 준비중~ㅋ, 소심한 거드름도 피어 본다.


일단 내 손으로 하나하나 모든 인테리어를 이쁘고 아기자기 하게 꾸며 볼까 고민도 해봤지만, 내가 부지런한 성격도 아니고, 집에 책상처럼 먼지만 풀풀 쌓이는 창고처럼 변할까 걱정도 되서, 큰 맘먹고 돈 들여서 인테리어 하자~

이렇게 맘 먹고 인테리어 업자 와 컨셉을 찾아 헤메길 2개월 결국 컨셉은 다락방 느낌의 복층, 인테리어는 주문가구 제작을 해주는 인터넷에 꽤 유명한 엘린데코공방 으로 결정~

공간이 대략 22제곱미터(6.6평) 인테리어 업자 입장에서 보면 공사 할 만한 사이즈가 아니고 얼마 돈도 안되는 규모라 그런지 여기저기 인터넷에 문의해도 관심을 보이는 곳이 없어서 본의 아니게 시간이 오려 걸렸다. 인테리어 공사 해줄 업자 찾느라 2개월 허비. 결국은 나무를 다루는 전문가를 찾아가 보자 이렇게 맘 먹고, 주문가구 공방에 직접 가서 문의를 해 봤다. 지금 생각해보면 참 우습게도, 인테리어를 해 달라고 위 사진처럼 사진위에 그림판으로 대충 그려서 인터넷 다운받은 사진넣고 이걸 도면이라고 들이 밀면서 이렇게 만들어 주실수 있나요? 그것도 DIY 가구공방에 가서~

근데 그게 제대로 먹혔다, 그냥 방망이 휘둘렀는데 3루 안타 친격이다. 이번 나름 대 프로젝트에 적임자를 찾은거 같은 느낌, 기대 이상 내가 주문한 공사방식 말고도 다른 좋은 아이디어를 추천해 주었고, 마치 자기 작업실 만들듯이 애정을 갖고 해 주더라~ 결국 완성된 사진은 아래

처음 잡았던 예산보다 많이 초과 되고 또 빗물이 세는걸 발견하고 지붕공사 까지 추가 된걸 합하면 적지 않은 돈이 들기 했지만 암튼 원하던 분위기에 아담한 작업실 나만에 아지트를 만드는데 성공 했다.

돈? 어떤 매니아들은 자기가 몰입하는 분야에 몇 천만원 우습게 쓰기도 하쟎아~ 이렇게 나만에 위안을 삼고, 앞으로 이곳에서 여러가지 그동안 해보고 싶었던, 가능한 많은 것을 해보려고 한다. 많은 축복이 있기를~

'이것저것' 카테고리의 다른 글

ARM Cortex-M  (0) 2017.05.31
Wifi 안테나 DIY  (0) 2017.05.02
JTAG 이란?  (0) 2017.04.16
JTAG 을 이용한 PCB Test  (0) 2017.04.16
인덕터 와 비드 의 차이  (0) 2017.03.19
Posted by 떼기
,