이건 전형적인 컴퓨팅의 순환 구조 이야기임
처음엔 CPU에서 처리하고, 그다음엔 버스 외부의 전용 카드로 옮기고, 그 카드가 느리면 다시 카드 안에 CPU를 넣고, 결국엔 CPU 내부에 특수 로직을 넣어 버스 간 통신을 최적화하게 됨
10년쯤 뒤엔 RPi 코어를 축소해 칩렛 안에 넣고, 테라비트 네트워크 드라이버를 범용 CPU 모델로 프로그래밍하는 시대가 올 것 같음
그래도 넓은 의미로는 bit-banging임. 단지 PIO가 그걸 더 빠르고 안정적으로 해주는 것뿐임
이건 송신(TX)만 다루는 것 같음. 수신(RX)은 훨씬 어려운 부분일 텐데?
맞음, TX 전용임. 글 중간에 명시되어 있음. 나도 처음엔 그걸 놓쳤음
이걸 기반으로 USB 이더넷 NIC를 만드는 것도 흥미로울 것 같음
특히 Nintendo Switch가 지원하는 기가비트 NIC를 흉내 내서, 협상 실패 시 100Mbps로 동작하게 만드는 식으로 응용 가능함
참고로, 초기 RPi (rev B) 는 SSH로 약 6MB/s 정도 속도를 냈음. 비교 기준으로 보면 흥미로움
Steve Markgraf의 작품은 정말 인상적임.
그는 High Speed Data Acquisition over HDMI 프로젝트로 유명하고, Pico2를 송신기로 써서 175MB/s까지 달성했음 hsdaoh-rp2350 버전도 있음
다만 bit-banging으로는 100Mbit이 한계일 듯함. 1Gbit은 125MHz 클럭을 쓰지만 full duplex라서 에코 캔슬링이 필요함.
다음 도전은 $1짜리 RTL8211 PHY를 이용해 RGMII PHY를 구현하는 것일 듯함
RGMII는 4비트 버스를 쓰기 때문에 초당 2.5억 번의 상태 전환이 필요함.
클럭은 125MHz지만 DDR 방식이라 PIO는 250MHz로 동작해야 함. 약간의 오버클럭으로도 가능할 듯함
멋진 프로젝트임. 고마움!
PIO 없이 이게 가능했을까?
Pico에서는 불가능함. PIO가 없으면 GPIO 핀을 3~4 CPU 클럭마다 바꾸는 건 현실적으로 어려움
PIO는 사실상 ‘최강의 주변장치’라서 bit-banging이라 부르긴 애매함.
100Mbit/s를 CPU만으로 처리하려면 약 500MHz급 MCU가 필요하고, 그땐 버스 특성이나 캐시 지연 같은 문제가 생김
SPI 같은 일반 프로토콜도 보통 10MHz 수준이라, 이건 비교 자체가 어려움
“Raspberry Pi Pico Bit-Bangs 100 Mbit/S Ethernet”이라니, Siemens 단위보단 Ohm이 더 좋겠음
화면에 GNU Radio가 떠 있어서 헷갈렸음. RPi는 전원, TX선 두 개, 그리고 세 번째 선이 있는데 그건 뭐임?
그건 이더넷으로 변환 중인 신호 입력선임. 내부 ADC로 WBFM IF 신호를 디지털화하는 부분인데, 정확히 어떤 신호인지는 나도 모름
Hacker News 의견
이건 전형적인 컴퓨팅의 순환 구조 이야기임
처음엔 CPU에서 처리하고, 그다음엔 버스 외부의 전용 카드로 옮기고, 그 카드가 느리면 다시 카드 안에 CPU를 넣고, 결국엔 CPU 내부에 특수 로직을 넣어 버스 간 통신을 최적화하게 됨
10년쯤 뒤엔 RPi 코어를 축소해 칩렛 안에 넣고, 테라비트 네트워크 드라이버를 범용 CPU 모델로 프로그래밍하는 시대가 올 것 같음
Design of Display Processors (1968)
요즘 MCU는 진짜 대단함. 몇 달러면 강력한 마이크로컨트롤러를 살 수 있음
예전엔 TCP Offload Engine(TOE) 같은 전용 카드가 필요했는데, 이제는 그 기능 대부분을 작은 칩이 해냄
PDM 마이크를 PIO로 직접 읽는 프로젝트가 정말 멋짐
microphone-library-for-pico
이건 ‘bit-banging’이라기보단 PIO를 이용한 고속 제어에 가까움
이건 송신(TX)만 다루는 것 같음. 수신(RX)은 훨씬 어려운 부분일 텐데?
이걸 기반으로 USB 이더넷 NIC를 만드는 것도 흥미로울 것 같음
특히 Nintendo Switch가 지원하는 기가비트 NIC를 흉내 내서, 협상 실패 시 100Mbps로 동작하게 만드는 식으로 응용 가능함
참고로, 초기 RPi (rev B) 는 SSH로 약 6MB/s 정도 속도를 냈음. 비교 기준으로 보면 흥미로움
Steve Markgraf의 작품은 정말 인상적임.
그는 High Speed Data Acquisition over HDMI 프로젝트로 유명하고, Pico2를 송신기로 써서 175MB/s까지 달성했음
hsdaoh-rp2350 버전도 있음
다만 bit-banging으로는 100Mbit이 한계일 듯함. 1Gbit은 125MHz 클럭을 쓰지만 full duplex라서 에코 캔슬링이 필요함.
다음 도전은 $1짜리 RTL8211 PHY를 이용해 RGMII PHY를 구현하는 것일 듯함
클럭은 125MHz지만 DDR 방식이라 PIO는 250MHz로 동작해야 함. 약간의 오버클럭으로도 가능할 듯함
PIO 없이 이게 가능했을까?
PIO는 사실상 ‘최강의 주변장치’라서 bit-banging이라 부르긴 애매함.
100Mbit/s를 CPU만으로 처리하려면 약 500MHz급 MCU가 필요하고, 그땐 버스 특성이나 캐시 지연 같은 문제가 생김
“Raspberry Pi Pico Bit-Bangs 100 Mbit/S Ethernet”이라니, Siemens 단위보단 Ohm이 더 좋겠음
화면에 GNU Radio가 떠 있어서 헷갈렸음. RPi는 전원, TX선 두 개, 그리고 세 번째 선이 있는데 그건 뭐임?