如何在microblaze和vhdl之间进行通信?
我正在microblaze xilinx 13.1中实现UART。我想将rx值存储在fifo中,fifo是使用VHDL中的xilinx ipcore实现的 我收到的字节是这样的如何在microblaze和vhdl之间进行通信?,c,vhdl,xilinx,uart,microblaze,C,Vhdl,Xilinx,Uart,Microblaze,我正在microblaze xilinx 13.1中实现UART。我想将rx值存储在fifo中,fifo是使用VHDL中的xilinx ipcore实现的 我收到的字节是这样的 while(1) { Recvd_Byte = XUartLite_RecvByte(0x40600000); } 我已经在VHDL代码中实现了fifo。system.xmp和fifo都是我的顶层模块下的组件 如何在C代码中访问这个Recvd_字节并在VHDL中传递给fifo(fifo_wr_数据) 请帮帮我。我
while(1) {
Recvd_Byte = XUartLite_RecvByte(0x40600000);
}
我已经在VHDL代码中实现了fifo。system.xmp和fifo都是我的顶层模块下的组件
如何在C代码中访问这个Recvd_字节并在VHDL中传递给fifo(fifo_wr_数据)
请帮帮我。我对microblaze不熟悉。要将数据写入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);
//试着在问题中提供更多细节
//我们可以以更好的方式帮助您。您可以在EDK中添加新的GPIO外围设备。然后使用GPIO将Recvd_字节写入微LAZE外部的信号中。因此:
#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] :
[2] :为什么你需要一个硬件FIFO,你不能在你的C代码中实现一个缓冲区吗?这很重要,这也是可能的。但是,每当收到选通信号时,来自fifo(8位)的数据都应该发送到连接到fpga的其他设备。在这种情况下,这是怎么回事。我已经在VHDL中实现了这一点。您的FIFO是如何连接到Microblaze(FSL、AXI、PLB、OPB?)的?它是如何使用AXI连接的