Я пытаюсь переключить выходную частоту IP-адреса Clocking Wizard 6.0 с Xilinx во время выполнения, но Clocking Wizard не изменяет выходную частоту. Мастер синхронизации настроен на вывод тактового сигнала 8 МГц, который затем делится на 200, чтобы получить конечную выходную частоту 40 кГц.
И код для этого дизайна:
#include "xil_printf.h"
#include "xparameters.h"
#include "xil_io.h"
int main(void)
{
xil_printf("Go...\n\r");
Xil_Out32(XPAR_CLK_WIZ_0_BASEADDR + 0x00, 0x0A);
for(u32 i = 0x00; i < 0xFFFFFFF; i++) {};
while(!(Xil_In32(XPAR_CLK_WIZ_0_BASEADDR + 0x04) & 0x01))
{
xil_printf("Not locked\n\r");
}
xil_printf("Locked\n\r");
Xil_Out32(XPAR_CLK_WIZ_0_BASEADDR + 0x200, 0x01010700);
Xil_Out32(XPAR_CLK_WIZ_0_BASEADDR + 0x204, 0x00);
Xil_Out32(XPAR_CLK_WIZ_0_BASEADDR + 0x208, 0x0004000a);
Xil_Out32(XPAR_CLK_WIZ_0_BASEADDR + 0x20C, 0x00);
Xil_Out32(XPAR_CLK_WIZ_0_BASEADDR + 0x210, 0x0000C350);
Xil_Out32(XPAR_CLK_WIZ_0_BASEADDR + 0x25C, 0x03);
while(!(Xil_In32(XPAR_CLK_WIZ_0_BASEADDR + 0x04) & 0x01))
{
xil_printf("Not locked\n\r");
}
xil_printf("Locked\n\r");
Xil_Out32(XPAR_CLK_WIZ_0_BASEADDR + 0x25C, 0x02);
while(1)
{
}
return 0;
}
Я пытаюсь изменить параметр CLKFBOUT_MULT
с 0x0A (по умолчанию) на 0x07, поэтому выходная частота мастера синхронизации изменится с 8 МГц до 5,6 МГц. Но выходная частота не меняется.
Что не так с кодом или с дизайном?