XST-“错误:XST:827文件名XX行:信号XX不能综合,不良同步描述。”-Xilinx-AMD社区-FPGA CPLD-ChipDebug

XST-“错误:XST:827文件名XX行:信号XX不能综合,不良同步描述。”

描述

当我试图推断同步元件(寄存器、触发器、存储器等)时,报告以下错误消息:

“错误:xST:827文件名(行XX)。信号XX不能综合,不良同步描述。

上述错误消息的典型场景将是类似于下面的VHDL代码:

过程(C,R)开始

如果r’事件和r=“1”,那么

q& lt;=“0”;

ELSIFF C’事件和C=“1”

q=D;

如果结束;

结束过程;

过程(C,R)开始

如果(r=1)则

q& lt;=“0”;

如果C’事件和C=“1”,那么

q=D;

如果结束;

如果结束;

结束过程;

解决方案

虽然您的VHDL代码可能是语法正确的,XST支持预定义的模板来推断各种类型的同步元件。

同步元件描述是基于事件VHDL属性的。为了使XST推断同步元件,事件VHDL属性必须出现在进程的最顶层“如果”语句中。此外,过程中不应该有嵌入的事件语句。下面的两个例子说明了这一点:

例1

同步描述:进程(CLK,Read)开始

如果CLK’事件和CLK=“1”,则是TopMax if语句

如果RESET=“1”,则同步复位

q& lt;=“0”;

其他的

q=D;

如果结束;

如果结束;

结束过程;

在上面的示例中,没有嵌入的事件语句。此外,“事件语句”是最高级“IF”语句的一部分。最上面的“如果”语句下面是一个描述,它将推断同步重置。如果需要,可以将更多的嵌入“IF”语句添加到您的设计中。

例2

同步描述:进程(CLK,Read)开始

如果RESET=“1”,则异步复位

q& lt;=“0”;如果需要的话,你可以有嵌入的if语句。

ELSIF CLK’事件和CLK =“1”然后仍然是最顶层if语句

q & lt;= d;-你可以把你的case语句放在这里或者

结束if;-嵌入更多的if语句但不

结束过程;任何事件声明

在上面的示例中,没有嵌入的事件语句。此外,“事件语句”是最顶层的“如果”语句的一部分,因为它与“ELSIF”语句关联。更多的VHDL代码可以插入到最顶层的“IF”语句的下面。

推理模板也可以在软件手册中的ISE模板和XST用户指南中找到。HTTP://www. xLimx.COM/Spope/Studio软件手册

请登录后发表评论

    没有回复内容