微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 一个Xilinx编译时出现的错误

一个Xilinx编译时出现的错误

时间:10-02 整理:3721RD 点击:
错误描述为:ERROR:Xst:870 - "asyn_receiver.v" line 87: Can not simplify operator div.      出现错误的代码为:wire [cntr_16x_width-1:0] cntr_16x_max = clock_frequency / (baud_rate * 16) - 1;
      实际运用中,出现错误的代码在别的模块内时没有问题的,现在我对这个模块进行了一定的更改,但是对这个语句本身是没有太大影响的,在网上百度了一下也有类似的错误但是都没有注明解决办法,xilinx官网求助有描述,不过我没看懂,描述的网址所示:
                                http://forums.xilinx.com/xlnx/bo ... id=OTHERBRD&message.id=221
      两者的错误信息是一样的,不过我没有看明白怎么解决,他给提供的那个历程examples_v9.zip,因为登陆ftp需要账户我没能成功下载,目前卡在这里了,希望遇到过这个问题,或者能看明白描述的,给予一定的帮助,谢谢!

同样的代码,在quartus II下编译时没有任何错误的,但是移植的时候会出现一些小的问题,其他都已解决,就这个错误没找到原因。



    看看是否是计算过后前后数据宽度不匹配


不会,我数据位宽设置的是32位,而实际用的很少,我是为了与上位机匹配才设的这么大。

从clock_frequency / (baud_rate * 16) - 1看不出你计算的位宽能和左边对应啊!如果不是就不太清楚了!


这样就不存在位宽问题了,但是这样也不能通过,现在把baud_rate换成一系列的固定数时能编译过去的,比如115200,但是我如果想更改这个变量baud_rate就会出现问题,现在想把计算的结果传进来,在SOPC下用C语言计算结果,能编译通过,但是结果不是很理想,也算一种解决方式了,但是挺想知道这个问题出现的原因的,这个错误在xilinx官网上有,解决方法我没看明白,提供了一个example但是我下载不下来很是闹心。



    如果是vhdl语言的话,数据位宽会定义的很清楚!


应该不是数据位匹配的问题,我后来做到数据位完全匹配,没有问题,还是过不去,应该是除法的问题除数时一个变量,ISE如果不调用IP核不支持,我的分析。

对的xilinx的XST综合器不支持div的综合。
可以用synplify综合,也可以掉xilinx的div core



   谢谢,方法很靠谱~



   我现在已经变向的解决了这个问题,由PowerPC的C语音下计算出结果传过来,但是这个问题我想确定一下根本原因,时Xilinx不支持综合还是我方式不对,不过同样感谢。

lz找到原因了上来吱一声哈



   原因没找到,不过我贴上来的那个xilinx官网的网址里应该有解决方法,我没有看懂而已。

实际可综合电路结构设计中,要尽量避免复杂的算术运算,将复杂的运算拆成几个步骤,通过寄存器存错中间数据,在几个时钟周期内完成。
小编的那段代码,在许多综合器是不能综合的。
夏宇闻书上的意见,大家一起交流

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top