11111111111111111111
페이지 정보

본문
커스텀 11111111111111111111 키보드를 제작해 보고 있습니다.일반 기계식 키보드의 경우 대부분 키보드를 매트릭스 방식으로 읽게 됩니다.위와 같이 하나의 컬럼에 열결된 다수의 ROW를 읽는 종작을 컬럼수만큼 반복을 하게 됩니다.그래서 필요한 신호선의 수는 ROW 신호수 + COL 신호수 가 됩니다.일반적인 키보드의 경우 ROW수는 최대 6개 정도가 됩니다.위와 같이 펑션키열부터 스패이스까지 6개가 됩니다.그래서 ROW 는 0~5까지로 하면 됩니다.하지만 COL수는 키배열에 따라 다르지만 위와 같은 경우 22개 가 됩니다. 그래서 신호선수는 6 + 22 㴨개가 됩니다.위의 경우 108개 부근 숫자가 됩니다(세어보지 않았음)10 x 11 매트릭스로 하면 110개로 가능 하고 21개의 신호선만 있으면 되지만 이럴경우 회로가 복잡해지고 실제 PCB에 배선을 할때 마구마구 꼬이게 됩니다.최적화 하고 고생하면 이것이 가장 효율적일수도 있습니다만....이렇게 신호선수가 가변이 되면 배열이 다른 키보드마다 MCU의 배선이 바뀌게 되고 회로도 바뀌게 됩니다.이래서 저는 배열이 변하더라도 신호선수가 바뀌지 않는 방법을 생각해 보게 11111111111111111111 되었습니다.ROW수는 최대 6개로 하고 COL수는 가변으로 하면 일반적인 키보드는 소화를 할 수 있을 것 같았습니다.그래서 이부분을 저는 처음에 Shift 레지스터를 사용해서 구현을 하려고 했습니다.하지만 일반적인 경우 GPIO 레지스터 다이렉트로 접근 방식으로 처리하면 SW적으로는 문제가 없고 스캔 시간도 크게 문제가 되는 일이 없다는 것을 알게 되었습니다.오히려 읽는 시간은 거의 무시 할 수 있을 정도라는 것을 알게 되었고 이문제는 잊혀지는 줄 알고 있었습니다.하지만 이번 시즌 3에서는 컨트롤러와 키 PCB 가 분리 되어 있습니다.그렇다 보니 많은 COL 수는 배선이 커지는 문제가 발생하게 되었습니다.결국 이번에 다시 이 방법중 일부를 도입해 배선수를 줄이려도 했습니다.이번 시즌 3에서는 단순하게 8bit 짜리 두개를 사용해서 16bit 쉬프트 레지스터를 사용했습니다.그래서 16개의 신호수를 3개로 줄였습니다.GPIO 다이렉크에 비해 약간 늦을지는 모르지만 크게 속도에 영향을 주지는 않으리라 생각합니다.구성하다보니 단순 로직 IC만 가지고 는 단순기능 밖에 구현 할 11111111111111111111 수 없어서 약간 아쉬웠습니다.그래서 이부분에 초기 생각했던 CPLD를 도입해 보기로 했습니다.마치 사용하지 않는 악성 CPLD 재고가 있어서 그것을 활용해보기로 했습니다.몇가지 있지만 여기에 사용하기 가장 좋은 냐석이 ATF1502ASV-15AU44 입니다.ATMEL CPLD 입니다.ATMEl은 지금은 Micro Chip에 흡수 되었습니다.Altera는 Intel에 흡수 되었지요 ^^...3.3V LQFP44핀이라 키보드에 사용하기에도 적당한 사이즈일 것 같습니다.특히 텐키보드에는 빈공간이 별로 없어서 이런거 넣기가 힘든데 이녀석 정도라면 큰 문제가 없을 것 같습니다.그래서 일단 연습용으로 핀맵을 잡고 기능을 정리 했습니다.처음에는 단순한 것부터 시작하기로 했습니다.입력은 3개를 사용하고 출력은 20개로 20bit 쉬프트 레지스터를 구현하기로 했습니다.아직 2개핀 여유가 있어 22개로 해도 될 것 같습니다.추가된 기능은 RESET이 상승에지에서 MODE핀에 따라 다른 기능을 하는 것입니다.이때 MODE핀이 0이면 출력이 1000000Q0만 출력이 1로 되는 이형Reset 동작 입니다.MODE핀이 1이면 모든 출력이 11111111111111111111"이 됩니다.즉 MODE 핀에 따라 바로 초기화 핼때 COL0 이 바로 1이 되어 스캔을 11111111111111111111 시작할 수 있게 한것과모든 출력이 1이 되는 것은 Sleep모드로 진입할때 모든 COL 출력을 1로 해두어야 AnyKey WakeUP 신호를 만들 수 있기 때문입니다.이녀석은 Altera의 Max7000시리즈인 EPM7032AE와 핀 호환 입니다.그리고 이걸로 작업된 POF 파일은 JED파일로 변환해서 구우면 바로 동작이 가능한 호환형 칩입니다.그래서 프로그램은 Altera 툴을 사용할때 EPM7032로 해서 작업하고ATMEL툴을 사용할때는 WinCUPL을 사용해서 작업하면 됩니다.라이팅 브로그램은 ATMISP라는 프로그램을 사용하여야 하고 라이팅 전에 POF를 POF2JED라는 프로그램을 사용해서 JED 파일로 변환응 한 후 사용해야 합니다. 머 이런식으로 하는 것은 기능적인 부분이라 큰 문제가 없고 문제는 프로그래밍을 해주어야 합니다.VHDL을 깊이 공부한 적 없고 필요한 것만 쪼메 삽질해서 한 정도라 그리고 10년도 훨씬 전 거의 20년 전의 일이라 기억도 나지를 않습니다. ^^결국 AI의 도움을 받기로 하고 작업을 해봤습니다.복잡하지 않는 프로그램이라 이정도는 해주리라 생각을 했습니다.중간에 핀맵 설정할때는 약간 문제가 발생을 했습니다.이녀석이 자꾸 11111111111111111111 핀맵을 엉뚱하게 만들어 주더군요.전원핀 부터 이상하게 만들어 주더군요.그래서 한참 삽질을 하다가 답답해서 제가 집접 ALTERA 데이터 시트에서 자료를 찾아 보여주엇습니다.자료를 보니 핀번호가 없습니다.그냥 Pin1, Pin12, Pin23,Pin34 기준핀과 화살표가 있습니다.인간이라면 쉽게 이해가 가능한데 AI에겐 좀 어려웠나 봅니다.이걸 주면서 핀맵 리스트를 만들어 보라고 했습니다.AI가 위 이미지로 보고 만들어준 핀맵 리스트 입니다.핀번호를 보면 이녀석이 핀맵 잡는데 왜 그리 해맸었는지 이해가 갔습니다.1~11번은 정상적으로 이해를 했습니다.하지만 12번 부터는 이해를 하지 못하고 Text로 핀명만 이해를 하고 있습니다.이것을 보고 Altera 자료를 한참 찬아보아도 핀리스트에 대한 자료는 별도로 찾을 수 가 없었습니다.데이터 시트에 나온 이 그림 하나가 제가 찾은 유일한 핀번호와 명칭이 나온 내용입니다.다른 자료는 그냥 핀명과 그 것에 대한 설명이라 핀번호를 알수가 없었습니다.결국 학습한 자료에 의존하는 AI라 자료가 이러니 알수가 없었던 것 같습니다.반면 LCC 타입은 위와 같이 메뉴얼에 표시가 되어 있고 11111111111111111111 같은 방법으로 이미지 주고 핀맵 만들어 주라고 하니 위와 같이 완벽하게 만들어 주었습니다. ^^메뉴얼에 이런식으로 표시가 되어 있었으니 이해가 되는 부분입니다.제가 사용하려고 하던것이 44-Pin TQFP 라서 우측 그림을 참조한 것이 아닌가 싶습니다. ^^Quartus II Web Edition 13.0sp1 을 받아 설치하고 AI가 짜준 VHDL 가지고 핀맵까지 정리 해준후 약간 삽질해서 컴파일 성공하고 최종 POF 파일까지 결과가 나왔습니다.VHDL의 검증도 중요하겠지만 전체 스킴을 생각해보는 계기가 되었으면 좋을 것 같습니다.아직 AI가 활성화 된지 얼마 되지 않아 결과의 오류와 검증이라는 난제는 있지만 그래도 이제 AI가 이런 것까지 해줄 수 있는 시대가 다가오고 있습니다.EPM7032AETC44 CPLD이용한 VHDL 프로그램이 필요합니다. - 입력핀 MD, RE, CK - 출력핀 Q0~Q19 - 기본기능은 20bit shift레지스터 기능 - RESET 기능을 하는 RE핀이 상승에지에서 MD핀이 0이면 Q0만 1이고 나머지는 0 MD핀이 1이면 모든 Qn은 1 - RE핀이 11111111111111111111 0 이고 CK가 상승에지일때 SHIFT 동작 SHIFT 시 Q0는 0으로 채워져야 함 위 기능을 갖는 VHDL을 작성해 주세요.위의 PROMPT에 위의 결과가 나옵니다.크롬브라우저에서 ESP32-S3와시리얼 통신하기(HTML)(JavaScript)위 예제는 크롬브로아주에서 시리얼통신을 하는 예제를 작성해준 것입니다.크롬 API를 사용하면 브라우저에서도 Serial통신을 할 수 있습니다.ESP32-S3와 시리얼로 통신하는 기본적인 예제입니다.거기에 Html로 캔버스에 수신값을 표시하는 기능도 넣어 보았습니다.ESP32-S3로 작성한 Arduino 간단한 예 입니다.500ms 마다 1/0을 보내고 이값에 따라 브라우저에 둥근원의 색을 바꾸는 예제 입니다.확장하면 CSS 와 HTML5의 Canvas와 동영상 플레이 부터 크롭브라우저의 API 까지 이용하는 다양한 기능의 안내를 받거나 코드를 생성 시킬 수 있습니다.혼자서 자룔르 찾아가면서 이런 기능들을 구현하는 Sample 예제를 작성하기 까지 걸리는 노력을 생각해 보면 쉽게 알 수 있습니다.무엇을 알고 싶은지 잘 생각하고 . (모르면 질문도 못함)잘 대답 할수 있게 질문을 하고 (PROMPT가 대세다 라는...)결과에 대해서는 신뢰보다는 검증을 먼저 해보고 (아직은 11111111111111111111 뻥과 오류가 난무하므로)이를 이해해서 자신이 직접 할 수 있게 하는 (나중에 이럴 필요는 없어질듯)크롬 API에서는 시리얼뿐만이 아니라 BLE나 웹소켓등을 통한 다양한 미디어 통신이나 네이티브 리소스 접근이 가능 합니다.CSS와 Javascript만 적당히 이해를 하고 컨셉과 개념만 있으면 디테일한 코드는 AI를 이용해 작성하면 될 것 같습니다.에필로그뭐 이제 VHDL 잘 몰라도 개념만 알면 작성시키고 검증하다 보면 이해도 하고 실력도 늘고 할 수 잇을 것 같습니다.마치 한자 읽기는 하는데 쓰지는 못하는 것처럼 VHDL이나 각종 프로그램들 AI가 작성해준 것 코드리뷰 정도 가능하다면 훨씬 효율적인 작업이 가능할 것 같습니다.다음 PCB 발주 나갈때는 CPLD로 샘플 PCB 하나 제작해서 이것 저것 시험할 수 있도록 해보려고 합니다.이전 포스팅에서 미보드 스캔회로에 CPLD를 적용해 보려고 기초 정보를 정리 해 보았습니다. 이전 포스...
- 이전글구글찌라시 Index Engines 발전 이번 탑재 면 25.07.08
- 다음글구글찌라시 고성능 GPU는 게임뿐 모든 Finder 세 25.07.08
댓글목록
등록된 댓글이 없습니다.