aboutsummaryrefslogtreecommitdiff

RISCV de1_murax_franz

Der fabelhafte RISCV Softcore auf dem Terasic DE1 Board! Für Franz.

Murax Plattform mit RISCV Prozessor aus SpinalHDL

  • 50 MHz Taktfrequenz
  • UART mit 115200 Baud
  • GPIO an den Roten LEDs
  • Timer

siehe:

  • https://github.com/SpinalHDL/VexRiscv
  • https://spinalhdl.github.io/SpinalDoc-RTD/dev/index.html

VHDL aus SpinalHDL

cd VexRiscV
sbt "runMain vexriscv.demo.de1_murax_franz"
cp ./de1_murax_franz.vhd ../src/

VHDL Simulation des Prozessors

UART sendet 'A' und LEDs wechseln nach 1 Sekunde...

cd sim
cd de1_murax_franz
make sim

FPGA Synthese und Download

cd pnr
cd de1_murax_franz
make prog

Software Build mit gcc

Der Code liegt schon als fertiges Intel HEX im VexRiscV Projekt. SpinalHDL generiert dann aus dem Intel HEX Format den VHDL ROM Code. Man muss also nicht unbedingt den Code kompilieren. Wenn man kompiliert, dann muss das Intel HEX File aus dem VexRiscV Projekt überschrieben werden.

cd VexRiscvSocSoftware/projects/murax/demo
make
cp ./build/demo.hex ../../../../VexRiscv/src/main/ressource/hex/muraxDemo.hex

Dann nochmal VexRiscV bauen und nochmal FPGA Synthese. Der Code landet via VHDL im FPGA.

UART anschliessen an MAC

Die UART läuft mit 115200 Baud. Mit einem FTDI USB UART Adapter kann man die UART vom DE1 Board anschliessen. Es wird eine Nachricht gesendet und die Eingaben kommen zurück. Auf MacOS:

screen /dev/tty.usbserial-FTALDMJL 115200

Installation VexRiscV / SpinalHDL

see: https://github.com/SpinalHDL/VexRiscv#dependencies

SpinalHDL is a Scala application. Scala runs on the JAVA virtual machine.

sudo apt install openjdk-8-jdk

The SCALA build tool "sbt" will install all dependencies for the VexRiscV for example SpinalHDL locally. This is similar to pythons pip mechanism.

echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list
curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | sudo apt-key add
sudo apt update
sudo apt install sbt

Installation GCC Compiler

wget -O riscv.tar.gz  https://static.dev.sifive.com/dev-tools/freedom-tools/v2020.12/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz
tar -xvzf riscv.tar.gz
sudo mv riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14 /opt/riscv
export PATH="$PATH:/opt/riscv/bin"
cd VexRiscvSocSoftware/projects/murax/demo
make

Debug mit OpenOCD

Habe ich nicht ausprobiert, aber die JTAG Pins sind auf dem Expansionport 1 vom DE1 Board.

GPIO_1[1] - JTAG_TCK
GPIO_1[3] - JTAG_TMS
GPIO_1[5] - JTAG_TDI
GPIO_1[7] - JTAG_TDO