身份:学生,FPGA初学者,属于半只脚碰到门槛的那种
问题描述:最近有一个项目需要FPGA编写PID算法,其中主要是涉及到有符号寄存器组之间的加减乘运算。编写完之后进行Synthesis编译,报错,但是没有错误信息,连一些相关的warning都没有,头大,大到像地球仪那种。然后查看错误日志输出文件,也没有任何信息,只是说了一句“no stack trace available, please use hs_err_<pid>.dmp instead.”。
解决方案:
1、有的CSDN博主说是因为windowsdefender或者是其他杀毒软件关闭,然后重启电脑就可以解决,我试了不管用,大家可以试试。
2、我摸出来的解决方案:还是代码有问题,我的代码如下所示:
always @(posedge clk)//打两拍,获得上一次与上上次的误差
begin
ek0 <= rt - yt;
ek1 <= ek0;
ek2 <= ek1;
end
assign uk = kp * (ek0 - ek1) + ki * ek0 + kd * (ek0 - 2 * ek1 + ek2);
原来使用单片机的时候就有一次问题是因为不小心将内部资源用完了,但是不报错,也不运行。想到这个问题,怀疑是不是寄存器占用太多之类的问题。然后就定位到代码中assign uk这一句,怀疑是这一句资源占用太多。然后修改语句如下:
always @(posedge clk)//打两拍