UART에는 Baud Rate의 개념이 있고 Baud Rate를 알기 위해서는 bps개념을 알아야 한다.
- bps(bit per second)는 "1초에 전송할 수 있는 비트의 수"이고,
- cps(characters per second)는 "1초에 전송할 수 있는 바이트의 수"이다.
8bit=1byte이므로 속도로 환산하면 8bps=1cps로 나타낼 수 있다.
1 bps = 1/8 cps = 0.125 cps
1초에 1bit를 전송했고, 1초에 0.125byte를 전송했다는 의미
8 bps = 1 cps
1초에 8bit를 전송했고, 1초에 1byte를 전송했다는 의미
예를 들어, 150Mbps로 통신하고 있다고 해보자.
cps로 환산해보면 150Mbps/8bit = 18.75Mcps가 될 것이고 이는 18.75MByte를 의미한다.
전송 속도는 1/150Mbps = ??가 된다.
- baud rate는 "1초에 얼마나 많은 심볼을 전송하는 가"이다.
**심볼(symbol) = 의미 있는 데이터 묶음
초창기에는Buad Rate는 1개의 펄스당 1개의 비트만 전송되는 목적으로 사용됐다.
하지만 기술이 발전하면서 bps의 속도가 빨라지게 되면서, 1개의 펄스당 n개의 비트를 전송 할 수 있게 됐다.
일반적인 통신은 1 Buad Rate에 1bps를 사용하는데,
예를 들어 115200 buad rate라면 115200 bps로 통신한다는 뜻이다.
(심볼이 아니라 한 개의 비트이므로 buad rate와 bps의 의미는 같아진다.)
예외적으로 1 buad rate에 2bps를 사용하는 곳도 있는데, 115200 buad rate라면 230,400bit가 전송된다.
아마도 우리가 흔히 사용하게 될 방식이 아닐까 싶다.
ASCII코드는 1byte(=8bit)씩 표현된다. 115200bps로 전송하게 될 경우,
115200bps/8bit = 14400baud rate가 된다. 즉 1초에 14400의 bit를 전송하게 된다.
하지만 여기서 주의해야 할 점이 있다.
UART전송의 경우 Start bit, Stop bit, Parity bit를 포함하여 데이터를 전송하기 때문에 계산이 조금 까다로워 진다.
예를 들어 Start bit(1bit) + Data bit(5~8bit) + Parity bit(1bit) + Stop bit(1bit)로 표현될 수 있으며 총 8~11bit를 전송하게 된다.
즉, 전송 데이터 비트에 따라 baud rate가 변할 수 있다는 뜻이다.
[EX]
Stop bit(1bit) + Data bit(8bit) + Partiy bit(0bit) + Stop bit(1bit) = 10bit이고 115200bps(1초에 115200비트 전송)일 경우, 몇 baud rate인가?
baud rate = 115200 / 10 = 11520
(10bit라는 심볼이므로 bps를 10bit로 나눠야한다.)
bit로 계산한다면 "baud rate와 bps는 같다"라고 말 할 수 있지만, ASCII코드로 계산한다면 "baud rate와 bps는 다르다"라고 말 할 수 있다.
참고자료 :
https://m.blog.naver.com/gmqgufrn/220862079486
https://openstory.tistory.com/66