▼Hiroyuki Naitoさん:
>▼Hiroyuki Naitoさん:
>>図1.7の論理回路をシミュレータにかけると意図したとおりに、
>>LED[1]/LED[0]は0/0→0/1→1/0→0/0を繰り返しますが、
>>図1.8の回路は、0/0→0/1→0/0→0/1を繰り返します。
>>つまりLED[0]のみ点滅を繰り返し、LED[1]は消灯したままです。
>>
>>これは正しい動作と考えていいのでしょうか。
>
>自分で質問を書いている途中で気づきました。internal_regでリセット
>(0/0)がかかると、次のクロックでは意図したように0/0→0/1に遷移し、
>次のクロックではまたリセットがかかるという動作を繰り返していました。
>
>表1.4の状態遷移表にはLED[1]が1になる組合せがあったので、どこかの
>タイミングでLED[1]が点灯するのではないかと思ってしまいました。
誌面のソースコードをシミュレータにて追実験をいただて、有難うございます。
試していただける読者様がいることは、執筆の励みになります。
ご質問いただいた内容ですが、シミュレータで再現いただいた通り、LED[1]は0のまま変化しません。
ただし、初期値を(LED[1],LED[0],internal_reg)=(0,1,1) にした場合に限り、
(LED[1],LED[0],internal_reg)=(0,1,1) (1,0,0) (0,0,1)(0,1,0)と、1周器だけLED[1]が1になります。
せっかくLED[1]があるのに、ほとんどの場合で0のまま変化しないのは、無駄であるかのようにも見えます。
図1.8の回路図は、動作は不自然ではありますが、宣言したフリップフロップが2種類になった場合のverilogコードの例として、掲載させていただきましたこと、ご理解いただけますと幸いでございます。