Невозможно прочитать данные из пользовательского регистра AXI. - PullRequest
0 голосов
/ 22 января 2020

Я работаю с платой Zynq, в которой настраиваемое ведомое периферийное устройство AXI 4 lite создается, а затем добавляется из репозитория IP. И создал синтезируемый пользовательский IP в vivado (, который является синусоидальным IP ), а также написал C код для чтения этого выхода IP (я хочу прочитать данные из регистра). Но как-то это показывает что-то другое. вместо того, что я ожидаю.

Здесь я прилагаю скриншот и мой c код для этого. Но в тератерме он показывает некоторое состояние памяти мусора. Здесь я ожидаю синусоидального вывода. (В ди git форме) Просьба предложить мне исправление или предложение о том, где я мог ошибиться или что я пропустил в C коде?.

enter image description here

#include "xil_printf.h"
#include "xil_io.h"
#include "xparameters.h"
#include "xil_types.h"
#include "xparameters_ps.h"


#include <stdio.h>
//Definitions for peripheral  MYIPINETHREE_0 //
#define XPAR_ MYIPINETHREE_0_DEVICE_ID 0
#define XPAR_ MYIPINETHREE_0_S00_AXI_BASEADDR 0x43C00000
#define XPAR_ MYIPINETHREE_0_S00_AXI_HIGHADDR 0x43C0FFFF

int main(){
    u32 baseaddr;
    int sine, sinephase, enable,reg ;
    while (1)
    {
    xil_printf("start of ip test\r");

    if (enable == 1)
                    reg = 0xFFFFFFFF;
        else
                reg = 0x00000000;
     Xil_Out32(0x43C00000, 32 );
sine = Xil_In32(baseaddr+4);

    xil_printf("\r state: %d", sine);
     Xil_Out32(0x43C00000, 32);
     sinephase = Xil_In32(baseaddr+4);
        xil_printf("\r state: %d", sinephase);
    return 0;
}
}

Ответы [ 2 ]

2 голосов
/ 22 января 2020

Для начала: вы никогда не инициализируете baseaddr, но используете его для чтения.

Также я не могу сказать, потому что не знаю, как проверить правильность ваших адресов. Обычно вы должны использовать определения из вашего файла xparameters.h, куда их помещает программа пакета плат Xilinx. Я не вижу, что здесь происходит.

Я несколько подозрительно отношусь к тому, что все мои адреса Xilinx AXI начинаются с 0x800 ... но тогда я мог бы быть, потому что я использую другую FPGA.

0 голосов
/ 27 января 2020

Пожалуйста, добавьте макет доски или некоторую дополнительную информацию. Вы должны использовать адреса из xparameters.h вместо жесткого кодирования их в исходный код. Адресное пространство зависит от вашего основного интерфейса AXI.

...