2026년 9월 13일 일요일

[내칩강의2026] 1-3. 남의 칩 부터...

[내칩강의2026] 1-3. 남의 칩 부터...

오픈소스 반도체 설계도구의 설치가 되었습니까? 앞선 게시글에 따라 무사히(?) 설치하고 예제를 수행하는데 문제 없었다는 한 수강생(전기전자학부 3학년)의 답장을 받았습니다. 기계공학, 화학공학, 산업공학 등 다양한 전공의 수강생이 있는 줄 앎니다. 이공계 외에 인문,상경계 전공자들도 있을지 모르겠습니다. 이를 감안하여 강의를 평범하게(상식에 기대어...[링크]) 진행하려고 합니다. 여러분의 설치 현황은 어떻습니까?

"설계"는 기계에서 수행되길 바라는 나의 의도(아이디어)를 기술하는 것에서 시작 합니다. 우리의 목표가 이 '아이디어'를 반도체로 제조하는 것이므로 하드웨어를 기술할 전용의 언어로 기술해야 합니다. 하지만 이 전용의 언어에 익숙치 않으니 그나마 수월한 소프트웨어 언어로 기술하고 이를 상용 마이크로컨트롤러 보드에서 실행 시켜 보기로 합니다. 내 칩"을 만들기 전에 먼저 남의 칩을 활용하여 나의 '알고리즘'을 검증하려는 것입니다. 아울러 상용 반도체의 활용법도 익히도록 합니다. 나중에 내 칩이 나왔을 때 이를 시험하고 응용보드(내 칩 게임기!)를 제작할 요량입니다.

먼저 구현할 알고리즘을 C++ 언어로 기술하고 남의 칩에 맞는 바이너리를 생성(컴파일)하여 적제(업로드, upload)하는 도구가 있습니다. '아듀이노(Arduino)' 입니다. 아듀이노는 8비트 마이크로컨트롤러 보드로 시작 했지만 지금은 다양한 CPU(ESP32, ARM, RISC-V 등)와 다양한 개발 보드를 모두 아우르는 개발 플랫폼으로 발전 하였습니다. 수많은 개발자들이 참여하여 이루 헤아릴 수 없는 라이브러리들을 손쉽게 사용할 수 있습니다. 커뮤니티 또한 매우 활발하여 입문자도 어려움을 쉽게 해결 할 수 있습니다. 아두이노는 GUI는 물론 CLI 도 지원 합니다. 리눅스에 설치 방법은 아래 링크의 글에서 'Arduino' 부분을 참고 하십시요.


워낙 널리 사용되고 있고 GUI 환경은 직관적이라 굳이 사용법을 강의에서 다뤄야 할 필요를 느끼지 못합니다. 그래도 어려움이 있다면 서로 질문하고 토론하여 답을 얻으시기 바랍니다. 도구의 사용법이 아니라 '무엇을 할것인가?' 입니다. 우리가 만들려고 하는 '탁구 게임기'를 남의 칩, 8비트 AVR 프로세서에 구현해 보기로 합니다. 소스 코드는 아래와 같습니다.


깃허브 저장소에서 오픈소스 디자인 킷의 예제에 포함되어 있습니다. 디자인 킷은 수시로 갱신되고 있습니다. 아래의 명령으로 새 파일을 내려 받도록 하십시요.

    $ cd ~/ETRI050_DesignKit
    $ git pull

요즘 깃허브 저장소가 불안 하다는 말이 왕왕 나옵니다. git pull 이 제대로 작동하지 않으면 이전에 받았던 파일들을 모두 제거하고 다시 모두 내려받는 편이 속시원 합니다. 용량이 거의 2기가 가량으로 증가 했으니 시간이 조금 걸릴지도 모릅니다.

    $ rm -rf ETRI-0.5um-CMOS-MPW-Std-Cell-DK
    $ git clone https://github.com/GoodKook/ETRI-0.5um-CMOS-MPW-Std-Cell-DK.git

아래 링크에 남의 칩에서 작동하는 '탁구 게임기'를 설명하였습니다. C++라는 언어가 생소 하더라도 등장하는 단어를 보며 따라가 보도록 하십시요. 겨우 중등 영어 수준의 단어와 그동안 쌓은 눈치밥을 동원 하십시오. 상식에 기대어....!!!!!

    "남의 칩"으로 탁구 게임기

인공지능에게 이 소스코드를 분석해 달라고 하는 것도 좋습니다.

    "남의 칩"으로 구현한 탁구 게임 소스코드를 인공지능에게 분석해 달라고 해봤습니다.

첫째주 대면 수강생들에게 간단한 마이크로넠트롤러 보드를 나눠드렸습니다. "남의 칩"으로 탁구 게임기를 빌드(컴파일)하여 보드에서 실행해 보도록 하십시요. 그리고 위 링크의 게시글 끝 부분에 제시한 토론과제를 수행 하십시요. 실험 보고서가 아닌 '에세이'로 작성하셔야 합니다.

처음 나눠드린 보드에 적재된 펌웨어는 '미니 오실로스코프'입니다. 이 소스코드 역시 디자인 킷 예제에 포함되어 있습니다. 간단한 기능에 대역폭도 아주 좁긴 하지만 응용 프로그램을 개발할 대 유용하게 사용할 수 있습니다. '미니 오실로스코프'의 소스코드 설명은 아래 링크를 참조 하십시오.

    [소스코드 해설] 미니 오실로스코프

소스코드를 읽고 이해하는 것도 중요하지만 경험을 필요로 합니다. 해설글의 내용 중 측정의 기본 원리를 살짝 언급 했습니다. 특히 저항을 이용한 분압기(voltage divider)와 아날로그 신호를 디지털로 바꾸기(Analog-to-Digital Converter)를 눈여겨 보시기 바랍니다. 그리고 아날로그와 디지털을 나름대로 한두 문장으로 설명할 준비를 하십시오.

과제를 수행하자니 첫주부터 조금 머리가 아풀지도 모릅니다. 이정도에서 지쳐 흥미를 잃는다면 냉정히 말해서 수강을 마치시기 바랍니다. 세상은 넓고 할일은 많습니다. 다른 산업분야가 그랬던 것처럼 반도체도 한때 유행일지도 모릅니다.

댓글 없음:

댓글 쓰기