Code refactor
This commit is contained in:
@@ -65,8 +65,8 @@ main:
|
|||||||
|
|
||||||
// (Re)set scrolling speed
|
// (Re)set scrolling speed
|
||||||
ldr r5, >scrolling_count_addr
|
ldr r5, >scrolling_count_addr
|
||||||
ldr r7, >scrolling_cnt_value
|
ldr r4, >scrolling_cnt_value
|
||||||
st32 r5, r7
|
st32 r5, r4
|
||||||
|
|
||||||
// --- CAN init ---
|
// --- CAN init ---
|
||||||
ldr r0, >can_acceptance_code_addr
|
ldr r0, >can_acceptance_code_addr
|
||||||
@@ -155,6 +155,8 @@ switches_interrupt_handler:
|
|||||||
nop
|
nop
|
||||||
|
|
||||||
can_tx_handler:
|
can_tx_handler:
|
||||||
|
// Idee: lese hier die tx data register aus und calle die rx handler
|
||||||
|
// dafür mussen diese umgeschrieben werden um die werte nur über register auszuzlesen...
|
||||||
reti
|
reti
|
||||||
nop
|
nop
|
||||||
|
|
||||||
@@ -263,20 +265,20 @@ can_rx_data2_addr: .word 0x000F0118
|
|||||||
can_rx_handler:
|
can_rx_handler:
|
||||||
// Dispatch CAN frame
|
// Dispatch CAN frame
|
||||||
ldr r0, >can_rx_data0_addr
|
ldr r0, >can_rx_data0_addr
|
||||||
ld08 r1, r0
|
ld08 r6, r0
|
||||||
|
|
||||||
ldr r2, >frame_data_add
|
|
||||||
cmp eq r2, r1
|
|
||||||
br true >can_handle_data_add_frame
|
|
||||||
nop
|
|
||||||
|
|
||||||
ldr r2, >frame_data_clear
|
ldr r2, >frame_data_clear
|
||||||
cmp eq r2, r1
|
cmp eq r2, r6
|
||||||
br true >can_handle_data_clear_frame
|
br true >can_handle_data_clear_frame
|
||||||
nop
|
nop
|
||||||
|
|
||||||
|
ldr r2, >frame_data_add
|
||||||
|
cmp eq r2, r6
|
||||||
|
br true >can_handle_data_add_frame
|
||||||
|
nop
|
||||||
|
|
||||||
ldr r2, >frame_frequency
|
ldr r2, >frame_frequency
|
||||||
cmp eq r2, r1
|
cmp eq r2, r6
|
||||||
br true >can_handle_frequency_frame
|
br true >can_handle_frequency_frame
|
||||||
nop
|
nop
|
||||||
|
|
||||||
@@ -284,38 +286,6 @@ can_rx_handler:
|
|||||||
reti
|
reti
|
||||||
nop
|
nop
|
||||||
|
|
||||||
.align
|
|
||||||
scrolling_addr_ptr: .word =scrolling_addr
|
|
||||||
write_mask_ptr: .word =write_mask
|
|
||||||
|
|
||||||
can_handle_data_add_frame:
|
|
||||||
// Expect symbol to add in r10 register
|
|
||||||
ldr r0, >can_rx_data1_addr
|
|
||||||
ld08 r10, r0
|
|
||||||
|
|
||||||
// Release receive buffer
|
|
||||||
ldr r0, >can_command_addr_ptr
|
|
||||||
ld32 r0, r0
|
|
||||||
clr r1
|
|
||||||
addi r1, 0x04
|
|
||||||
st08 r0, r1
|
|
||||||
|
|
||||||
ldr r0, >scrolling_addr_ptr
|
|
||||||
ld32 r0, r0
|
|
||||||
|
|
||||||
ldr r1, >write_mask_ptr
|
|
||||||
ld32 r1, r1
|
|
||||||
|
|
||||||
lsh r10, r10, 16
|
|
||||||
or r4, r10, r1
|
|
||||||
st32 r0, r4
|
|
||||||
|
|
||||||
reti
|
|
||||||
nop
|
|
||||||
|
|
||||||
.align
|
|
||||||
clear_mask_ptr: .word =clear_mask
|
|
||||||
|
|
||||||
can_handle_data_clear_frame:
|
can_handle_data_clear_frame:
|
||||||
// Release receive buffer
|
// Release receive buffer
|
||||||
ldr r0, >can_command_addr_ptr
|
ldr r0, >can_command_addr_ptr
|
||||||
@@ -323,7 +293,7 @@ can_handle_data_clear_frame:
|
|||||||
clr r1
|
clr r1
|
||||||
addi r1, 0x04
|
addi r1, 0x04
|
||||||
st08 r0, r1
|
st08 r0, r1
|
||||||
|
handle_data_clear_frame:
|
||||||
ldr r0, >scrolling_addr_ptr
|
ldr r0, >scrolling_addr_ptr
|
||||||
ldr r1, >clear_mask_ptr
|
ldr r1, >clear_mask_ptr
|
||||||
|
|
||||||
@@ -336,21 +306,12 @@ can_handle_data_clear_frame:
|
|||||||
nop
|
nop
|
||||||
|
|
||||||
.align
|
.align
|
||||||
scrolling_count_addr_ptr: .word =scrolling_count_addr
|
scrolling_addr_ptr: .word =scrolling_addr
|
||||||
|
write_mask_ptr: .word =write_mask
|
||||||
can_handle_frequency_frame:
|
|
||||||
// For real board shift the count value by 16!
|
|
||||||
|
|
||||||
|
can_handle_data_add_frame:
|
||||||
ldr r0, >can_rx_data1_addr
|
ldr r0, >can_rx_data1_addr
|
||||||
ld08 r9, r0
|
ld08 r7, r0
|
||||||
|
|
||||||
ldr r0, >can_rx_data2_addr
|
|
||||||
ld08 r10, r0
|
|
||||||
|
|
||||||
// Concat bits
|
|
||||||
lsh r10, r10, 8
|
|
||||||
or r10, r10, r9
|
|
||||||
// lsh r10, r10, 16 // real board !!!
|
|
||||||
|
|
||||||
// Release receive buffer
|
// Release receive buffer
|
||||||
ldr r0, >can_command_addr_ptr
|
ldr r0, >can_command_addr_ptr
|
||||||
@@ -358,22 +319,53 @@ can_handle_frequency_frame:
|
|||||||
clr r1
|
clr r1
|
||||||
addi r1, 0x04
|
addi r1, 0x04
|
||||||
st08 r0, r1
|
st08 r0, r1
|
||||||
|
handle_data_add_frame:
|
||||||
|
// Expect symbol to add in r7 register
|
||||||
|
|
||||||
ldr r0, >scrolling_count_addr_ptr
|
ldr r0, >scrolling_addr_ptr
|
||||||
ld32 r0, r0
|
ld32 r0, r0
|
||||||
|
|
||||||
st32 r0, r10
|
ldr r1, >write_mask_ptr
|
||||||
|
ld32 r1, r1
|
||||||
|
|
||||||
|
lsh r7, r7, 16
|
||||||
|
or r4, r7, r1
|
||||||
|
st32 r0, r4
|
||||||
|
|
||||||
reti
|
reti
|
||||||
nop
|
nop
|
||||||
|
|
||||||
wait:
|
.align
|
||||||
clr r7
|
clear_mask_ptr: .word =clear_mask
|
||||||
clr r8
|
scrolling_count_addr_ptr: .word =scrolling_count_addr
|
||||||
addi r8, 16
|
|
||||||
inc_i:
|
can_handle_frequency_frame:
|
||||||
cmp neq r7,r8
|
ldr r0, >can_rx_data1_addr
|
||||||
br true >inc_i
|
ld08 r7, r0
|
||||||
addi r7,1
|
|
||||||
ret
|
ldr r0, >can_rx_data2_addr
|
||||||
|
ld08 r8, r0
|
||||||
|
|
||||||
|
// Release receive buffer
|
||||||
|
ldr r0, >can_command_addr_ptr
|
||||||
|
ld32 r0, r0
|
||||||
|
clr r1
|
||||||
|
addi r1, 0x04
|
||||||
|
st08 r0, r1
|
||||||
|
handle_frequency_frame:
|
||||||
|
// Expect count value in r7 and r8 register
|
||||||
|
|
||||||
|
// For real board shift the count value by 16!
|
||||||
|
|
||||||
|
// Concat bits
|
||||||
|
lsh r8, r8, 8
|
||||||
|
or r8, r8, r7
|
||||||
|
// lsh r8, r8, 16 // real board !!!
|
||||||
|
|
||||||
|
ldr r0, >scrolling_count_addr_ptr
|
||||||
|
ld32 r0, r0
|
||||||
|
|
||||||
|
st32 r0, r8
|
||||||
|
|
||||||
|
reti
|
||||||
nop
|
nop
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ begin
|
|||||||
if clk'event and clk='1' then
|
if clk'event and clk='1' then
|
||||||
if rst = '1' then
|
if rst = '1' then
|
||||||
interrupt <= '0';
|
interrupt <= '0';
|
||||||
old_input <= (others => '0');
|
old_input <= buttons & switches;
|
||||||
else
|
else
|
||||||
if buttons & switches /= old_input
|
if buttons & switches /= old_input
|
||||||
then
|
then
|
||||||
|
|||||||
@@ -112,17 +112,28 @@ BEGIN
|
|||||||
stimuli: process
|
stimuli: process
|
||||||
begin
|
begin
|
||||||
rst <= '0';
|
rst <= '0';
|
||||||
|
sw <= x"000F";
|
||||||
|
|
||||||
wait for CLK_PERIOD;
|
wait for CLK_PERIOD;
|
||||||
rst <= '1';
|
rst <= '1';
|
||||||
|
|
||||||
sw <= x"000F";
|
|
||||||
|
|
||||||
wait for 3us;
|
wait for 3us;
|
||||||
btn0 <= "00100"; -- freq
|
-- btn0 <= "00100"; -- freq
|
||||||
-- btn0 <= "00001"; -- add
|
btn0 <= "00001"; -- add
|
||||||
-- btn0 <= "00010"; -- clear
|
-- btn0 <= "00010"; -- clear
|
||||||
|
|
||||||
|
wait for 50us;
|
||||||
|
sw <= x"000A";
|
||||||
|
btn0 <= "00000";
|
||||||
|
btn1 <= "00001"; -- add
|
||||||
|
|
||||||
|
wait for 50us;
|
||||||
|
btn0 <= "00100"; -- freq
|
||||||
|
|
||||||
|
wait for 50us;
|
||||||
|
btn0 <= "00010"; -- clear
|
||||||
|
|
||||||
wait for 300us;
|
wait for 100us;
|
||||||
assert false report "Simulation terminated!" severity failure;
|
assert false report "Simulation terminated!" severity failure;
|
||||||
end process stimuli;
|
end process stimuli;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user