【问题标题】:C language for VIVADO HLS-how to store and generate Pseudo_random binary sequences into memcpyVIVADO HLS的C语言-如何将Pseudo_random二进制序列存储并生成到memcpy中
【发布时间】:2025-11-23 10:45:01
【问题描述】:

通过 Stack Overflow 中的整体搜索。我得到了提示:对于使用 memcpy 的二进制数据

for (int i=0; i < N; ++i)
    memcpy(buffer + i * byte_sequence_length, byte_sequence,    
      byte_sequence_length); 

但即使代码不起作用,请告诉我以下代码中的错误。

代码

void main ( int bit)        
static unsigned lfsr  = 0xCD;               
int  i,j;        
int buff[];                     
for ( i = 0; i < 50; i++)                  
{                      
   bit = ((lfsr >> 0) ^ (lfsr >> 2) ^ (lfsr >> 3) ^ (lfsr >> 4) ) & 1;                                    
   lfsr = (lfsr >> 1) | (bit << 7);             
   buff[i] = bit;         
 }    
for (int j=0; j < 50; ++j)    
{        
    memcpy(buff+ j, lfsr, 50*sizeof(int));    
}

【问题讨论】:

    标签: c arrays buffer memcpy vivado-hls


    【解决方案1】:

    如果您将buff 数组声明为局部变量,HLS 将不会为您的*函数生成内存端口。你应该把它作为函数的参数。

    【讨论】:

    • 我参考了 HLS UG902 用户指南和其他网站,他们通常只将 buff 数组声明为局部变量。我认为这不会是我的代码错误。请推荐我
    • 您可以将其声明为本地,但 HLS 不会将其生成为端口,而是将其生成为内部存储器。
    • 好吧,你不需要多次调用 memcpy
    最近更新 更多