如何最明智地设计用于初始化芯片的 VHDL 状态机。
我当前的设计是(伪代码):
....
....
案例状态:
当 s0 =>
VHDL_CODE_FOR_WRITING_VALUE_TO_REGISTER
状态 := s1;
当 s1 =>
VHDL_CODE_FOR_WRITING_ANOTHER_VALUE_TO_REGISTER
状态 := s1;
当 s2 =>
DO_SOMETHING_ELSE_TO_FINISH_INIT
....
....
最终情况;
s0 和 s1 中的代码仅因写入寄存器的值不同而不同。
这让我觉得一定有一种更聪明的方法(仍然可以合成)?
让我觉得有些事情可以做得更聪明的是“不要重复自己”这句话,但我不确定这是否适用于 VHDL。
如果在状态 s0 和 s1 中有共同的分配,请将其从 case 语句中取出。
case state:
when s0 =>
a <= '0';
b <= '1';
c <= '0';
nextState <= s1;
when s1 =>
a <= '0';
b <= '1';
c <= '1';
nextState <= s2;
when s2 =>
a <= '1';
b <= '0';
c <= '1';
endcase;
...会成为...
a <= '0';
b <= '1';
c <= '1';
case state:
when s0 =>
c <= '0';
nextState <= s1;
when s1 =>
nextState <= s2;
when s2 =>
a <= '1';
b <= '0';
endcase;
...或者如果这不合适,请将代码放入一个函数中并在每种情况下调用它。
不过,VHDL 对此没有任何具体内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)