Hi all,
I'm trying to implement a correlator as a coprocessor on the FSL bus. The first thing I've done is generate the FSL example using the create peripheral wizard in EDK 8.1 and hooked it up to the MicroBlaze. When I do a blocking write or read the MB stalls - my understanding is that this will happen if the FSL FIFO is full or empty respectively, but it happens the first time I write to it, so the FIFO should not be full.
If I use non-blocking reads and writes and check the error and invalid flags after each one using fsl_isinvalid() and fsl_iserror() - see code below - everything seems normal but the output is always zero. Am I implementing the error checking macros correctly?
#define write_into_fsl(val, id) nputfsl(val, id) #define read_from_fsl(val, id) ngetfsl(val, id)
#define WRITE_FSL_TEST_0(val) write_into_fsl(val, XPAR_FSL_FSL_TEST_0_INPUT_SLOT_ID) #define READ_FSL_TEST_0(val) read_from_fsl(val, XPAR_FSL_FSL_TEST_0_OUTPUT_SLOT_ID)
void fsl_test_app( unsigned int* input_0, /* Array size = 2 */ unsigned int* output_0 /* Array size = 2 */ ) { int i; Xuint8 is_error = 0; Xuint8 is_valid = 0;
print("Entering fsl_test_app \r\n");
//Start writing into the FSL bus for (i=0; i