Zynq7020 AXI4-Stream Switch 裸板程式設計
阿新 • • 發佈:2019-01-28
以下圖為例,我有兩個輸入,一個輸出,那麼我只要控制開啟哪個通道就會有哪邊的資料進來。其中程式碼裡的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; }