FPGA经验记录
FPGA内核使用小经验
1,MAP时显示Not enough free sites available for the components of the following type(s).将ILA内核中的16个接口删掉两个,再综合解决问题。
2,reg类型的数据当做wire用时容易导致布局布线报错,此时最好把reg变量放入一个模块中并定义一个output wire输出来。
3,OFDM的采样率等于信号带宽,等于N倍子载波间隔。
4,做功能仿真时cutcp模块设置成Search速度会加快,但会导致前三帧数据出错。 5,周师兄的链路下板子测试,发现频域数据没有发散的现象,恒模性比较好。
6, 在使用if和case语句时,每一种情况都应该给出所有变量的值,不能漏掉,否则会综合出额外的锁存器或很长的组合逻辑驱动使能信号ce。
7, DFT矩阵A与IDFT矩阵B的关系为B=NA 。
8, 将数据写入Ram时,写使能端与输入数据同时到来,做FFT后,若要将数据写入Ram可以用FFT的dv信号来控制Ram的写地址,且可以用dv来作为写使能信号。
9, FPGA设计中的约束文件有3类:用户设计文件(.UCF文件)、网表约束文件(.NCF文件)以及物理约束文件(.PCF文件),可以完成时序约束、管脚约束以及区域约束。3类约束文件的关系为:用户在设计输入阶段编写UCF文件,然后UCF文件和设计综合后生成NCF文件,最后再经过实现后生成PCF
文件。UCF文件中描述管脚分配的语法为:NET “端口名称” LOC = 引脚编号;
10,FPGA实现乘累加可以调用Multiply Accumulator,其中bypass端口接低电平即可以实现乘累加。
11,语法错误:unexpected token: '\243' 。可能是由中文字符()导致的,将其改为英文格式即可。
12,if语句()中的><等比较大小的符号,比较的是无符号数,直接调用加减的话是直接的二进制数进行简单的加减运算,对于复杂的情况一般调用加减内核。
13,减法器内核实现a-b的功能,对于bypass有效时直接把b端口赋值给输出结果。
14,除法器内核中Remainder Type选择Fractional则表示余数除以除数对应的小数,选择remainder则表示余数(整数)。Algorithm Type若选择Radix2则延时不可控制,但可以达到输入输出吞吐量相等。若选择High Radix则延时可以控制,但此时输入输出的吞吐量可能不相等,为了达到相等所以才需要一个ND(new data)端口,其中ND端口可以考虑接一个和输入数据同频率的时钟CLK_data,输入时钟需要加大,并且等于CLK_data*latency。 15,两个符号间的第一行数据相差4377个周期 1


