ULX3S용 LiteX 사용법:

ULX3S는 FPGA 설계를 처음 배우기에 좋은 보드입니다. 넉넉한 ECP5 FPGA(변형에 따라 12K~85K 로직 엘리먼트), 프로그램과 데이터를 저장하는 데 사용할 수 있는 SD 카드 커넥터, 비디오 커넥터, 그리고 온보드 SDRAM(옵션에 따라 16MBytes~32MBytes)을 갖추고 있습니다. 또한 Wi-Fi를 지원하는 온보드 마이크로컨트롤러(ESP32)도 있어 SD 카드에 원격으로 접근하는 데 사용할 수 있습니다.
ULX3S는 LiteX에서 직접 지원합니다. 원래의 LiteX 설계와 비교하여 몇 가지 작은 개선을 했습니다(boards/radiona_ulx3s_ex.py 참고). 개선 사항은 다음과 같습니다:
- ESP32를 켜고 끄며 SD 카드를 ESP32 또는 FPGA로 연결해 주는 회로입니다. 이를 통해 FPGA를 계속 사용하는 동안에도 Wi-Fi로 SD 카드에 파일을 업로드할 수 있습니다. (참고: 현재 비활성화되어 있으며, 새 LiteX에 맞게 수정해야 합니다)
- 비디오 타이밍 문제를 수정했습니다
- 일부 그래픽 함수(clear, fillrect, fillpoly)를 가속하기 위해 간단한 블리터를 추가했습니다
- 참고: SD 카드에 접근하려면 LiteX 파일 중 하나에 간단한 수정을 해야 할 수도 있습니다.
ULX3S용 비트스트림을 생성하려면 먼저 다음을 수행해야 합니다:
- FPGA 변형을 확인하십시오: LFE5U-12F, LFE5U-25F, LFE5U-45F, LFE5U-85F 중 하나입니다
- SDRAM 칩을 확인하십시오(이미지 참고): MT48LC16M16, AS4C32M16, AS4C16M16 중 하나입니다
참고 1: IS42S16160G SDRAM 칩이 장착된 ULX3S 변형도 있습니다. 이
경우에는 --sdram-module MT48LC16M16을
사용하십시오(@darkstar007님께 감사드립니다).
참고 2: AS4C32M16(64MB)에서 프레임버퍼를 사용하면 SDRAM 리프레시 타이밍을 충족하지 못합니다. 대신 AS4C32M16(32MB)인 것처럼 지정하십시오.
이제 다음을 수행할 수 있습니다:
- 보드를 연결하십시오
- 설계를 합성하고 로드하십시오(다음 명령에서 FPGA 변형과 SDRAM 칩을 자신의 것으로 바꾸십시오):
$ cd learn-fpga/LiteX
$ python3 -m boards.radiona_ulx3s_ex --device LFE5U-85F --sdram-module AS4C16M16 --cpu-type femtorv --cpu-variant petitbateau --build --load --ecppack-compress
- 선택 사항인 소형 OLED 화면을 설치했다면 명령줄에
--with-oled플래그를 추가하십시오.
이 명령은 의존성을 다운로드합니다(FemtoRV의 최신 버전도 github
저장소에서 직접 받아옵니다. 훌륭합니다!). 또한 BIOS를 컴파일하고
게이트웨어를 합성한 다음 장치로 전송합니다. 모든 것이 잘 되었다면
LED에서 알록달록한 승리의 '전격 Z 작전(knight driver)' 블링키를 보게 될
것입니다. 이제 litex_term /dev/ttyUSB0으로 SoC에 접속할 수
있습니다.
이제 SoC용 소프트웨어를 작성하는 방법을 알아봅시다.
보드의 전원을 끈 후에도 비트스트림이 유지되게 하려면 다음을 사용하십시오:
fujprog -j FLASH build/radiona_ulx3s/gateware/radiona_ulx3s.bit