1

我在 microblaze xilinx 13.1 中实现 UART。我想将 rx 值存储在 fifo 中,该值是在 VHDL 中使用 xilinx ipcore 实现的。

我收到了这样的字节,

while(1) {
   Recvd_Byte = XUartLite_RecvByte(0x40600000);
}

我已经在我的 VHDL 代码中实现了 fifo。system.xmp 和 fifo 都是我的顶级模块下的组件。

我如何在 C 代码中访问这个 Recvd_Byte 并在 VHDL 中传递给 fifo(fifo_wr_data)。

请帮我。我是 microblaze 的新手。

4

2 回答 2

0

要将数据写入 fpga 中的寄存器,xil_io.h 中有一些函数。地址可以在 xparameters.h 中看到,你要写入数据的寄存器地址是什么?

默认情况下,IP 内核有 32 个寄存器,您从 0x40600000 读取数据;那是 slv_reg0; 假设 slv_reg1 是免费的,所以你可以在它的地址写入数据。下一个寄存器将位于地址 0x40600004;// 假设寄存器的宽度是 32 位

you can use commands 
Xil_Out8(0x40600004);
Xil_Out16(0x40600004);
Xil_Out32(0x40600004); 

或者也可以使用命令将数据写入下一个字节

Xil_Out8(0x40600001);

// 尝试在问题中提供更多详细信息。

// 我们可以以更好的方式帮助您。

于 2014-05-14T07:29:48.387 回答
0

您可以在 EDK 中添加新的 GPIO 外设。然后使用 GPIO 将 Recvd_Byte 写入 microblaze 外部的信号中。所以:

  1. 打开EDK。
  2. 添加 GPIO 外设。[此说明的图片][1]

  3. 映射地址后,我建议将 GPIO_IO_O 设置为仅外部。[此说明的图片][2]

  4. 生成网表后。将硬件设计导出到 SDK。

  5. 这是一个通过 GPIO 在 Microblaze 之外发送数据的简单代码:

    #include "xparameters.h"
    #include "xgpio.h"
    
    XGpio Gpio;
    
    int main (void){
    ...
    int Status;
    Status = XGpio_Initialize(&Gpio, XPAR_XPS_GPIO_0_DEVICE_ID);
    XGpio_SetDataDirection(&Gpio, 1, 0x00000000);
    XGpio_DiscreteWrite(&Gpio, 1,Recvd_Byte );
    ...
    return 0;
    }
    

    [1]:https ://i.stack.imgur.com/fr0iG.png [2]:https ://i.stack.imgur.com/kAnCK.png

于 2017-06-01T17:22:24.330 回答