3.1i XST-VHDL计数器综合错误逻辑-Xilinx-AMD社区-FPGA CPLD-ChipDebug

3.1i XST-VHDL计数器综合错误逻辑

描述

关键字:VHDL、综合、综合、逻辑、错误、错误

紧迫性:标准

一般描述:
当以下面的方式实现VHDL计数器时,计数器不能正确工作;即使在加载的值不等于1,或者是“0”时,它仍然将“1”加到和中。这个问题在下面的VHDL代码中说明:

(注意:这个问题在4.1i软件版本中是固定的)。

库IEEE;
使用IEEE.STDYLogiCy1164.ALL;
使用IEEE.STDLogLogic;
使用IEEE.STDLogLogic UNSIGNED;

实体累加器20是
端口(
重置:在STDYLogic中;
CLK:在STDYLogic中;
AddiooIn in:在StdLogLogic向量(19下降到0);
AcCube负载:在STDYLogic中;
ADDIGEN:在STDYLogic中;
AudioOx Outja:输出STDLogLogic向量(19下降到0);
AudioOxOutJub:OUT StdLogLogic向量(19下降到0)

末端累加器20;

累加器20的建筑蓄能器20拱

信号AudioOxOutIn A:STdLogLogic向量(19下降到0);

开始
AudioOx Outua A& lt;

进程(CLK,复位)
开始
如果重置=“1”,那么
AudioOxOut-ItnA A& lt=(其他=& gt;‘0’);
然后,ELSIF RISIGIN EDGE(CLK)
如果AcCuyLoad=“1”,那么
AudioOxOutoIntA& lt;
然后,埃尔西夫阿德根恩=“1”
AudioOxOutoIntA& lt;
如果结束;
如果结束;
结束过程;

架构结束;

解决方案

此问题发生是因为XST对计数器声明有困难:

AudioOxOutoIntA& lt;

这一行代码在计数器的LSB上实现一个反相器,从而使计数器增加1。

解决方案是使用中间信号来执行这个操作,如下所示:

库IEEE;
使用IEEE.STDYLogiCy1164.ALL;
使用IEEE.STDLogLogic;
使用IEEE.STDLogLogic UNSIGNED;

实体累加器20是
端口(
重置:在STDYLogic中;
CLK:在STDYLogic中;
AddiooIn in:在StdLogLogic向量(19下降到0);
AcCube负载:在STDYLogic中;
ADDIGEN:在STDYLogic中;
AudioOx Outja:输出STDLogLogic向量(19下降到0);
AudioOxOutJub:OUT StdLogLogic向量(19下降到0)

末端累加器20;

累加器20的建筑蓄能器20拱

信号AudioOxOutIn A:STdLogLogic向量(19下降到0);
信号AudioOxOutIn b:STdLogLogic向量(19下降到0);
信号添加:STdLogLogic向量(19下降到0);

开始

AudioOx Outub B& lt;

Add & lt;= AdiooIII+ AudioOxOut-InthB;

进程(CLK,复位)
开始
如果重置=“1”,那么
AudioOxOutIn Itb & lt=(其他=& gt;‘0’);
然后,ELSIF RISIGIN EDGE(CLK)
如果AcCuyLoad=“1”,那么
AudioOx OutthIn B & lt;
然后,埃尔西夫阿德根恩=“1”
AudioOxOutUnthInb & lt;
如果结束;
如果结束;
结束过程;

架构结束;

请登录后发表评论

    没有回复内容