在上一篇博文中, 我采用窮舉法來尋找合适的狀态序列——這是低效的, 且很容易出錯.
這裡介紹一種科學的方法, 可以幫助我們快速确定合适的狀态序列.
在本題中, 要求實作序列信号00010111, 那麼我們先選擇兩位: 00->00->01->10->01->11->11->10->00->...... 有重複狀态, 舍棄;
接下來選擇三位: 000->001->010->101->011->111->110->100->000->...... 沒有重複狀态, 則選擇該方案進行設計.
由此得到狀态序清單.
CLK順序 | Q2 | Q1 | Q0 |
1 | 1 | ||
2 | 1 | ||
3 | 1 | 1 | |
4 | 1 | 1 | |
5 | 1 | 1 | 1 |
6 | 1 | 1 | |
7 | 1 | ||
8 |
觀察狀态序清單後, 我們可以清楚地看到, 要求産生的序列信号00010111正好在Q2端順序産生, 是以這裡直接将Q2引出, 作為序列信号産生端, 而不用再去添加輸出變量了.
采用這種方法确定合适的狀态序列, 是既準确又高效的.
根據上面的分析得到下表.
CLK順序 | Q2 | Q1 | Q0 | D0 |
1 | ||||
1 | 1 | |||
2 | 1 | 1 | ||
3 | 1 | 1 | 1 | |
4 | 1 | 1 | 1 | |
5 | 1 | 1 | 1 | |
6 | 1 | 1 | ||
7 | 1 | |||
8 | 1 |
之後的步驟與上一篇博文相同, 這裡不再贅述. 讀者在閱讀本篇文章後, 能掌握這種快速确定狀态序列的方法即可.