AHDLでコントロールユニット(UC)を実装しており、それをシミュレートして、対応するASMダイアグラムで定義されているとおりに機能するかどうかを確認することになっています。MAX + plus IIを使用してシミュレートしましたが、期待どおりに機能しませんでしたが、AHDLに精通していないため、TABLEの部分は言うまでもなく、何が問題なのかはわかりません。
これが私のコントロールユニットです:
サブデザインEXP1_UC (( CLKUC:入力; RES:入力; 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; END TABLE; 終わり;
シミュレーションには、私が理解していない2つの状況があります。
1)現在の状態がS3で、入力がM1=1およびM2=1の場合、次の状態はS6です。私の見方では、最初にS5を通過せずにS6に行く方法はないので、わかりません。
2)現在の状態がS0で、入力がN1=1およびN2=1の場合、次の状態はシミュレーションで「12」として定義されます。まあ、そのような状態はありません...
誰か助けてもらえますか?ありがとう。
アップデート:
1)ADHLとMAX + plus IIを使用する必要があります。これは大学の事務処理であり、コードを記述しなかったためです(私が言ったように、私はそれをシミュレートすることになっています)。 、変更できません)。