연구 노트

    USB to UART 변환 보드 제작 주문 맡겼다.

    USB to UART 변환 보드 제작 주문 맡겼다.

    FT230XS을 사용하기로 하다 별것 아닌 단순한 보드임에도 작업하는 데 정말 오래 걸렸다. 회사 일도 바쁘고 육아도 하느라 작업 시간 내기가 힘들었는데, 그래도 포기하지 않고 끝낸 결과물이다. 처음에는 Silicon Labs의 CP2102N으로 만들 계획이었는데, 부품 수급이 불안정하기도 하고 패키지가 QFN타입이라 수삽 하기 어려울 것 같아 다른 칩으로 바꾸기로 하였다. 그래서 선택한 게 FTDI의 FT230XS이다. CP210X시리즈가 사용하기 편하다고 하는데, FT230XS도 기능이 단순해서 회로 그리기도 아주 쉬웠다. 선배의 조언 아트웍 작업할 때 고민을 많이 했다. 처음에는 보기 좋게 부품들을 가지런히 줄 세우고 싶었다. 그런데 회사 선배가 몇 가지 조언을 해주었는데 그에 따라서 전면 수정 했..

    PCB 설계 도구의 부품 라이브러리, 사용 전 확인은 필수

    PCB 설계 도구의 부품 라이브러리, 사용 전 확인은 필수

    CP2102N 라이브러리가 필요했던 이유 KiCad를 설치하면 기본으로 포함된 라이브러리에 CP2102N이 포함되어 있다. 하지만 현재 시장에 공급되고 있는 것과는 제품번호가 다르다. KiCad에 준비된 것은 'CP2102N-A01'로 이어지는 것이고 지금 판매 중인 것은 'CP2102N-A02'로 이어지는 모델이다. 데이터 시트를 참고해보면 이것은 펌웨어 리비전 차이인 것을 알 수 있다. 펌웨어만 다른 것이라면 KiCad에 기본 설치된 라이브러리를 사용해도 될 것이다. 하지만 모델명이 다른 것이 마음에 걸리기도 하고 풋 프린트와 3D 모델이 라이브러리에 포함되어 있지 않아서 새로 구해보기로 마음먹었다. 다행히 전자 부품 쇼핑 사이트인 마우저에서 KiCad에서 사용할 수 있는 라이브러리를 제공해주고 있다..

    부폼 비교 기능을 맹신하지마라

    부폼 비교 기능을 맹신하지마라

    앞서 부품을 고를 때 전자 부품 쇼핑몰의 비교기능을 활용하자는 글을 썼다. 이미 알고 있는 모델과 유사한 사양의 부품을 비교할 수 있어 더 나은 선택을 할 수 있다는 취지의 글이었다. 아마 대부분의 경우는 의도대로 그 기능을 활용할 수 있을 것이다. 하지만 모든 일이 그렇듯 항상 올바르게 일이 풀리지는 않는다. 지난번 글에서 알아본 USB to UART Bridge인 CP2102N과 유사 제품을 조사하면서 알게 된 비교 기능의 허점을 짚어본다. 돌다리도 두둘겨 보고 건너라 일단 비교표를 다시 보자. 세 제품 사양이 거의 비슷하지만 가장 눈에 띄는 차이점은 데이터 전송률(Data Rate)이다. CP2102N의 Data Rate는 3Mb/s, FT234XD와 MCP2200은 12Mb/s로 표시되어 있다. ..

    부품 비교가 필요할 때 전자부품 쇼핑몰을 이용하자

    부품 비교가 필요할 때 전자부품 쇼핑몰을 이용하자

    문제의 시작 최근 USB-UART 변환 보드를 연습 삼아 만들어보려고 하고 있다. 그래서 가장 먼저 시작한 일이 변환 IC를 찾는 것이다. 내가 알고 있는 칩은 Silicon Labs 사(이하 Silabs)의 CP2102뿐이었다. 그것으로도 충분히 기능하는 보드를 만들 수 있겠지만, 사이드 프로젝트이니만큼 내가 하고 싶은 데로 해보고 싶었다. 그래서 같은 기능을 하는 다른 칩을 알아보고 비교해보기로 했다. Silabs 부터 ST Microelectronics사(이하 ST), Texas Instruments사(이하 TI) 홈페이지를 들락거리며 USB to UART 변환 칩을 찾아보았다. Silabs에는 CP2102 말고도 다양한 라인업이 마련되어있지만, ST와 TI에서는 알맞은 부품을 속 시원하게 찾을 수..

    [TIL] 210423 - Deep LearniNg (~C1W4L05)

    [TIL] 210423 - Deep LearniNg (~C1W4L05)

    이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W4L05까지의 내용을 정리한 것이다. 심층 신경망의 계산 과정을 대략적으로 흝어보았다. 내용 요약 심층 신경망 네트워크 구성하기 $l$번째 층을 기준으로 볼 때 입력은 $a^{[l-1]}$이고 출력은 $a^{[l]}$이 된다. 이 때 계산 과정에서 얻게되는 $w^{[l]}$, $b^{[l]}$ 그리고 $z^{[l]}$은 역전파 계산에 사용되므로 캐싱하도록 한다. 역방향으로 계산될 경우에 입력은 $da^{[l]}$이고 출력은 $da^{[l-1]}$이다. 이 계산과정에서 캐싱해두었던 $w^{[l]}$, $b^{[l]}$ 그리고 $z^{[l]}$를 사용하면 효율적으로 처리할 수 있다. 역방향 전파의 계산 과정에서 얻어지는 $dw^{[l..

    GNU 어셈블러와 링커 스크립트 매뉴얼

    GNU 어셈블러와 링커 스크립트 공식 매뉴얼 링크이다. 거의 날것에 가까운 HTML로 작성된 문서이지만 이것만큼 확실하게 설명된 것이 없었다. 어셈블러와 링커 스크립트와 관련해서 모르는 게 생기면 가장 먼저 찾아봐야 할 문서들이다. 한글 문서는 번역된 지 오래되어 영문의 최신 문서와 조금 다른 점이 있을 수도 있다. 어셈블러 공식 문서 한글 번역판 링커 스크립트 공식 문서 한글 번역판 1 한글 번역판 2

    [TIL] 210422 - Deep LearniNg (~C1W4L04)

    이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W4L04까지의 내용을 정리한 것이다. 심층 신경망이 좋은 결과를 낼 수 있는 이유에 대해 설명하였다. 내용 요약 심층 신경망이 더 많은 특징을 잡아낼 수 있는 이유 심층 신경망이 왜 잘 작동할 수 있는지에 대한 직관을 심어주는 내용이었다. 크게 두 가지 직관을 설명하였다. 첫 번째 직관은 신경망이 깊을수록 아주 단순한 특징부터 시작해 복합적인 특징을 학습할 수 있다는 것이다. 얼굴 인식을 예로 들면 처음에는 여러 방향의 경계 특징(edge)을 인식하다가 층이 깊어질수록 눈, 코, 입, 귀와 같은 특징을, 마지막에는 얼굴 전체 학습하여 특정할 수 있다. 음성 인식에서는 단순한 노이즈 수준의 특징부터 시작해 음소 단위, 단어, 문장 ..

    [TIL] 210420 - Deep LearniNg (~C1W4L03)

    [TIL] 210420 - Deep LearniNg (~C1W4L03)

    이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W4L02까지의 내용을 정리한 것이다. 심층 신경망에서의 행렬 차원을 확인하는 방법을 설명한다. 내용 요약 행렬의 차원을 알맞게 만들기 각 층에서 만들어지는 행렬들의 차원을 혼돈하지 않기 위해서 확인하는 방법을 설명하였다. 아래와 같은 심층 신경망이 있을 때를 예시로 들었다. 각 층마다 계산하게되는 식은 $z^{[l]}=w^{[l]}a^{[l-1]}+b^{[l]}$ 이다. $l=1$ 층에서 은닉층의 노드 수($n^{[1]}$)는 3이다. 따라서 $z^{[1]}$ 행렬의 크기는 (3, 1)이 되어야 한다. $a^{[0]}$의 크기는 입력 특성의 수 이므로 (2, 1)이다. 그러면 $w^{[1]}$의 크기는 (3, 2)가 되어야 하다는..