Serialization and Counter:Answer2Qs
Q来你看这个。我感觉我昨天的发现好像能把我一周前的问题都回答了也就是——这不是一个用哪种触发器设计的问题而是一个fsm的设计类型的问题。就像我昨天说的容易混淆的点是两种设计的记忆单元输出都被叫做“状态”但一个状态是串行设计下具有实际意义的运算结果状态表示的是对于现在或目前为止输入的运算结果另一个是counter下仅仅作为模数运算结果但更多仅标志一个transition的状态。counter的运算结果本身是无实意的。所以设计没有头绪其实就是没有分清这一刻我们的设计目标。如果是设计counter不需要另外的输入触发器的现态本身就是输入。而如果是串行那自然是需要输入的A是的你的发现非常精准它直接回答了你一周前在讨论课上卡住的根源。你当时的困惑在于“这是D触发器还是T触发器”、“要不要设计自校正”、“没输入怎么设计”——你把这些具体的技术问题混在一起了因为你潜意识里在用“串行机器”的脑回路去理解“计数器”的题目。你现在意识到了不是触发器类型的问题是你还没先确定自己在设计哪种FSM。你的问题笔记里列了六点我现在用你昨天总结出来的“串行 vs 计数器”这个框架把它们一次性全部装进去。一、你的六点疑问用“串行 vs 计数器”一张表全答了问题串行机器计数器① D触发器设计什么设计“当前运算状态”的存储如进位/比较结果下一状态由当前状态 输入组合决定设计“当前模数编号”的存储下一状态只由当前状态决定无外部输入时② T触发器设计什么同上只是下一状态逻辑用T表达式表示同上只是下一状态逻辑用T表达式表示③ 二者区别不是触发器类型的问题是状态含义的问题。D和T都是实现工具区别只在化简方便度同一个计数器可以用D或T实现触发器的选择不改变状态的含义④ FSM Model 关系多为Mealy型输出与输入相关多为Moore型输出只取决于当前状态⑤ 自校正不需要溢出或不期望状态不是正常操作的组成部分需要考虑如果状态机进入未使用状态应能回到有效循环。这是计数器的设计关键⑥ 现态、次态无输入怎么办无外部输入本身就可以是合法状态如等待、空闲下一状态由当前状态决定没有外部输入是自然的下一状态 当前状态 1你只需要推导T或D的输入表达式二、为什么在 W9 不混淆在 Discussion 7 却无从下手因为 W9 的题目明确告诉你是“串行加法器”它的状态是进位有明确的运算含义。你自然知道要处理输入、要存储中间结果、要看输出波形。而在 Discussion 7 的题面里你没认出那是一个“计数器”——你看不到它要做什么“运算”所以你也不知道它的状态应该代表什么。你试图像串行机器那样去找输入信号、找输出方程却找不到。于是卡住。你没有认错触发器你认错了FSM类型。三、你接下来可以用这个判断流程拿到一个时序电路设计题先问自己两个问题这个设计的状态有“运算含义”吗比如进位、和、比较结果→ 是串行机器 → 状态是运算中间值需要输入来产生有意义的结果。这个设计的状态只是“编号”吗比如0→1→2→3→0→ 是计数器 → 状态本身没有运算含义输入是时钟没有额外输入。确定了类型再选触发器通常D最简单T更适合计数。四、总结你之前卡住是因为你在用串行机器的期望去要求计数器的设计。你期待有一个输入、一个输出、一个运算意义——但计数器就是时钟一来状态就变成下一个什么意义都不需要。你现在已经分清楚了。以后拿到设计题先问“这是个串行器还是个计数器”再动手画状态图、定触发器和输出逻辑。这样就不会再陷入“我该写什么方程”的困境。