크라우니 진법의 4상(음·옴·티·타)은 2비트 헤더 하나로 완전히 인코딩된다. 2비트가 만드는 네 가지 조합(00·01·10·11)이 4상의 물리적 표현이며, 비트의 에너지 해석(0의 개수 = 낮은 에너지, 1의 개수 = 높은 에너지)이 4상의 계층 순서와 정확히 일치한다. FPGA 위에서 크(Cr)와 카(Ka)를 구현할 때는 이상적인 무리수 값(e, 1/e) 대신 비트 시프트로 표현 가능한 최근접 이진 분수를 영구 하드웨어 상수로 선언하고, 이 선언값과 이상값의 차이(파생 오차)를 Layer 0(음 버퍼)으로 결정론적으로 라우팅한다.
---
| 2비트 코드 | 상 | 4상 레이어 | 값 | 기능 |
|---|---|---|---|---|
00 | 음(Um) | Layer 0 | 기저 | 오차·잉여·역기전력 흡수. 블랙홀/버퍼 바다. 시스템의 진짜 바닥 |
01 | 옴(Om) | Layer 1 | 0 | 동적 중립·대기 (음 위에 떠 있는 평형) |
10 | 티(Ti) | Layer 2 | +1 | 팽창·가속·올림(Ceiling) 견인 |
11 | 타(Ta) | Layer 3 | −1 | 수축·감속·내림(Floor) 자연감쇠 |
비트 내 1의 개수가 에너지 수준과 단조 증가한다.
00 → 1의 개수 0 → 에너지 최저 → 음(기저)01 → 1의 개수 1 (하위 비트) → 중립 → 옴10 → 1의 개수 1 (상위 비트) → 증폭 방향 → 티11 → 1의 개수 2 → 수축 방향 → 타이 매핑은 임의 선택이 아니다. 4상 수직 레이어 구조(Layer 0~3)와 비트 코드의 자연 정렬이 일치하도록 설계된 것이다. FPGA의 디코더는 상위 비트 하나로 음/옴(0x) vs 티/타(1x)를 즉시 구분하고, 하위 비트로 세분한다. 추가 룩업 없이 단일 사이클 판정이 가능하다.
사상인코더.한선 (47줄)함수 위상비트(상이름) {
만약 상이름 == "음" { 반환 0 } // 00
만약 상이름 == "옴" { 반환 1 } // 01
만약 상이름 == "티" { 반환 2 } // 10
만약 상이름 == "타" { 반환 3 } // 11
}
함수 비트에서상(코드) {
만약 코드 == 0 { 반환 "음" }
만약 코드 == 1 { 반환 "옴" }
만약 코드 == 2 { 반환 "티" }
만약 코드 == 3 { 반환 "타" }
}
사상인코더_코어.한선은 위상비트/시프트적용/시프트오차 세 함수만 노출하는 순수 함수 파일이다. 데모 래퍼(사상인코더.한선)가 가져오기 후 출력을 담당한다. 추론엔진 v4.0에서 4코어 가져오기 결합의 일원으로 편입되었다.
---
FPGA에서 부동소수점 곱셈기 한 개는 수백 게이트와 수 클럭을 소모한다. 크라우니 진법의 이상값 e=2.71828…과 1/e=0.36788…은 무리수이므로 유한 이진 표현이 불가능하다. 대신, 비트 시프트 덧셈으로 정확히 표현되는 최근접 이진 분수를 FPGA 하드웨어 상수로 선언한다. 남는 오차는 설계 단계에서 음 버퍼 파생으로 명시한다.
| 항목 | 값 |
|---|---|
| 이상값 | e ≈ 2.71828 |
| FPGA 선언값 | 2.75 |
| 이진 소수 표현 | 10.11 |
| 비트 시프트 분해 | 2 + 2⁻¹ + 2⁻² |
| 연산 의사코드 | result = x + (x >> 1) + (x >> 2) |
| 파생 오차(이상값 기준) | +0.0318 |
| 파생 오차(×1000 고정소수점) | +32 |
| 오차 라우팅 | Layer 0(음 버퍼) 즉시 덤프 |
비트 시프트 연산 3회 + 정수 덧셈 2회로 구성. 곱셈 게이트 0개. 단일 클럭 완료.
| 항목 | 값 |
|---|---|
| 이상값 | 1/e ≈ 0.36788 |
| FPGA 선언값 | 0.375 |
| 이진 소수 표현 | 0.011 |
| 비트 시프트 분해 | 2⁻² + 2⁻³ |
| 연산 의사코드 | result = (x >> 2) + (x >> 3) |
| 파생 오차(이상값 기준) | +0.0072 |
| 파생 오차(×1000 고정소수점) | +7 |
| 오차 라우팅 | Layer 0(음 버퍼) 즉시 덤프 |
비트 시프트 연산 2회 + 정수 덧셈 1회. 곱셈 게이트 0개. 단일 클럭 완료.
| 대상 | 이상값 | FPGA 선언값 | 이진분수 | 비트시프트 구현 | 음버퍼 파생 |
|---|---|---|---|---|---|
| Cr1 | 2.7182 | 2.75 | 10.11 | x + (x>>1) + (x>>2) | +0.0318 |
| Ka1 | 0.3678 | 0.375 | 0.011 | (x>>2) + (x>>3) | +0.0072 |
---
rtl/크라우니시프트.vFPGA RTL 모듈 crowny_shift는 한선씨 모듈 회로합성.한선의 합성 대상이다.
// crowny_shift 핵심 로직 (의사코드 수준 발췌)
// 티(10): x + x>>1 + x>>2 ≈ 2.75x
assign ti_out = x + (x >> 1) + (x >> 2);
// 타(11): x>>2 + x>>3 ≈ 0.375x
assign ta_out = (x >> 2) + (x >> 3);
// 옴(01): 원본 유지
assign om_out = x;
// 음(00): 파생오차 포트
assign err_x1000 = (상코드 == 2) ? 32 : (상코드 == 3) ? 7 : 0;
err_x1000 포트: Cr1 오차 +32, Ka1 오차 +7을 상위 회로로 별도 출력하여 음 버퍼 라우팅 연결 지점을 명시함---
부동소수점 연산에서 오차는 어디로 가는지 알 수 없다(비결정론적). 크라우니 FPGA 방식에서는 선언값과 이상값의 차이(파생 오차)가 설계 단계에서 이미 Layer 0(음 버퍼)으로 라우팅된다. 이것은 정밀도 포기가 아니라 오차의 행선지를 아키텍처에 포함시키는 결정론적 설계다.
연산 예시:
V = 15.7 (입력)
프레임(올림, Cr3=20) → 20
깃든수(내림) → 15
음 덤프 → 20 − 15 = 5
O(1) 처리. 소수점 연산 없음.
---
이 장이 다루는 내용(2비트 4상 인코딩 + FPGA 시프트 상수)은 6모듈 구현 체계의 2단계B에 해당한다.
| 단계 | 모듈명 | 역할 |
|---|---|---|
| 1단계 | 크라우니진법.한선 | 프레임/깃든수/음버퍼 계산기 |
| 2단계A | 크라우니진법2.한선 | 감소경로·카(Ka) 미시·균형통합 |
| 2단계B | 사상인코더.한선 | 2비트 4상 인코딩·FPGA Cr1/Ka1 상수 |
| 3단계 | 방사형셀코어.한선 | 극좌표 DB (R=크라우니레벨, θ=완성비율) |
| 4단계 | 의미어매핑.한선 | 36핵심어→크라우니벡터 사전 |
| 5단계 | 크라우니추론엔진.한선 | 이중 트랙 규칙기반 추론 에이전트 |
사상인코더_코어.한선은 추론엔진 v4.0의 4코어 가져오기 결합 체계(의미어매핑_코어 + 사상인코더_코어 + 크라우니진법2_코어 + 방사형셀코어_코어)에 편입되어 전체 회귀 9/9 GREEN을 달성했다.
---
| Level n | Crⁿ (실제) | 호출키(반올림) | Kaⁿ×1000 (유효숫자 3) |
|---|---|---|---|
| 0 | 1.000 | 1 | — |
| 1 | 2.718 | 3 | 368 |
| 2 | 7.389 | 7 | 135 |
| 3 | 20.085 | 20 | 50 |
| 4 | 54.598 | 55 | 18 |
| 5 | 148.413 | 148 | 7 |
| 6 | 403.429 | 403 | 2 |
| 7 | 1096.633 | 1096 | — |
Cr7=1096 이상은 소수점 버리고 1의 자리까지 정수 보존(거래 무결성 규칙). Ka 미시: 시작수부터 유효숫자 3자리 보존(언더플로 방지). 소수점 3자리 미만은 음(Um) 영역으로 절단.
---
4상 인코딩과 비트 시프트 상수는 ISA729의 방향 오피코드(티·옴·타 트릿)와 1:1 대응한다. 한선씨 VM에서 오른시프트는 2진 ÷2ⁿ이 아니라 3진 ÷3ⁿ(트릿 시프트)이므로 FPGA RTL과 VM 구현의 라운딩 방식이 다를 수 있다. FPGA 합성(yosys/nextpnr-ice40) 파이프라인에서는 회로합성.한선이 Verilog 게이트 수준으로 변환한다. VM 레벨에서의 한선씨 시프트 함수와 RTL 비트 시프트의 동작 차이는 반드시 검증 벤치마크(사상인코더_코어 단위 테스트)로 확인해야 한다.
첫 번째 책은 선물이에요. 가입하면 100맘을 드리니까, 두 번째 책부터 자유롭게 읽을 수 있어요. 친구를 추천하면 50맘도 생겨요.