From 15f51c17930ea91be18953e8857796e9a84bf4a8 Mon Sep 17 00:00:00 2001 From: Derek Christ Date: Sun, 13 Nov 2022 11:17:10 +0100 Subject: [PATCH] Modify program to adapt for new register layout --- programs/segments_adv_test.prog | 169 ++++++++++++++++++++++++++++++++ soc/testbench/warmup3.vhd | 2 +- 2 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 programs/segments_adv_test.prog diff --git a/programs/segments_adv_test.prog b/programs/segments_adv_test.prog new file mode 100644 index 0000000..efef1be --- /dev/null +++ b/programs/segments_adv_test.prog @@ -0,0 +1,169 @@ +reset: +br always >main +nop +hardfault: +reti +nop +memfault: +reti +nop + +.align +segment_addr: .word 0x000F00A0 +// w_cnt_top: .word 0xFFC000 +w_cnt_top: .word 0x100 //for simulation only + +write_and_shift: + .word 0x01000100 + +main: + ldr r8, >w_cnt_top + ldr r0, >segment_addr + ldr r1, >write_and_shift + +number_loop: + // 0 1 2 3 4 5 6 7 + clr r4 + addi r4, 0x0 + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0x1 + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0x2 + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0x3 + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0x4 + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0x5 + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0x6 + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0x7 + or r4, r4, r1 + st32 r0, r4 + + call >wait + nop + + // 8 9 A B C D E F + clr r4 + addi r4, 0x8 + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0x9 + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0xA + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0xB + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0xC + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0xD + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0xE + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0xF + or r4, r4, r1 + st32 r0, r4 + + call >wait + nop + + // 0xDEADBEEF pattern: + clr r4 + addi r4, 0xD + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0xE + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0xA + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0xD + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0xB + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0xE + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0xE + or r4, r4, r1 + st32 r0, r4 + + clr r4 + addi r4, 0xF + or r4, r4, r1 + st32 r0, r4 + + call >wait + nop + + br always >number_loop + nop + + +//subroutine to iterate until counter overflow +wait: + clr r7 //inititalize inner counter + inc_i: + cmp neq r7,r8 + br true >inc_i //if i=cnt_top + addi r7,1 + ret //else + nop diff --git a/soc/testbench/warmup3.vhd b/soc/testbench/warmup3.vhd index adda9a9..16badbf 100644 --- a/soc/testbench/warmup3.vhd +++ b/soc/testbench/warmup3.vhd @@ -21,7 +21,7 @@ ARCHITECTURE sim OF warmup3_tb IS COMPONENT lt16soc_top IS generic( - programfilename : string := "../../programs/segments_test.ram" + programfilename : string := "../../programs/segments_adv_test.ram" ); port( clk : in std_logic;