iT邦幫忙

1

Sequence Detector:用 FSM 與 Shift Register 精準偵測 "111"!

  • 分享至 

  • xImage
  •  

在數位電路設計裡,序列偵測器(Sequence Detector) 就像個「辨識器」,專門用來找特定的 0、1 序列,比如要偵測 "111"這段序列。序列偵測器在 數據傳輸、錯誤檢測、同步信號 等應用中非常常見,舉幾個例子來說:
• 數據傳輸:用來偵測 Start Bit,確保 UART、SPI、I2C 等協議正確讀取資料。
• 錯誤檢測:用來計算 1 的數量,判斷資料是否錯誤,應用於 Ethernet、Wi-Fi、SSD。
• 同步信號:偵測同步碼(Sync Pattern),確保發送端與接收端的時脈對齊,應用於 USB、PCIe、DDR 記憶體。

設計方式有兩種:
FSM(有限狀態機)法:用 D 觸發器 來記住輸入狀態,搭配邏輯閘 來決定下一步怎麼走。這種方法適合處理比較複雜的序列。移位暫存器法:把輸入數據存進 Shift Register,然後用邏輯閘比對,簡單直觀但比較不彈性。這次我們會用兩種方法,設計一個「看到三個連續的 1 就亮燈」的電路,利用 D 觸發器 + 邏輯閘 來讓它自動追蹤輸入的變化,準確偵測出 "111"!

FSM:
FSM 是一種狀態轉移的設計方法,用於需要精確控制狀態轉換的序列偵測。FSM 分為 Mealy 機和 Moore 機兩種,差異在於輸出是否直接被輸入影響。就是畫出state graph,然後化簡,得到電路
設計步驟:

  1. 定義狀態: 為每個可能的輸入序列定義一個唯一的狀態。
  2. 繪製狀態轉移圖: 根據輸入條件繪製狀態之間的轉移關係。
  3. 編碼狀態: 為每個狀編碼。
  4. 設計電路: 使用觸發器(如 D 觸發器)和邏輯閘實現狀態轉移和輸出。
    範例:
    https://ithelp.ithome.com.tw/upload/images/20250214/20171786N7mPOGeuM9.png
    假設需要偵測輸入序列 "111":
    • 狀態定義:
    S0:初始狀態,尚未偵測到 "1"。
    S1:已偵測到 "1"。
    S2:已偵測到 "11"。
    S3:已偵測到 "111",輸出1(偵測到序列111)。
    • 狀態轉移:
    S0 → S1(輸入為 1)
    S1 → S2(輸入為 1)
    S2 → S3(輸入為 1)
    S3 → S3(輸入為 1,重複偵測)
    此方法的優點是結構清晰,易於分析和調試,適用於複雜序列的偵測。
    https://ithelp.ithome.com.tw/upload/images/20250214/201717868H3Bt04MEd.png
    得到state table後,用K-map化簡,記得把next state的AB和y當成輸出
    https://ithelp.ithome.com.tw/upload/images/20250214/201717868CAYEm9XLB.png

最後根據化簡後的結果化出電路圖
https://ithelp.ithome.com.tw/upload/images/20250214/20171786VR5qoRffdL.png

輸入x不直接影響輸出y 所以是Moore machine
圖片參考此網站:
https://codestall.wordpress.com/2017/10/22/sequence-detection-of-3-1s-or-more-using-moore-model/

  1. 移位暫存器法:
    此方法利用移位暫存器將輸入位元串行移入,並與目標序列進行比較。
    設計步驟:
    配置移位暫存器: 設置與目標序列長度相同的移位暫存器。
    移入輸入位元: 每接收到一個新位元,將其移入暫存器,並將最早的位元移出。
    比較序列: 將暫存器內容與目標序列進行比較,若匹配則輸出有效信號。
    範例:
    偵測 "111" 序列:
    • 移位暫存器: 3 位元長度。
    • 操作: 將dff每個位元拉出來做and,若都為1則輸出1,反之,只要其中一個訊號是0輸出就是0。
    此方法的優點是實現簡單,適用於較短的序列偵測。
    https://ithelp.ithome.com.tw/upload/images/20250214/20171786qr6qOJPssd.png
    寫這篇文章,自己也學到不少,原來shift register 可以這樣用,這是之前學習時沒有注意到的,希望有幫助到跟我一樣的菜雞,有任何問題都可以留言討論喔

參考資料
https://www.geeksforgeeks.org/shift-registers-in-digital-logic/
http://mcatutorials.com/mca-tutorials-shift-registers.php
https://www.slideshare.net/slideshow/sequential-circuit-design2pdf/264820891


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言