# Raspberry Pi Pico가 100 Mbit/s 이더넷을 소프트웨어로 구현

> Clean Markdown view of GeekNews topic #24057. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=24057](https://news.hada.io/topic?id=24057)
- GeekNews Markdown: [https://news.hada.io/topic/24057.md](https://news.hada.io/topic/24057.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-11-01T02:42:35+09:00
- Updated: 2025-11-01T02:42:35+09:00
- Original source: [elektormagazine.com](https://www.elektormagazine.com/news/rp2350-bit-bangs-100-mbit-ethernet)
- Points: 3
- Comments: 1

## Topic Body

- **Raspberry Pi Pico**가 전용 하드웨어 없이 **100 Mbit/s 이더넷 송신**을 소프트웨어로 구현한 사례  
- 개발자 **Steve Markgraf**가 **PIO와 DMA**를 이용해 **MLT-3 인코딩**, **4B5B 라인 코딩**, **스크램블링**을 수행  
- 이 구현은 **125 MHz 심볼 속도**로 동작하며, **UDP를 통해 약 11MB/s 전송**을 실현  
- 예제에는 **ADC 스트리머**, **카운터**, **PCM1802 기반 오디오 데모**가 포함되어 있으며, **RP2040과 RP2350** 모두 지원  
- 저가 마이크로컨트롤러로 **고속 데이터 스트리밍과 계측 응용 가능성**을 보여주는 기술적 진전  
  
---  
  
### RP2040 및 RP2350에서의 100 Mbit/s 비트뱅 이더넷 구현  
- **Steve Markgraf**가 **Pico-100BASE-TX** 프로젝트를 통해 **100 Mbit/s Fast Ethernet 송신기**를 완전한 소프트웨어 방식으로 구현  
  - **RP2040** 및 **RP2350(Pico 2)** 모두 지원  
  - **PIO(Programmable I/O)** 와 **DMA**를 사용하여 **MLT-3 인코딩**, **4B5B 라인 코딩**, **스크램블링**을 처리  
- 결과적으로 **UDP를 통한 약 11MB/s 스트리밍**이 가능하며, **실시간 오디오 및 ADC 데이터 전송**이 시연됨  
- 이 구현은 **송신 전용(proof of concept)** 형태이며, **PoE 장비와 직접 연결 금지**  
  - **펄스 트랜스포머** 또는 **이더넷 스위치**를 통한 절연 권장  
  
### 프로젝트 배경  
- 3년 전 **kingyoPiyo**의 **Pico-10BASE-T** 프로젝트가 **10 Mbit/s 이더넷**을 단 몇 개의 저항으로 구현해 주목받음  
- 2023년에는 **비트뱅 USB** 구현으로 **RP2040의 PIO 성능 한계**를 확장  
- 이번 프로젝트는 그 연장선으로, **100 Mbit/s 속도 달성**을 통해 **소프트웨어 정의 하드웨어의 가능성**을 탐색  
  
### GitHub 저장소 및 예제  
- GitHub 저장소: [Pico-100BASE-TX](https://github.com/steve-m/Pico-100BASE-TX)  
- 포함된 예제:  
  - **카운터**  
  - **내장 ADC 스트리머**  
  - **PCM1802(75 kHz) 오디오 데모**  
- **표준 Pico SDK**로 빌드 가능하며, **RP2040과 RP2350** 모두 호환  
  
### 기술적 의의  
- **전용 PHY 칩 없이** 마이크로컨트롤러만으로 **100 Mbit/s 이더넷 송신**을 구현한 점이 핵심  
- **저비용 고속 데이터 수집 및 스트리밍** 장치 개발 가능성 제시  
- **소프트웨어 정의 하드웨어(Software-defined hardware)** 접근의 확장 가능성 제기

## Comments



### Comment 45721

- Author: neo
- Created: 2025-11-01T02:42:35+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=45754439) 
- 이건 전형적인 **컴퓨팅의 순환 구조** 이야기임  
  처음엔 CPU에서 처리하고, 그다음엔 버스 외부의 전용 카드로 옮기고, 그 카드가 느리면 다시 카드 안에 CPU를 넣고, 결국엔 CPU 내부에 특수 로직을 넣어 버스 간 통신을 최적화하게 됨  
  10년쯤 뒤엔 RPi 코어를 축소해 칩렛 안에 넣고, **테라비트 네트워크 드라이버**를 범용 CPU 모델로 프로그래밍하는 시대가 올 것 같음
  - 맞음, 이건 ‘**Wheel of Reincarnation**’ 개념임. 다만 그걸 처음 정리한 건 Bell이 아니라 Sutherland와 Myer였고, 1968년에 발표된 논문임  
    [Design of Display Processors (1968)](https://www2.cs.arizona.edu/~cscheid/reading/myer-sutherland-design-of-display-processors.pdf)
  - 솔직히 말하면, 저 단어들 중 절반만 이해했음  

- 요즘 MCU는 진짜 대단함. 몇 달러면 **강력한 마이크로컨트롤러**를 살 수 있음  
  예전엔 TCP Offload Engine(TOE) 같은 전용 카드가 필요했는데, 이제는 그 기능 대부분을 작은 칩이 해냄
  - 이제는 몇 센트짜리 MCU도 가능함. 다만 **대만 전쟁**이나 **짝퉁 부품** 문제로 이런 시대가 오래가진 않을 수도 있음  
  - 하드웨어에 익숙하지 않은 사람에게 추천할 만한 **입문 프로젝트**가 있을까 궁금함. 뭔가 만들어보고 싶은데 아이디어가 부족함  
  - 여전히 놀라움. 예전엔 PIC 수준의 일만 하던 칩이 이제는 **WiFi 내장 MCU**로 몇 달러면 가능함. 특히 Pico의 IO 코프로세싱은 정말 강력함  
  - 요즘 **NIC**도 비슷한 역할을 많이 하지 않음?  

- PDM 마이크를 PIO로 직접 읽는 프로젝트가 정말 멋짐  
  [microphone-library-for-pico](https://github.com/ArmDeveloperEcosystem/microphone-library-for-pico)  
  이건 ‘bit-banging’이라기보단 PIO를 이용한 고속 제어에 가까움
  - 그래도 넓은 의미로는 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](https://github.com/steve-m/hsdaoh) 프로젝트로 유명하고, Pico2를 송신기로 써서 **175MB/s**까지 달성했음  
  [hsdaoh-rp2350](https://github.com/steve-m/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 신호를 디지털화하는 부분인데, 정확히 어떤 신호인지는 나도 모름
