如何将有限状态机编码为二进制字符串?
How to encode finite state machine as a binary string?
如何将有限状态机编码/解码为二进制字符串?
F: [0,1,00,01,...] -> [fsm1, fsm2,...], |fsm1|=<|fsm2|
Decode: Binary string -> FSM
为了表示 FSM,状态图可以用 DOT 格式编码:
https://en.wikipedia.org/wiki/DOT_%28graph_description_language%29
要在硬件中实现 FSM,硬件描述语言是合适的工具:
https://www.microsemi.com/document-portal/doc_view/130043-state-machine-an
要在软件中实现 FSM,可以通过一两次查找 table 来捕获机器。
对于 Mealy 机器,一个 LUT 就足够了,其中输出是用状态转换定义的:每个(状态,输入)组合将索引到一个(状态,输出)元组。
Moore 机器 - 输出由状态决定 - 需要第二次查找:上面的 table 将只产生状态,第二个 table 将该状态映射到它的输出.
一旦这些 table 以您选择的格式表示,比如 JSON,那么序列化应该很容易。
如何将有限状态机编码/解码为二进制字符串?
F: [0,1,00,01,...] -> [fsm1, fsm2,...], |fsm1|=<|fsm2|
Decode: Binary string -> FSM
为了表示 FSM,状态图可以用 DOT 格式编码: https://en.wikipedia.org/wiki/DOT_%28graph_description_language%29
要在硬件中实现 FSM,硬件描述语言是合适的工具: https://www.microsemi.com/document-portal/doc_view/130043-state-machine-an
要在软件中实现 FSM,可以通过一两次查找 table 来捕获机器。
对于 Mealy 机器,一个 LUT 就足够了,其中输出是用状态转换定义的:每个(状态,输入)组合将索引到一个(状态,输出)元组。
Moore 机器 - 输出由状态决定 - 需要第二次查找:上面的 table 将只产生状态,第二个 table 将该状态映射到它的输出.
一旦这些 table 以您选择的格式表示,比如 JSON,那么序列化应该很容易。