픽셀 스크린 (16x16)
개요
- 목적: 픽셀 스크린(16x16)은 16x16 그리드의 픽셀을 표시하는 시각화 부품으로, 각 픽셀의 상태는 메모리 값에 의해 결정됩니다. 이 부품은 간단한 그래픽을 만들거나, 패턴을 표시하거나, 디지털 회로에서 메모리 내용을 시각화하는 데 유용합니다.
- 기호: 픽셀 스크린은 직사각형 디스플레이 그리드로 표현됩니다. 외부 연결 핀이 없으며, 연결된 RAM 부품의 내부 메모리에서 직접 디스플레이 데이터를 읽습니다.
- DigiSim.io 역할: 디지털 회로를 위한 시각적 출력 기능을 제공하여, 그래픽 디스플레이, 패턴 시각화, 메모리 내용 모니터링을 가능하게 합니다.
![]()
기능 설명
픽셀 스크린 부품은 연결된 RAM 부품에서 디스플레이 데이터를 읽으며, 메모리의 각 비트를 켜짐 또는 꺼짐이 될 수 있는 픽셀로 해석합니다. 이 부품은 16x16 픽셀(총 256 픽셀)의 해상도를 제공하며, 이를 나타내기 위해 32바이트의 메모리가 필요합니다 (픽셀당 1비트).
핀
픽셀 스크린은 입력 0개 및 출력 0개입니다. 외부 연결 핀이 없습니다. 대신, 연결된 RAM 부품의 내부 메모리에서 직접 디스플레이 데이터를 읽으며, 구성된 시작 주소를 사용하여 픽셀 데이터를 찾습니다.
구성
픽셀 스크린에는 여러 설정 가능한 속성이 있습니다:
- 시작 주소: 디스플레이 데이터가 시작되는 메모리 주소 (기본값: 0xE0)
- 전경색: 활성(켜짐) 픽셀의 색상
- 배경색: 비활성(꺼짐) 픽셀의 색상
- 픽셀 스케일: 디스플레이에서 각 픽셀의 크기
메모리 매핑
16x16 픽셀 그리드는 다음과 같이 메모리에 매핑됩니다:
- 메모리의 각 바이트는 8개의 수평 픽셀을 나타냄
- 전체 디스플레이에 32개의 연속 바이트(256비트)가 사용됨
- 각 바이트 내에서 비트는 MSB에서 LSB로 매핑됨
예를 들어, 시작 주소가 0xE0인 경우:
| 주소 | 바이트 | 설명 |
|---|---|---|
| 0xE0 | [76543210] | 행 0의 처음 8 픽셀 |
| 0xE1 | [76543210] | 행 0의 마지막 8 픽셀 |
| 0xE2 | [76543210] | 행 1의 처음 8 픽셀 |
| 0xE3 | [76543210] | 행 1의 마지막 8 픽셀 |
| ... | ... | ... |
| 0xFE | [76543210] | 행 15의 처음 8 픽셀 |
| 0xFF | [76543210] | 행 15의 마지막 8 픽셀 |
참고: 각 바이트 내의 비트 7-0은 MSB에서 LSB로 매핑된 8개의 수평 픽셀을 나타냅니다
사용법
픽셀 스크린 부품을 사용하려면:
RAM 부품과 함께 회로에 부품을 추가합니다
픽셀 스크린은 연결된 RAM 부품의 메모리에서 자동으로 읽습니다 — 핀 배선이 필요하지 않습니다
부품의 속성에서 시작 주소를 설정하여 RAM에서 디스플레이 데이터가 시작되는 위치를 지정합니다
메모리 주소에 비트 패턴을 써서 디스플레이를 만듭니다:
- 1을 쓰면 픽셀이 켜짐
- 0을 쓰면 픽셀이 꺼짐
RAM 내용이 변경되면 디스플레이가 자동으로 업데이트됩니다
예제 응용
간단한 패턴 표시
// 체커보드 패턴 저장
// 첫 번째 행 (교대 픽셀)
RAM[0xE0] = 0b10101010;
RAM[0xE1] = 0b10101010;
// 두 번째 행 (반전 패턴)
RAM[0xE2] = 0b01010101;
RAM[0xE3] = 0b01010101;
// 나머지 행에 대해 패턴 반복...
16x16 스프라이트 표시
// 간단한 얼굴 표시
// 눈 (행 4-5)
RAM[0xE8] = 0b00100100;
RAM[0xE9] = 0b00000000;
RAM[0xEA] = 0b00100100;
RAM[0xEB] = 0b00000000;
// 입 (행 10)
RAM[0xF4] = 0b00011000;
RAM[0xF5] = 0b00100100;
애니메이션 만들기
애니메이션을 만들려면:
- 각 프레임에 대해 RAM 내용을 업데이트합니다
- 클럭 분주기를 사용하여 새로고침 속도를 제어합니다
- 깜빡임을 방지하기 위해 RAM 쓰기를 디스플레이의 새로고침 사이클과 동기화합니다
팁과 트릭
- 깜빡임을 방지하기 위해 별도의 RAM 영역을 "백 버퍼"로 사용하여 다음 프레임을 준비한 다음 디스플레이 영역에 복사하세요
- 적절한 비트와 바이트를 계산하여 개별 픽셀을 설정하는 그리기 루틴을 만드세요
- 색상 효과를 위해 부품의 속성을 통해 전경색과 배경색을 수정할 수 있습니다
- 카운터나 제어 유닛과 같은 다른 부품과 결합하여 자율 디스플레이를 만드세요
- 부드러운 애니메이션을 위해 회로가 일정한 속도로 디스플레이를 업데이트하도록 하세요