Использование Xilinx_Out32 для заданного c набора клевов - PullRequest
0 голосов
/ 20 марта 2020

Существует ли внутренняя функция Xilinx, которая может разрешить установку / сброс указанного компонента nibble c, не нарушая другие клевы в данной 32-битной ширине данных сопоставленной памяти AXI-lite.
Пример: -
Addr || Данные
0x01 || 0x00110011
0x01 || 0x0 "1" 110011 - только установка второго куска с позиции MSB

Спасибо

1 Ответ

0 голосов
/ 20 марта 2020

Взгляните на xil_io.h. Там нет такой функции доступны. Таким образом, вы должны написать эту функцию. Пожалуйста, посмотрите на этот непроверенный пример.

static INLINE void Xil_OutNibble32(UINTPTR Addr, u8 Nibble, u8 Value)
{
    // Get the old value
    u32 temp = Xil_In32(Addr);

    // Clear/set the addressed nibble
    if(Value)
    {
        temp |= (0x0F << Nibble);
    }
    else
    {
        temp &= ~(0x0F << Nibble);
    }

    // Write the new value
    Xil_Out32(Addr, temp);
}
...