본문 바로가기

아두이노/아두이노 공부하기!

10. [Tutorial] Baudrate와 bps의 정의

UART에 대한 공부를 진행하기에 앞서 단위 환산에 대해서 공부해보자.


보통 아두이노를 사용하다보면 비트 단위 환산에 대해 알고 있어야 정확한 코딩이 가능하다.


1 Byte = 8 bit 인 비트단위 환산에 대한 내용은 아래 블로그를 참조바란다.

비트단위 환산 이론: http://serpiko.tistory.com/497


그리고 UART를 사용하면 Baud rate의 개념과 bps의 개념이 나오기 때문에 이를 이해하고 넘어가는 것이 좋다.


이는 아두이노 뿐만 아니라 MCU의 설명에도 동일하다.


----------------------------------------------------------------------------------------------------------------------

bps는 (bit per second)의 약자로 "1초에 전송할 수 있는 비트의 수" 이다.

CPS (Characters Per Second)는 "1초에 전송할 수 있는 바이트의 수" 이다.


즉, 이 2개를 이용해서 전송속도를 알 수 있다.


8 bps 라는 말은 1 cps 를 의미한다. (즉, 8 bit = 1Byte와 같은 의미)

그리고 전송속도는 " s=1/b " 로 표현된다.


그래서,

1 bps = 1/8 cps = 0.125 cps가 된다. 

 -> 이는 1/1 = 1 로 1 비트를 1초에 전송했다는 의미. 그리고 1초에 0.125 Byte를 전송했다는 의미.

8 bps = 1cps이다.

 -> 이는 1/8 = 0.125 로 1초에 8bps를 전송했다는 의미. 즉, 0.125초에 1bps를 전송했다는 의미.


예를 들어, 100Mbps로 통신하고 있다면, 이는 100Mbps/8 = 12.5Mcps가 될 것이고 이는 12.5MByte를 의미한다.

그리고 전송속도는 1/100Mbps = 10ns 이다.

즉, 1초에 12.5MB를 전송하기 위해 10ns당 1bit를 보냈다는 의미이다.


----------------------------------------------------------------------------------------------------------------------


Buad rate란 "1초에 변조 횟수 = 1 초당 얼마나 많은 데이터를 보내냐" 이다.

여기서의 데이터란 실제로 전송되는 데이터 비트를 의미한다. (1Byte의 데이터를 보내면 이는 8bit이다.)


buad rate를 설명하기 전에 buad rate와 bps의 관계에 대해서 설명하겠다.


맨 처음 buad rate와 bps는 밀접한 관계가 있다.

buad rate는 "초당 보내는 데이터 수(즉, 펄스 수)" bps는 "초당 보내는 비트 수" 

 

초창기 buad rate와 bps의 개념이 도입되었을 때, 이는 1개의 펄스당 1개의 비트만 전송하는 목적으로 제작되었다.

그런데, 이 후 기술의 발전을 거듭하여 bps의 속도가 더 빨라지게 되었다.

그래서 buad rate의 초 당 2개, 3개, 4개의 비트를 전송할 수 있게 되었다.


그래서 일반적인 통신은 1 buad rate에 1bps를 사용한다.

즉, 9600 buad rate라면 9600 bps로 통신해서 같은 의미로 사용된다.


하지만 어떠한 장비들은 1 buad rate와 2 bps를 원하는 곳이 있다. (1 pulse에 2bit 전송)

이때 계산 방법은 9600 buad rate라면 *2되어 19,200 bps가 전송된다. (9600*2 = 19200)


이를 반대로 보면 9600 bps의 경우 4800 baud rate라는 말이 된다. (9600/2 = 4800)


----------------------------------------------------------------------------------------------------------------------


그리고 UART 통신할 때 ASCII 코드를 사용하여 통신할 경우와 그냥 bit 단위로 사용할 때의 buad rate가 다르다.

위에서 설명한 것은 bit단위로 사용할 때의 buad rate이다,


ASCII 코드로 사용할 때의 buad rate는 "buad rate=bps/bit 수"의 계산법으로 사용된다.

즉, ASCII코드는 1 Byte씩 표현된다.(8 bit) 그래서 9600bps를 전송할 때, 9600/8bit = 1200이 나오게 된다.


여기서 주의할 것이 !! 만약 UART의 경우, 옵션에 따라 다르다 !!!

만약 UART전송의 경우 시작비트, 정지비트, 패리티 비트가 데이터 전송할 때 같이 포함되어 전송되므로 전송 옵션에 따라 계산하는 방식이 달라진다.

ex) 시작비트(1bit) + Data(5 ~ 8bit) + 패리티비트(0 or 1) + 정지비트(1bit)로 표현된다.

그래서 만약에 시작비트(1bit) + 데이터 비트(8bit) + 패리티비트(0bit) + 정지비트(1bit)일 경우 총 10bit가 된다 !

이러면 baudrate = bps/10 로 계산하면 Baudrate를 알 수 있다.


그래서 9600bps(1초에 9600비트 전송)를 전송하더라도 "1초에 전송하는 펄스의 수"인 buad rate는 1 Byte ASCII코드로 전송해야

하기 때문에 1200 Buad rate가 된다.


이 것이 buad rate와 bps의 관계이다.


ASCII를 기준으로 할지, bit를 기준으로 할지에 따라 Buad rate가 달라진다.


----------------------------------------------------------------------------------------------------------------------


참고 자료

비트 레이트(bps)와의 관계 - https://ko.wikipedia.org/wiki/%EB%B3%B4_(%ED%86%B5%EC%8B%A0_%EB%8B%A8%EC%9C%84)

buad rate & 데이터 통신 속도 개념 - http://olooi.tistory.com/entry/%EB%B3%B4%EC%98%A4-%EB%A0%88%EC%9D%B4%ED%8A%B8baud-rate-Data-Cummunication-speed

단위 환산에 대한 좀 더 정확한 이해 - http://serpiko.tistory.com/497 (인터넷 전송속도 부분)