비트뱅잉

Bit banging

컴퓨터 공학과 전기 공학에서 비트 뱅킹은 전송된 신호나 수신된 신호를 처리하기 위해 전용 하드웨어의 대체물로 소프트웨어를 사용하는 모든 데이터 전송 방법의 속어다.소프트웨어는 GPIO 상태(예: 마이크로컨트롤러의 핀)를 직접 설정 및 샘플링하며, 신호의 모든 타이밍 요건과 프로토콜 시퀀싱의 충족을 담당한다.비트 뱅킹과 대조적으로 전용 하드웨어(예: UART, SPI 인터페이스)는 이러한 요구사항을 충족하며, 필요한 경우 소프트웨어 타이밍 요구사항을 완화할 수 있는 데이터 버퍼(data buffer)를 제공한다.비트 뱅킹은 매우 낮은 비용으로 구현될 수 있으며 임베디드 시스템에서 일반적으로 사용된다.[1]

비트 뱅킹은 하드웨어 변경을 최소화하거나 전혀 하지 않고 기기가 다른 프로토콜을 구현할 수 있도록 한다.어떤 경우에, 비트 뱅킹은 표준 통신 프로토콜이 만들어졌을 때 보다 최근의 하드웨어가 훨씬 더 빨리 작동하기 때문에 더 새롭고 더 빠른 프로세서에 의해 실현 가능하다.

C 코드 예제

다음의 C 언어 코드 예는 SPI 버스로 데이터 바이트를 전송한다.

// 바이트를 직렬로 전송, MSB 먼저 공허하게 하다 send_8bit_bit_data(서명이 없는 마를 뜨다 자료) {    인트로 i;     // 디바이스 선택(활성 로우)    output_low(SD_CS);     // 비트 7을 전송한다.0    을 위해 (i = 0; i < 8; i++)    {        // 맨 왼쪽 비트 고려        // 비트가 1, 비트가 0이면 로우 라인 설정        만일 (자료 & 0x80)            output_high(SD_DI);        다른            output_low(SD_DI);         // 클럭 상태를 펄스하여 비트 값을 읽어야 함을 나타냄        output_low(SD_CLK);        지연시키다();        output_high(SD_CLK);         // 바이트를 왼쪽으로 이동하여 다음 비트가 가장 왼쪽이 되도록 함        자료 <<= 1;    }     // 장치 선택 취소    output_high(SD_CS); } 

고려 사항.

비트 뱅킹을 배치할 것인가 말 것인가 하는 문제는 한편으로는 로드, 성능, 신뢰성 사이의 절충과 다른 한편으로는 하드웨어 대안의 가용성이다.소프트웨어 에뮬레이션 프로세스는 전용 하드웨어를 지원하는 것보다 더 많은 처리 능력을 소비한다.마이크로컨트롤러는 핀으로 샘플을 송수신하는 데 많은 시간을 할애하며 다른 작업을 희생한다.생성된 신호는 일반적으로 지터 또는 글리치가 더 많으며, 특히 프로세서가 통신 중에 다른 작업을 실행하는 경우 더욱 그러하다.단, 비트 뱅킹 소프트웨어가 신호에 의해 인터럽트 구동되는 경우, 특히 RTS, CTS 또는 DCD와 같은 제어 신호를 사용할 수 있는 경우 이는 중요하지 않을 수 있다.소프트웨어의 구현은 특정 하드웨어 지원을 이용할 수 없거나 더 비싼 마이크로컨트롤러를 필요로 할 때 해결책이 될 수 있다.

참고 항목

참조

  1. ^ Predko, Michael (2000). Programming and customizing PICmicro microcontrollers (2nd ed.). McGraw-Hill Professional. pp. 10–12. ISBN 978-0-07-136172-9.

외부 링크

비동기 시리얼(RS-232)
I²C 버스
SPI 버스