描述
关键词:数组,总线,宽
紧迫性:标准
一般描述:
XST错误地发出错误消息:
“错误:XST:917 -未声明的信号&信号StRealNo.gt;
下面是几个确定的问题。
解决方案
一
如果在一个“总是”过程块中声明一个RG数据类型,XST也会报告这个错误,如下所示:
模块测试(输入CLK,输入RST);
:
:
总是@(CLK或RST)
开始:计算机程序
Reg [0:0] CLAV[2:0];
CLAV〔0〕=1’BX;
CLAV〔1〕=1’BX;
CLAV〔2〕=1’BX;
结束
:
:
终端模块
如果信号CLAV被声明在“总是”块之外,XST将接受代码:
模块测试(输入CLK,输入RST);
:
:
Reg [0:0] CLAV[2:0];
总是@(CLK或RST)
开始:计算机程序
CLAV〔0〕=1’BX;
CLAV〔1〕=1’BX;
CLAV〔2〕=1’BX;
结束
:
:
终端模块
二
当在verilog函数中执行总线范围的数组声明时:
Reg [32∶1 ]信号名[8:0];
XST将生成以下错误消息:
“错误:XST:917 -未声明的信号&信号StRealNo.gt;
这是因为XST不支持函数中的总线范围的数组声明。唯一的解决方案是将阵列分解成单独的总线,方式如下:
Reg [8:0]
Reg [8:0]
Reg [8:0]信号;
:
:
Reg [8:0]
注意:在5.1i软件版本中解决了声明总线范围数组的问题。
三
如果您已经在VHDL文件中实例化了一个包含状态机的Verilog文件,XST也将报告此错误。Verilog状态机将用参数声明的状态名,例如在下面的示例中:
参数[3:0]
S1= 2’B01,
S2= 2’B10;
RG[3:0] CS;
Reg [3:0] NS;
总是@(POST时钟或后置复位)
开始
如果(复位)CS & lt;=S1;
否则Cs & lt;
结束
总是@(cs或/*lt;其他输入& gt;*/)
开始
案例(CS)
S1:开始
q& lt=0;
ns& lt=s2;
结束
S2:开始
q& lt=1;
NS& Lt= S1;
结束
端部病例
结束
若要解决此问题,请使用“定义”代替“参数”来声明状态名。在使用国家名称的每个地方一定要使用“符号”:
“定义S1 2”B01
定义S2’B10
RG[3:0] CS;
Reg [3:0] NS;
总是@(POST时钟或后置复位)
开始
如果(复位)CS & lt;=s1;
否则Cs & lt;
结束
总是@(cs)
开始
案例(CS)
S1:开始
q& lt=0;
ns& lt;
结束
S2:开始
q& lt=1;
ns& lt;
结束
端部病例
结束
四
当函数中声明参数时,XST也将生成上述错误消息:
函数[FIFOXADDRIGHORITION-1:0] BI2GRY;
输入[FIFOXADDRIGHORITION-1:0]输入;
参数DestthyStand=4;
/B2GHY
整数输入;
整数OutPuthGrayIn;
Reg〔深度〕-1:0深度;
:
:
所做的工作是在函数的体外声明参数。这个限制将被固定在XST的未来版本中。
没有回复内容