我在 AHDL 中实现了一个控制单元 (UC),我应该对其进行仿真,看看它是否按照相应的 ASM 图中的定义工作。我用MAX+plus II模拟它,它并没有像我预期的那样工作,但我真的不能说是哪里出了问题,因为我不熟悉 AHDL,更不用说TABLE部分了。
这是我的控制单元:
子设计 EXP1_UC ( CLKUC:输入; 回复:输入; N1,N2,M1,M2:输入;
CLR1、CLR2、CLR3、EN1、EN2、EN3、SEL:输出; ) 多变的 UC:位机(CLR1、CLR2、CLR3、EN1、EN2、EN3、SEL) 与状态 ( s0 = B“1110000”, s1 = B“0001000”, s2 = B“0000100”, s3 = B“0000000”, s4 = B“0000010”, s5 = B“0000001”, s6 = B“0000011” ); 开始 UC.CLK = CLKUC; UC.RESET = RES; 桌子 UC, N1,N2,M1,M2 => UC; s0, 0, 0, X, X => s0; s0, 1, X, X, X => s1; s0, X, 1, X, X => s2; s1, X, X, X, X => s3; s2, X, X, X, X => s3; s3, 0, 0, 0, 0 => s3; s3, 1, X, X, X => s1; s3, X, 1, X, X => s2; s3, X, X, 1, X => s4; s3, X, X, X, 1 => s5; s4, X, X, X, X => s3; s5, X, X, X, X => s6; s6, X, X, X, X => s3; 茶几; 结尾;
模拟中有两种我不明白的情况:
1) 当前状态为 S3 且输入为 M1 = 1 且 M2 = 1 时,下一个状态为 S6。我不明白,因为在我看来,如果不先通过 S5,就无法进入 S6。
2) 当前状态为 S0 且输入为 N1 = 1 且 N2 = 1 时,下一个状态在仿真中定义为“12”。好吧,没有这样的状态......
谁能帮我?谢谢。
更新:
1)我必须使用 ADHL 和 MAX+plus II,即使它不是最好的工具组合,因为这是大学的文书工作,我没有编写代码(就像我说的,我只是应该模拟它,我不能改变它)。