描述
关键词:用户定义编码,XABEL,状态机
紧迫性:标准
一般描述:
指定用户定义的编码方案
基础1 .x状态编辑器,然后尝试综合
状态机给出一个类似于此的错误消息:
语法错误1031:未定义的标识符名称“SReG0”
以及其他几个错误消息。
这个错误的原因是状态寄存器声明。
在为用户定义生成的ABEL代码中被忽略
编码方案。
人们可以通过比较ABEL码来观察这种行为。
为二进制编码状态机生成
为用户定义的编码状态机生成的。在
八态状态机的声明部分
观察以下几行:
声明
“*******二进制编码状态机:SReG0******
SRe00G0节点Sistype“Reg”;
Xilinx属性“保存SReG00E0”;
SRe001节点Sistype“Reg”;
Xilinx属性“保存SRig01”;
SRe00G2节点Sistype“Reg”;
Xilinx属性“保存SRig02”;
SReG0= = SRe00E2,SRe00E1,SRe00Y0];
S1=0;
S2=1;
S3=2;
S4=3;
S5=4;
S6=5;
S7=6;
S8=7;
如图所示,S1…S7在α数值中被分配状态。
秩序。如果要使用用户定义的编码
相同的状态赋值:生成的代码看起来像:
“用户定义的编码状态机:SReG0******
“***
“*******!!!!!用户必须声明:状态寄存器和所有状态代码!!!!!
S1=0;
S2=1;
S3=2;
S4=3;
S5=4;
S6=5;
S7=6;
S8=7;
从上述代码非常明显的是状态寄存器
缺少定义。错误是由缺失导致的。
状态寄存器定义。
解决方案
一
如在一般描述中所示的只是剪切和粘贴。
从生成的代码中声明状态寄存器
二进制编码状态机的代码
用户定义的代码。从状态机编辑器:
综合与gt;HDL代码生成
当修改HDL编辑器中的代码时,请确保
编辑-gt;只读选项未选中,以便必要。
可以进行修改。还可以修改用户
使用HDL在生成的代码文件中定义编码状态
编辑。保存文件并直接从HDL综合
编辑(综合与综合)。现在,状态机的宏也可以直接从HDL编辑器创建。
注意:如果返回状态编辑器并重新生成
状态机的HDL代码
被改写。因此,必须确保
任何更改都必须进行必要的修改
到状态机。这可能是一个麻烦。
一段较长的时间。一个更简单的选择是分辨率2。
二
在状态机编辑器中按字母顺序标注状态。
命令一个用户定义的方式
数值顺序。例如,对于四态状态机:
S1=3;
S2=2;
S3=0;
S4=1;
这将根据用户定义的编码方案进行分类。
可以使用二进制编码实现这个相同的SeMe
只需将状态编辑器中的状态名重命名如下:
S3是A,S4是B,S2是C,S1是D。
S3是食蚁兽,S4是杂技演员,S2是建筑师,S1是窃贼。
等等…
由于状态编辑器分配状态编号分配
按上述顺序,上述更名将通过。
作为二进制编码,也将实现所需的
用户定义的编码。
生成的代码看起来像:
A=0;
B=1;
C=2;
d=3;
没有回复内容