Saras015
Banned
Hi,
Implementing "pseudorandom bit sequence generator" in HLS and in XSDK, and using Kintex 705. Since, i have completed the following pocesses like IP creation from HLS, IP integration through Vivado IP integrator, bit_stream generation in Vivado, export hardware and Lunch SDK. But, in SDK i am getting incorrect result while calling the API.
I am getting "0 (zero)" in UART (Tera Terminal). I dont know why. please help me.
I have attached HLS Csim and SDK file.
HLS Source code
Source Code in SDK
SDK- Function Header File
Implementing "pseudorandom bit sequence generator" in HLS and in XSDK, and using Kintex 705. Since, i have completed the following pocesses like IP creation from HLS, IP integration through Vivado IP integrator, bit_stream generation in Vivado, export hardware and Lunch SDK. But, in SDK i am getting incorrect result while calling the API.
I am getting "0 (zero)" in UART (Tera Terminal). I dont know why. please help me.
I have attached HLS Csim and SDK file.
HLS Source code
Code C - [expand] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include <stdint.h> #include <stdio.h> #include "ap_cint.h" int PRBS_Func(void) { #pragma HLS INTERFACE s_axilite port=return bundle=a int start_state = 0xCD; /* Any nonzero start state will work. */ int lfsr = start_state; int bit; /* 8bit to allow bit<<7 later in the code */ unsigned period = 0; do { /* Using LFSR = taps: 8, 6, 5 and 4; feedback polynomial: x^8+ x^6 + x^5 + x^4 + 1 */ bit = ((lfsr >> 0) ^ (lfsr >> 2) ^ (lfsr >> 3) ^ (lfsr >> 4) ) & 1; lfsr = (lfsr >> 1) | (bit << 7); ++period; } while (lfsr != start_state); return 0; }
Source Code in SDK
Code C - [expand] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include <stdio.h> #include "platform.h" #include "xuartlite.h" #include "xparameters.h" #include "xil_printf.h" #include "stdlib.h" #include "XPrbs_prj.h" int main() { init_platform(); u32 Resulth; XPrbs_prj PRBS; XPrbs_prj *PRBSPTR=&PRBS; XPrbs_prj_Initialize(PRBSPTR,XPAR_PRBS_PRJ_0_DEVICE_ID); XPrbs_prj_Start(PRBSPTR); while (!XPrbs_prj_IsDone(PRBSPTR)); Resulth=XPrbs_prj_Get_return(PRBSPTR); xil_printf("[hw] Resulth = %d \r\n", Resulth); cleanup_platform(); return Resulth; }
SDK- Function Header File
Code C - [expand] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ************************** Function Prototypes *****************************/ #ifndef __linux__ int XPrbs_prj_Initialize(XPrbs_prj *InstancePtr, u16 DeviceId); XPrbs_prj_Config* XPrbs_prj_LookupConfig(u16 DeviceId); int XPrbs_prj_CfgInitialize(XPrbs_prj *InstancePtr, XPrbs_prj_Config *ConfigPtr); #else int XPrbs_prj_Initialize(XPrbs_prj *InstancePtr, const char* InstanceName); int XPrbs_prj_Release(XPrbs_prj *InstancePtr); #endif void XPrbs_prj_Start(XPrbs_prj *InstancePtr); u32 XPrbs_prj_IsDone(XPrbs_prj *InstancePtr); u32 XPrbs_prj_IsIdle(XPrbs_prj *InstancePtr); u32 XPrbs_prj_IsReady(XPrbs_prj *InstancePtr); void XPrbs_prj_EnableAutoRestart(XPrbs_prj *InstancePtr); void XPrbs_prj_DisableAutoRestart(XPrbs_prj *InstancePtr); u32 XPrbs_prj_Get_return(XPrbs_prj *InstancePtr); void XPrbs_prj_InterruptGlobalEnable(XPrbs_prj *InstancePtr); void XPrbs_prj_InterruptGlobalDisable(XPrbs_prj *InstancePtr); void XPrbs_prj_InterruptEnable(XPrbs_prj *InstancePtr, u32 Mask); void XPrbs_prj_InterruptDisable(XPrbs_prj *InstancePtr, u32 Mask); void XPrbs_prj_InterruptClear(XPrbs_prj *InstancePtr, u32 Mask); u32 XPrbs_prj_InterruptGetEnabled(XPrbs_prj *InstancePtr); u32 XPrbs_prj_InterruptGetStatus(XPrbs_prj *InstancePtr); #ifdef __cplusplus } #endif
Attachments
Last edited by a moderator: