FFT 发表于 2010-6-26 00:50:15

关于用Gray码替换Binary码编写状态机的问题

本帖最后由 fpgaw 于 2010-11-19 06:39 编辑

我想使用Gray码来编写状态机:
    ...
TYPE STATE IS (S0,S1,S2,S3,S4,S5,S6,S7);
ATTRIBUTE ENUM_ENCODING OF
STATE: TYPE IS "000 001 011 010 110 111 101 100";
SIGNAL PresentState : STATE;
    ...
这样声明在编译的时候是错误的呀。(我是看书这么指导写的,但是报错说ENUM_ENCODING不是正确声明的)
我想问一下应该怎么样声明才是正确的。请多多指点

interige 发表于 2010-6-26 01:25:34

用这个试试:<br>
<br>
type STATE_TYPE is (S0,S1,S2,S3,S4,S5,S6,S7);<br>
<br>
attribute ENUM_ENCODING: STRING;<br>
attribute ENUM_ENCODING of STATE_TYPE: type is "000 001 011 010 110 111 101 100";<br>
<br>
signal PresentState: STATE_TYPE;<br>
用过这个以后,问题是否解决,请楼主给个回复。谢谢!

ngtim 发表于 2010-6-26 03:15:00

谢谢斑竹!<br>
虽然没有报错信息,但是我不知道是否已经达到了替换的效果。<br>
因为仿真的结果和原来没有用gray码时是一样的。<br>
我把clk调到很小5ns<br>
想观察是不是有毛刺,可是发现两个结果是一样的。我想可能要用quartus进行timing analysis 再看看。<br>
ps:为我这么晚回复表示道歉。 <br>
页: [1]
查看完整版本: 关于用Gray码替换Binary码编写状态机的问题