1. 程式人生 > >Zynq7020 AXI4-Stream Switch 裸板程式設計

Zynq7020 AXI4-Stream Switch 裸板程式設計

以下圖為例,我有兩個輸入,一個輸出,那麼我只要控制開啟哪個通道就會有哪邊的資料進來。其中程式碼裡的val指的是我對應輸入的通道序號。

int start_switch(u16 DeviceId,int val)
{
	XAxis_Switch_Config *Config;
	int Status;
	u8 MiIndex;
	u8 SiIndex;

	/* Initialize the AXI4-Stream Switch driver so that it's ready to
	 * use look up configuration in the config table, then
	 * initialize it.
	 */
	Config = XAxisScr_LookupConfig(DeviceId);
	if (NULL == Config) {
		return XST_FAILURE;
	}

	Status = XAxisScr_CfgInitialize(&AxisSwitch, Config,
						Config->BaseAddress);
	if (Status != XST_SUCCESS) {
		xil_printf("AXI4-Stream initialization failed.\r\n");
		return XST_FAILURE;
	}

	/* Disable register update */
	XAxisScr_RegUpdateDisable(&AxisSwitch);

	/* Disable all MI ports */
	XAxisScr_MiPortDisableAll(&AxisSwitch);

	/* Source SI[1] to MI[0] */
	MiIndex = 0;
	SiIndex = val;
	XAxisScr_MiPortEnable(&AxisSwitch, MiIndex, SiIndex);

	/* Enable register update */
	XAxisScr_RegUpdateEnable(&AxisSwitch);

	/* Check for MI port enable */
	Status = XAxisScr_IsMiPortEnabled(&AxisSwitch, MiIndex, SiIndex);
	if (Status) {
		xil_printf("MI[%d] is sourced from SI[%d].\r\n", MiIndex,
				SiIndex);
	}
    xil_printf("%x\r\n",XAxisScr_ReadReg(Config->BaseAddress,0x00));

	return XST_SUCCESS;
}