FEMTORV32 / FEMTOSOC: 미니멀한 RISC-V CPU

(모든 구성이 IceStick에 들어갑니다 < 1280 LUT)
바로 가기:
- IceStick 튜토리얼
- IceBreaker 튜토리얼
- ULX3S 튜토리얼
- ECP5 평가 보드 튜토리얼
- FOMU 튜토리얼
- ARTY 튜토리얼
- LiteX 튜토리얼
- Ice4Pi 튜토리얼
- 새 보드 추가하기
- 더 많은 문서...
외부 링크:
특징
- quark(RV32I), electron(RV32IM), intermissum(RV32IM + irq), gracilis(RV32IMC + irq), petitbateau(RV32IMFC + irq) 등 여러 변형으로 제공됩니다.
- 프리웨어 도구(Yosys와 nextpnr)로 합성합니다.
- 주요 목표: 교육용으로 사용할 수 있고, 읽기 쉬우며, ICEstick에 들어가고, 재미있는 데모(그래픽)를 제공하며, 학생 한 명당 약 40달러로 장비를 갖출 수 있도록 하는 것입니다.
- 면책 조항: 저는 FPGA 전문가가 아니므로, 의견이나 조언을 자유롭게 남겨 주십시오!
- ICEStick과 ULX3S에서 80MHz로 동작합니다.
- 6kb RAM(ICEStick) 또는 256kb(ULX3S)
- 펌웨어는 gnu RISC-V 도구 모음(스크립트 포함)을 사용해 C 또는 어셈블리로 생성할 수 있습니다.
- UART, 내장 LED, OLed 디스플레이, LED 매트릭스를 위한 SOC 메모리 맵 방식 장치 드라이버와 하드웨어를 제공합니다.
- femtolibC, femtoGL(모두 6kb 안에 들어갑니다).
- @ultraembedded의 fat_io_lib(SD 카드의 FAT 파일 시스템 접근)을 포함합니다.
- "femtOS" 가상 출력 지원: printf()를 UART, OLED 화면(또는 LED 매트릭스, 작업 중)으로 리디렉션합니다.
- OLED 디스플레이용 그래픽을 포함하여 다양한 RISC-V 어셈블리 및 C 데모 프로그램을 제공합니다.
- 이제 LiteX에서 바로 사용할 수 있습니다. 튜토리얼을 참조하십시오.
LUT 수(FemtoRV32 + FemtoSOC)
ICE40/IceStick 타깃에서 측정한 통계입니다.
| 매개변수 | value1 | value2 | value3 |
|---|---|---|---|
| NRV_TWO_STAGE_SHIFTER | ON | OFF | OFF |
| NRV_NEGATIVE_RESET | OFF | OFF | OFF |
| NRV_IO_LEDS | ON | ON | ON |
| NRV_IO_UART | ON | ON | OFF |
| NRV_IO_SSD1351 | OFF | OFF | OFF |
| NRV_IO_MAX7219 | OFF | OFF | OFF |
| NRV_IO_SPI_FLASH | OFF | OFF | OFF |
| NRV_FREQ | 50 | 50 | 50 |
| NRV_RAM | 6144 | 6144 | 1024 |
| NRV_COUNTERS | OFF | OFF | OFF |
| NRV_COUNTERS_64 | OFF | OFF | OFF |
| NRV_RV32M | OFF | OFF | OFF |
| LUT 수 | 1180 | 1140 | 980 |
첫 번째 열은 IceStick의 표준 구성입니다(UART와 LED 구성, 6Kb RAM, 2단 시프터). 이는 Dhrystones 테스트의 두 번째 줄에 해당합니다. 두 번째 열은 2단 시프터의 영향을 측정한 것입니다(LUT 40개를 차지합니다). 세 번째 열은 주변장치 없이(LED만 사용) RAM을 최소로 둔 최소 구성으로, 프로세서만으로 LUT를 얼마나 사용하는지 가늠하기 위한 것입니다(1000개 미만이니 업적 달성입니다!).
FemtoRV32는 복잡도(소스가 Verilog 1000줄 안에 들어가며, 제 생각에는 읽기도 쉽습니다), LUT 수(여기서도 1000이 마법의 숫자입니다), 성능(약 1000 Dhrystones/s/MHz이며, 대부분의 명령어는 2~3사이클이 걸립니다) 사이에서 절충합니다.
FemtoRV32 라이선스
FemtoRV는 3조항 BSD 라이선스를 따릅니다:
Copyright (c) 2020-2021, Bruno Levy
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the <copyright holder> nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT
HOLDER> BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
다른 RISC-V 코어 참고 자료
- 기준이 되는 코어: Claire Wolf의 picorv32입니다(여기에서 많은 아이디어를 빌려 왔습니다).
- 가장 작은 RISC-V: SERV입니다. 1000 LUT에 인스턴스를 5개(!)나 넣을 수 있습니다.
- 더 빠른 코어, Linux를 구동할 수 있는 코어: biriscv, VexRiscv
- FemtoRV32의 가장 친한 친구: ICE-V입니다. Silice(더 고수준의 HDL)로 작성되었습니다.
- DarkRiscv
- Domipheus RPU
- LamndaConcept Minerva
- Glacial
- neorv32
- j-core
- Syntacore scr1