← 목록
기타 2026-07-17 5KB 읽기 5분

ESI FPGA 센서수집 모듈 — 한선씨 시뮬 + VHDL 더블 (SC1 프론트엔드) 1차

개요

space.crowny.org 실물화에서 FPGA 모듈이 다채널 센서를 수집해 SC1 규격 프레임을 UART로 RPi 허브에 출력하는 프론트엔드의 1차 산출물. 이번 작업은 시뮬레이션 더블(한선씨 동작모델 + VHDL/ghdl 더블) — 실기 합성(vivado/quartus 등 ESI 보드 타깃)은 후속 큐.

무엇을 했는지

  1. FPGA센서모듈.한선 — 8채널 센서 입력 레지스터(타입코드는 하드웨어.한선 레지스터 API로
실제 왕복 시연, 측정값은 부호있는 정수라 레지스터 비트마스킹 함정을 피해 배열로 저장) + 채널 스캔 FSM(IDLE→SAMPLE→ENCODE→TX→next) + SC1 프레임 조립(센서코드.한선의 SC인코딩 재사용, chk는 그 안에서 자동 계산) + 셀코어 룰생성/룰조건추가/룰변경추가/룰평가로 FSM 전이 병행표현(감사용, 정본 판정경로 아님) + 자체시험 55/55 ALL_PASS (CROWNY_STRICT=1, 경고 0), 센서코드.한선 SC디코딩/SC검증으로 교차검증.
  1. fpga_sensor_collector.vhd — 동일 FSM·동일 SC1 체크섬 공식(VHDL mod가 양수나머지와
동형이라 그대로 재사용)·동일 8채널 시나리오를 재현하는 VHDL 더블. 실물 8N1 UART 타이밍 (generic CLK_HZ/BAUD 분주) 포함, byte_out/byte_valid 모니터 포트로 테스트벤치가 바이트를 쉽게 재조립하도록 설계.
  1. tb_fpga_sensor_collector.vhd — 8채널 프레임을 재조립해 센서코드.한선/한선씨 시뮬이 실제로
산출한 프레임 문자열(§10 크라운yc 실행으로 확보)과 assert 비교. ghdl 실행: ALL_PASS 8/8, 316,585ns에 자연 종료(assert failure 0건, exit 0).
  1. fpga_sensor_collector.한선 / tb_fpga_sensor_collector.한선 — VHDL 파일명 규약 동반
한선씨 별칭(정본 로직은 FPGA센서모듈.한선에 이미 있어 얇은 가져오기 별칭으로 구성).
  1. 합성검토.한선 — 공유 라이브러리 한선씨하드웨어합성.한선(미수정)에 이 모듈의 회로 기술을
입력해 참고 수준 자원추정: 게이트 5 / 레지스터 12 / LUT 58(0%) / FF 96(0%) / 타이밍 슬랙 9ns (10ns 클럭 기준, 만족). 그 과정에서 그 라이브러리 자체의 기존 버그(포함() 위치0 매칭을 3진 false로 오판 — 설명 문자열이 "레지스터"/"게이트"로 시작하면 카운트가 0에 머묾)를 발견해, 공유 파일은 건드리지 않고 "칩내 " 접두어로 우회했다.
  1. 파리티.md — 한선씨 시뮬 vs VHDL tb 기대값 vs 센서코드.한선 코덱 3자 대조표(8채널 전부
바이트 단위 프레임 문자열 일치, 품질 A/O 판정 경로까지 파리티 확인).

관련 파일 경로

  • /Users/ef/crowny-space/fpga/FPGA센서모듈.한선
  • /Users/ef/crowny-space/fpga/fpga_sensor_collector.vhd
  • /Users/ef/crowny-space/fpga/tb_fpga_sensor_collector.vhd
  • /Users/ef/crowny-space/fpga/fpga_sensor_collector.한선
  • /Users/ef/crowny-space/fpga/tb_fpga_sensor_collector.한선
  • /Users/ef/crowny-space/fpga/합성검토.한선
  • /Users/ef/crowny-space/fpga/합성추정보고서.txt
  • /Users/ef/crowny-space/fpga/파리티.md
  • 참조(수정 안 함): /Users/ef/crowny-space/규격/센서코드규격-v1.md, /Users/ef/crowny-space/규격/센서코드.한선,
/Users/ef/CrownyOS/crownyc/libs/하드웨어.한선, /Users/ef/CrownyOS/crownyc/libs/한선씨하드웨어합성.한선

검증

  • CROWNY_STRICT=1 ./hanseonc_high FPGA센서모듈.한선 > /tmp/fp.toau && ./crownyc run /tmp/fp.toau
→ ALL_PASS 55/55(본 모듈) + ALL_PASS 110/110(가져오기 부작용, 센서코드.한선 자체시험), STRICT 경고 0.
  • ghdl(/opt/homebrew/bin/ghdl, 이미 설치됨): ghdl -a/-e/-r --std=08 3단계 전부 에러 0,
테스트벤치 ALL_PASS 8/8.
  • 크라우니코드: lookup HIT 0건(신규 영역) / MISS 1건(생성) / learn 추가 1건
(crownycode-brain.sh learn "FPGA센서수집모듈" FPGA센서모듈.한선 — 학습완료).
  • touchedExistingFiles=[] (기존/공유/타 서비스 파일은 Read만 하고 Edit/Write 없음).

잔여 이슈

  • RPN(.rpn.한선) 미완 — 센서코드.한선과 동일 사유(다중문장 한 줄 관용구를 clike_to_rpn.py가
완전히 못 받음). 후속.
  • 실기 합성(vivado/quartus, ESI 보드 핀배치·타이밍클로저) 미수행 — §합성검토는 참고 수준 근사.
  • VHDL CH_ENTITY는 16자 고정폭 문자열 배열 하드코딩(합성 편의) — 가변 N_CH/엔티티명 지원은
후속 확장 시 문자열 ROM/CSR 매핑으로 일반화 필요.
  • 발견한 공유 라이브러리(한선씨하드웨어합성.한선) 버그는 수정하지 않고 호출측에서 우회만 함
— 다른 세션이 그 라이브러리를 직접 고칠 때 참고(파리티.md §4-3에 재현 조건 기록).