您如何最智能地设计VHDL状态机来初始化芯片 .
我目前的设计是(伪代码):
.... .... case state:当s0 => VHDL_CODE_FOR_WRITING_VALUE_TO_REGISTER state:= s1;当s1 => VHDL_CODE_FOR_WRITING_ANOTHER_VALUE_TO_REGISTER state:= s1;当s2 => DO_SOMETHING_ELSE_TO_FINISH_INIT .... ....结束案例;
s0和s1中的代码仅与写入寄存器的值不同 .
这让我觉得必须有一个更聪明的方式(仍然是Synthesize能够)?
是什么让我觉得可以做得更聪明,是“不要重复自己”,但我不确定这适用于VHDL .
2 回答
如果在状态s0和s1中有共同的赋值,请将其从case语句中拉出 .
...会成为...
...或者如果这不合适,请将代码拉入函数并在每种情况下调用它 .
虽然没有关于此的VHDL具体内容 .
虽然VHDL回答者(包括我)的持续克制是“思考硬件,而不是软件”,但这次软件思维过程是为你服务的那个:)
通常的don't repeat yourself(DRY)解决方案是在函数或过程中封装所需的行为 . 你可以用VHDL做到这一点,任何有用的工具都可以 .