autd3_firmware_emulator/fpga/emulator/
debug.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use super::{super::params::*, memory::Memory, FPGAEmulator};

impl FPGAEmulator {
    pub fn gpio_in(&self) -> [bool; 4] {
        [
            (self.mem.controller_bram()[ADDR_CTL_FLAG] & (1 << CTL_FLAG_BIT_GPIO_IN_0)) != 0,
            (self.mem.controller_bram()[ADDR_CTL_FLAG] & (1 << (CTL_FLAG_BIT_GPIO_IN_1))) != 0,
            (self.mem.controller_bram()[ADDR_CTL_FLAG] & (1 << (CTL_FLAG_BIT_GPIO_IN_2))) != 0,
            (self.mem.controller_bram()[ADDR_CTL_FLAG] & (1 << (CTL_FLAG_BIT_GPIO_IN_3))) != 0,
        ]
    }

    pub fn debug_types(&self) -> [u8; 4] {
        [
            (self.mem.controller_bram()[ADDR_DEBUG_VALUE0_3] >> 8) as _,
            (self.mem.controller_bram()[ADDR_DEBUG_VALUE1_3] >> 8) as _,
            (self.mem.controller_bram()[ADDR_DEBUG_VALUE2_3] >> 8) as _,
            (self.mem.controller_bram()[ADDR_DEBUG_VALUE3_3] >> 8) as _,
        ]
    }

    pub fn debug_values(&self) -> [u64; 4] {
        [
            Memory::read_bram_as::<u64>(self.mem.controller_bram().as_slice(), ADDR_DEBUG_VALUE0_0)
                & 0x00FF_FFFF_FFFF_FFFF,
            Memory::read_bram_as::<u64>(self.mem.controller_bram().as_slice(), ADDR_DEBUG_VALUE1_0)
                & 0x00FF_FFFF_FFFF_FFFF,
            Memory::read_bram_as::<u64>(self.mem.controller_bram().as_slice(), ADDR_DEBUG_VALUE2_0)
                & 0x00FF_FFFF_FFFF_FFFF,
            Memory::read_bram_as::<u64>(self.mem.controller_bram().as_slice(), ADDR_DEBUG_VALUE3_0)
                & 0x00FF_FFFF_FFFF_FFFF,
        ]
    }
}