tangySOC: PicoRV 코어를 기반으로 한 Tang Nano 20K용 RiscV SOC
요약
tangySOC는 PicoRV 코어를 기반으로 Tang Nano 20K용 RiscV System on Chip(SOC)를 구현한 프로젝트입니다. 이 SOC는 VGA/DVI 비디오 출력, 3D Gouraud 하드웨어 가속기, I2S 오디오 컨트롤러 등 다양한 기능을 통합 제공합니다. 사용자는 외부 부품 없이도 작동 가능하며, 소프트웨어 예제 실행을 위해 SD 카드와 USB HID 호스트 기능 등을 활용할 수 있습니다.
핵심 포인트
- PicoRV 코어를 기반으로 RiscV SOC를 구현하여 Tang Nano 20K에 적용했습니다.
- 3D Gouraud 하드웨어 가속기, VGA/DVI 비디오 출력 등 다양한 미디어 기능을 포함합니다.
- 소프트웨어 실행을 위해 SD 카드와 USB HID 호스트 컨트롤러 사용이 필수적입니다.
- 외부 PLL 구성 및 외부 UART 연결 방법을 상세히 안내하고 있습니다.
tangySOC
PicoRV 코어를 기반으로 한 Tang Nano 20K용 RiscV SOC
포함된 기능:
- PicoRV RiscV 코어 (https://github.com/YosysHQ/picorv32)
- VGA 프레임버퍼 (565 색상 그래픽 모드 + 텍스트 오버레이), DVI 비디오 출력
- 알파 채널 및 비트맵 스케일링을 갖춘 2D 블리터
- 텍스처 및 라이트 지원을 갖춘 3D Gouraud 하드웨어 가속기
- FIFO와 DMA를 갖춘 I2S 오디오 컨트롤러
- 메모리 매핑 부동 소수점 ALU (선택 사항)
- 프로그램 업로드를 위한 직렬 인터페이스
- SPI 인터페이스 - SD 카드 지원
- USB HID 호스트 컨트롤러 (https://github.com/nand2mario/usb_hid_host)
- DMA가 있는 GW2AR 내부 SDRAM 컨트롤러
- 소프트웨어 예제는 src/software 디렉토리에 위치합니다.
외부 부품은 필요하지 않지만, USB 키보드나 외부 UART(더 빠름)를 연결하려면 필요합니다. 일반 Tang Nano 20K 보드에서 작동합니다.
대부분의 예제는 SD 카드에 추가 파일이 필요합니다. SD 카드를 포맷하고 각 예제의 'SD' 디렉토리를 SD 카드 루트 디렉토리로 복사하십시오.
코어는 두 개의 필요한 클럭을 생성하기 위해 Tang Nano 외부 PLL에 의존합니다:
--Ext pll clock 25MHz
extPllClock25: in std_logic; // pin 10, aux pll output 0
--Ext pll clock 12MHz
extPllClock12: in std_logic; // pin 11, aux pll output 1
외부 PLL 구성 방법은 Tang Nano 20K 위키 문서를 읽어주십시오.
소프트웨어 실행:
코어를 시작하면 부트로더가 제어권을 가져갑니다. 환영 메시지를 표시하고 UART를 통해 코드가 업로드되기를 기다립니다.
이를 수행하려면 소프트웨어 예제 디렉토리에서 'make send'를 실행하기만 하면 됩니다.
참고: makefile은 유효한 COM 포트 번호로 업데이트되어야 합니다.
소프트웨어를 업로드하는 데는 프로그래머 마이크로컨트롤러에 내장된 Tang Nano 20K 내부 USB->UART 컨버터를 사용할 수 있지만, 매우 느리다고 생각합니다. 업로드 속도를 높이려면 다음 핀에 외부 USB->UART 컨버터를 연결해야 합니다:
FPGA pin 41 (extUartTX)을 컨버터의 RXD 핀에 연결
FPGA pin 42 (extUartRX)를 컨버터의 TXD 핀에 연결
보드 GND를 컨버터 GND에 연결
또한 "tangyRiscVSOCTop.vhd" 파일 상단의 일반 정의도 확인해 주세요.
useTangUART: boolean := true; - Tang Nano 20K 내부 uart를 사용함을 의미합니다.
useTangUART: boolean := false; - 프로그램 업로드를 위해 외부 uart를 선택합니다 (변환기 필요).
두 번째 단계 부트로더:
sd카드에서 예제 프로그램을 실행할 수 있게 합니다.
"secondStageBootloader' 컴파일 후, 0x700000 주소에 .bin 파일을 fpga 설정 플래시 메모리에 구워 넣으세요. 'SD' 디렉토리의 'apps'와 'sys' 디렉토리를 sd카드에 복사합니다.
Tang Nano 20K 보드의 전원을 켠 후, 아무 키나 누르면 (usb 키보드 필요 :) ) 두 번째 단계 부트로더가 실행됩니다. 화살표 키로 예제를 선택하고 엔터를 눌러 실행할 수 있습니다.
USB HID 호스트 기능:
연결 방법:
FPGA 핀 27을 USB D+에 연결합니다.
FPGA 핀 28을 USB D-에 연결합니다.
보드 GND를 USB GND에 연결합니다.
보드 5V를 USB 5V에 연결합니다.
USB D+ 및 USB D- 라인은 적절한 임피던스 매칭을 보장하기 위해 15K 저항을 통해 GND로 풀다운 되어야 합니다.
자세한 내용은 nand2mario 설명서 ( https://github.com/nand2mario/usb_hid_host )와 Gowin USB softPHY IP 문서 ( https://www.gowinsemi.com/upload/database_doc/1328/document/6073e6c99b401.pdf )를 확인해 주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub ML Hardware의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기