2025 전국 대학생 AI 반도체 회로 설계 경진대회 · 팀 반짝반짝
1 / 3
← 경진대회 기술 노트로 돌아가기

1. BallControl 입력 표현과 출력 정의

이 글에서는 BallControl 과제의 위치와 무게 조건을 회로 입력으로 표현하고, 네 방향 출력을 정의한 과정을 설명합니다. 보드는 11×9 격자로 나누어 one-hot 신호로 표현했고, 무게는 일정한 시간 창 안의 spike 빈도에 반영했습니다. 구체적인 좌표 예시를 통해 두 입력 방식의 역할과 출력까지 이어지는 흐름을 살펴봅니다.

입력·출력 사양

회로 입력으로는 디지털 값으로 주어진 공의 현재 좌표와 무게를 사용했다. 30×30cm 보드를 X축 11개, Y축 9개의 좌표로 나누고 99개 위치 가운데 하나를 활성화했다. 무게는 선택된 위치 입력이 시간축에서 spike를 내는 빈도를 조절한다. 회로 출력은 +X·−X·+Y·−Y 네 방향의 spike 이벤트로 정의했다.

보드
30×30cm
공 무게
1~30g
목표
중앙 반경 1cm
출력
+X · −X · +Y · −Y

과제 조건과 좌표 모델

좌표계의 중심은 (0, 0)이며, X축은 −5부터 +5, Y축은 −4부터 +4까지의 격자로 모델링된다. 11×9 격자는 99개 입력 뉴런에 대응한다. 중앙 반경 1cm는 제어 목표의 물리 기준으로 사용된다.

먼저 좌표가 주어졌을 때 SNN이 어떤 방향으로 반응하는지 확인하기 위해 이산 좌표 모델을 사용했다. 실제 위치를 추정하는 앞단과 SNN 계산을 분리하고, 실험에서는 좌표를 직접 입력했다. 11×9 격자는 이 제어 모델에서 위치를 표현하는 단위이다.

물리 문제를 디지털 제어 신호로 바꾸는 범위
공의 위치와 압력 정보를 입력 뉴런이 받고 SNN을 거쳐 네 방향 모터 뉴런으로 전달하는 BallControl 개념도
최종 발표자료에 정리한 SNN 제어 회로의 시스템 개념도이다. 위치·무게 입력이 네 방향 출력으로 이어지는 관계를 보여준다.
물리 조건회로에서의 표현설계 의미
30×30cm 보드11×9 위치 격자연속 좌표를 99개 이산 위치로 단순화
중앙 목표(0, 0)부호가 방향, 절댓값이 중앙과의 거리
중앙 반경 1cm출력 종료 조건의 물리 기준중앙에 도달했는지 판단할 목표 영역
공 무게 1~30gdigital weight와 spike rate무거운 공에 더 큰 시간축 자극 부여
보드 기울임네 방향 출력 뉴런+X·−X·+Y·−Y 제어 이벤트로 분리

위치 one-hot 부호화

X축 11개와 Y축 9개의 조합은 99개 위치를 만든다. 현재 좌표에 해당하는 입력 뉴런 하나만 활성화되며, 네트워크는 활성 위치를 one-hot 벡터로 수신한다. 위치별 흥분·억제 가중치는 이 입력 벡터에 연결된다.

one-hot 표현은 숫자 좌표를 이진수로 직접 넣는 방식보다 입력선 수가 많지만, 각 위치와 가중치 행을 일대일로 연결할 수 있다는 장점이 있다. 예를 들어 같은 X값을 가진 좌표라도 Y값이 다르면 서로 다른 입력 뉴런이 선택되므로, 위치별로 다른 흥분성·억제성 연결을 줄 수 있다. 반대로 격자 해상도가 높아질수록 입력 뉴런과 weight 저장량이 빠르게 늘어난다는 점은 이 표현이 지니는 구조적 비용이다.

좌표 (x, y) x∈[−5,5], y∈[−4,4]
주소 계산 11×9 격자 index 현재 좌표의 뉴런 번호 선택
입력 벡터 99-bit one-hot 선택한 위치만 1
네트워크 99→32 연결 위치별 흥분·억제 가중치 적용

예를 들어 공이 (+3, +4)에 있으면 해당 위치의 입력 뉴런이 활성화된다. 이 spike는 은닉층과 출력층을 거쳐 중앙 방향인 −X와 −Y 채널의 막전위 누적에 기여한다. 이렇게 위치별 연결을 통해 공간상의 좌표를 방향 이벤트로 바꾼다.

무게 rate encoding

one-shot 입력은 위치 정보만 전달한다. 무게 조건은 정해진 시간 창에서 counter < weight일 때 spike를 발생시키는 rate encoding으로 표현된다. digital weight가 클수록 입력 이벤트 수가 증가한다.

첫 번째 실험의 Input_Neuron_SingleShot은 enable 시점에 한 번의 spike를 내보낸다. 이 구조에서는 같은 위치라면 공이 가볍든 무겁든 네트워크가 받는 입력이 같다. 두 번째 실험의 Input_Neuron_RateEncoder는 ball_weight를 입력으로 받아 시간 창 안에서 digital weight만큼 반복 spike를 만든다. 위치는 어느 weight 행을 읽을지 결정하고, 무게는 그 행이 시간축에서 얼마나 강하게 자극될지를 결정하므로 두 정보의 역할이 분리된다.

위치 입력

현재 위치의 공간 표현

99개 중 하나가 활성화되어 현재 공이 어느 격자에 있는지를 나타낸다.

무게 입력

무게에 따른 시간축 자극

15g에는 digital weight 123, 30g에는 255를 적용한다.

구분실험 1실험 2
입력 뉴런Input_Neuron_SingleShotInput_Neuron_RateEncoder
Top 입력ball_x, ball_y, start기존 입력 + ball_weight
무게 반영없음시간 창의 spike rate로 반영
뉴런 설정THRESHOLD 40 · LEAK_SHIFT 4THRESHOLD 300 · LEAK_SHIFT 6
검증 목적좌표–방향 연결 확인위치와 무게를 함께 넣은 반응 비교

예시: (+3, +4), 15g 입력을 회로가 읽는 방법

공이 중앙의 오른쪽 위인 (+3, +4)에 있다고 가정한다. 먼저 11×9 좌표표에서 이 위치에 해당하는 입력 뉴런 하나가 선택된다. X와 Y가 모두 양수이므로 중앙으로 가려면 −X와 −Y 방향의 반응이 필요하다. 선택된 위치 뉴런의 흥분·억제 가중치는 이 두 방향의 막전위가 증가하도록 구성되고, 반대 방향인 +X와 +Y는 상대적으로 억제된다.

15g 조건에서는 digital weight 123을 rate encoder에 넣는다. 정해진 시간 창에서 반복되는 입력 spike가 은닉 뉴런과 출력 뉴런의 막전위에 누적되고, 임계값을 넘은 횟수가 방향별 spike count가 된다. 시뮬레이션에서는 −X spike 수를 X에서 빼고 −Y spike 수를 Y에서 빼는 규칙으로 다음 좌표를 계산했다. 이 규칙을 사용해 출력 방향과 반응량을 좌표 변화로 확인했다.

현재 상태 (+3, +4), 15g 중앙의 오른쪽 위
공간 부호화 99개 중 1개 활성 현재 위치의 weight 행 선택
시간 부호화 digital weight 123 100 time-step 창의 입력 rate
SNN 반응 −X · −Y 발화 중앙 방향의 막전위 누적
출력 해석 방향별 spike count 디지털 이동 모델에 적용

방향 출력 정의

출력 계층은 +X, −X, +Y, −Y 네 채널로 구성된다. 같은 시간 창의 방향별 spike 수를 집계하고, 서로 반대인 채널의 차이를 X축과 Y축 제어량으로 변환한다. 파형에서는 출력 채널과 제어 방향의 대응을 직접 확인할 수 있다.

중앙이 (0, 0)이므로 현재 X가 양수이면 −X 채널이, 음수이면 +X 채널이 중앙 복귀 방향이다. Y축도 같은 원리로 동작한다. 시뮬레이션에서는 spike 하나를 한 칸의 이동으로 대응시켰다. 따라서 (+3, +4)에서 각 축의 오차를 없애려면 −X 방향 3회, −Y 방향 4회의 출력이 필요하다. 이 기준으로 실제 spike count와 목표 이동량을 비교했다.

출력 뉴런의미중앙으로 복귀하는 예
+XX축 양의 방향 제어 이벤트공이 중앙의 왼쪽에 있을 때 증가
−XX축 음의 방향 제어 이벤트공이 중앙의 오른쪽에 있을 때 증가
+YY축 양의 방향 제어 이벤트공이 중앙의 아래쪽에 있을 때 증가
−YY축 음의 방향 제어 이벤트공이 중앙의 위쪽에 있을 때 증가

이렇게 정의된 입력과 출력 사이에는 hidden/output LIF 뉴런의 막전위 누적과 시간 단계 제어가 놓인다. 다음 문서는 한 번의 입력 spike가 가중합, leak, threshold, reset을 거쳐 네 방향 출력으로 변환되는 RTL 구조를 다룬다.