# 上板演示程序(Nexys4DDR):通过 MMIO 写 LED 数据寄存器,做 16 位跑马灯。 # LED_ADDR = 0x0000_1000(与 cpu21_board_top.v / cpu21_mmio.v 的默认参数一致)。 # 用 tools/hex2vh.py 把它转成 cpu21_board_rom.vh,供综合时初始化片内 ROM。 lui t0, 0x1 # t0 = LED_ADDR = 0x00001000 addi t1, zero, 1 # 跑马灯初值:bit0 main_loop: sw t1, 0(t0) # MMIO 写 LED -> 板载 LED[15:0] slli t1, t1, 1 # 左移一位 lui t4, 0x8 # t4 = 0x00008000 bltu t4, t1, restart # 移出 16 位后重新开始 jal zero, delay restart: addi t1, zero, 1 delay: # 软件延时,让人眼能看到跑马灯(50 MHz 下约 20 ms) lui t2, 0x7a # 延时计数 0x0007A000 ≈ 5e5 次循环 addi t3, zero, 1 delay_loop: sub t2, t2, t3 bne t2, zero, delay_loop jal zero, main_loop