Deprecated: Function get_magic_quotes_gpc() is deprecated in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 99

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 619

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1169

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176
8000 GitHub - danodus/xgsoc: FPGA-based system-on-chip
Nothing Special   »   [go: up one dir, main page]

Skip to content

danodus/xgsoc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

XGSoC

FPGA based system on chip.

The documentation is available here: https://danodus.github.io/xgsoc/

Features

  • RISC-V (RV32IMFC)
  • UART (1000000-N-8-1)
  • SDRAM (32MiB shared between CPU and video)
  • Set associative cache (4-way with LRU replacement policy)
  • QVGA (60 Hz) or VGA (60 Hz) HDMI video output with framebuffer (RGB565)
  • 480p (60 Hz), 720p (60 Hz) or 1080p (30 Hz) video modes (experimental)
  • Graphite 2D/3D graphics accelerator (textured triangles)
  • PS/2 Keyboard
  • PS/2 Mouse
  • USB host for keyboard and mouse (experimental)
  • SD Card with hardware SPI

Requirements

(*) Extract and add the bin directory to the path.

Note: Tested with oss-cad-suite-darwin-arm64-20240810 and xpack-riscv-none-elf-gcc-14.2.0-1-darwin-arm64.

Getting Started

Clone and Update

Clone

git clone --recurse-submodules https://github.com/danodus/xgsoc.git
cd xgsoc

If the repository has been cloned without the --recurse-submodules option, do the following:

git submodule update --init

Update

git pull
git submodule update --recursive

Getting Started on ULX3S

cd rtl/ulx3s
make clean;make CONF=<conf> VIDEO=<video mode> prog # for example, CONF=bvkm VIDEO=vga (see below)
cd ../../src/hello
make run SERIAL=<serial device>
picocom -b 1000000 <serial device>

Configurations

Identifier Description
b Base (UART, SD Card)
v Video
g Graphite
k PS/2 Keyboard
m PS/2 Mouse
u USB Host (*)

(*) Experimental (USB host requires a CPU clock of 48 MHz instead of the default 25 MHz)

By default, the configuration is bvgkm.

The following video modes are available:

Video Mode Description
qvga 320x240 60Hz
vga 640x480 60Hz
480p 848x480 60Hz (*)
720p 1280x720 60Hz (*)
1080p 1920x1080 30Hz (*)

(*) Experimental

By default, the video mode is vga.

System Simulation

cd src/test_video
make
cd ../../rtl/sim
make run PROGRAM=../../src/test_video/program.hex

Programs

To upload and run the program to the FPGA platform:

cd src/<program name>
make run SERIAL=<serial device>
picocom -b 1000000 <serial device>

The following programs are available:

Name Description Min. Config.
test_mem Test memory b
test_fs Test filesystem (SD card content erased) b
bench_dhrystone Benchmark Dhrystone b
bench_coremark Benchmark Coremark b
write_sd_image Write bootable SD card image (see section below) b
hello Hello world example 76E6 b
factorial Factorial example b
sinus Sinus example b
forth Forth language b
lua Lua language b
test_ps2_kbd Test PS/2 keyboard bk
test_ps2_mouse Test PS/2 mouse bm
test_usb Test USB host bu
test_video Test video display bv
test_graphite Test graphite subsystem bvg

Write Bootable Image

  • Insert the SD card
  • Open a serial terminal
  • Start the image writer utility:
cd src/write_sd_image
make run SERIAL=<serial device>
  • Send the data to write:
cd ../<program name>
make write SERIAL=<serial device>

Press a key when completed. The SD card image will automatically be read and executed unless a key is sent via UART during the first seconds of the boot process.

Acknowledgements

About

FPGA-based system-on-chip

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0