Gast
#6333788
Ich habe mich mal etwas in das PicoRV32 projekt von cliffordwolf reingelesen https://github.com/cliffordwolf/picorv32 und habe dazu parallel auch mal das picosoc projekt für den TinyFPGA-BX ausprobiert (hier zu finden): https://discourse.tinyfpga.com/t/riscv-example-project-on-tinyfpga-bx/451 Ich habe mir gestern mal die Toolchain aufgesetzt und nach ein paar Anpassungen das Projekt das original für den TinyFPGA gedacht war, zum laufen bekommen. Jetzt sind mir aber ein paar folgende Sachen nicht klar. Auf Clifford's Seite wird gezeigt, dass es drei Toolchains gibt: RV32I, RV32IC, RV32IM, RV32IMC Aktuell ist das TinyFPGA projekt auf Basis einen RV32I (also basic integer math) ohne multiplikation in HW. Da ich aber gerne viel Multiplikationen laufen lassen würde, denke ich macht die "M" Erweiterung hier Sinn für mich. Jetzt gibt es aber in der picorv32.v Datei einige Erweiterungen zu aktivieren / deaktivieren. Mir ist nicht klar aktuell, welche Erweiterungen in HW ich an oder ausschalten muss, um den Befehlssatz für eine bestimmte Toolchain zu treffen? Wäre nett, wenn mich hier mal jemand aufklärt. Danke. parameter [ 0:0] ENABLE_COUNTERS = 1, parameter [ 0:0] ENABLE_COUNTERS64 = 1, parameter [ 0:0] ENABLE_REGS_16_31 = 1, parameter [ 0:0] ENABLE_REGS_DUALPORT = 1, parameter [ 0:0] LATCHED_MEM_RDATA = 0, parameter [ 0:0] TWO_STAGE_SHIFT = 1, parameter [ 0:0] BARREL_SHIFTER = 0, parameter [ 0:0] TWO_CYCLE_COMPARE = 0, parameter [ 0:0] TWO_CYCLE_ALU = 0, parameter [ 0:0] COMPRESSED_ISA = 0, parameter [ 0:0] CATCH_MISALIGN = 1, parameter [ 0:0] CATCH_ILLINSN = 1, parameter [ 0:0] ENABLE_PCPI = 0, parameter [ 0:0] ENABLE_MUL = 0, parameter [ 0:0] ENABLE_FAST_MUL = 0, parameter [ 0:0] ENABLE_DIV = 0, parameter [ 0:0] ENABLE_IRQ = 0, parameter [ 0:0] ENABLE_IRQ_QREGS = 1, parameter [ 0:0] ENABLE_IRQ_TIMER = 1, parameter [ 0:0] ENABLE_TRACE = 0, parameter [ 0:0] REGS_INIT_ZERO = 0, parameter [31:0] MASKED_IRQ = 32'h 0000_0000, parameter [31:0] LATCHED_IRQ = 32'h ffff_ffff, parameter [31:0] PROGADDR_RESET = 32'h 0000_0000, parameter [31:0] PROGADDR_IRQ = 32'h 0000_0010, parameter [31:0] STACKADDR = 32'h ffff_ffff