阿昌 發問時間: 電腦與網際網路程式設計 · 1 0 年前

c++模擬一個實體層的訊號同步問題??

請教各位大大或高手:

請問如何用c++來寫一個網路的實體

層訊號同步的程式

不知是否有source code可參考 還有網

路上google訊號同步和signal synchronous

等等的關鍵字 想說先了解訊號同步的

步驟或動作是如何做到的 才能開始寫

( 例如: A點的訊號是010111..... A要把7

個bytes的preamble同步訊號傳給B

B要做訊號同步化的動作~ 這樣

A才能正確的把資料傳送給B )

但都沒找到需要的 毫無頭緒ing 希望各

位大大能給點方向或建議~~ 拜託

感激不盡!!

2 個解答

評分
  • Inunu
    Lv 5
    1 0 年前
    最佳解答

    如果你只是想要模擬, 隨便要用 IPC, COM port 或是 TCP/IP 去當作只送 0 與 1 的 bit stream 都能勝任.

    我是嫌上面作法太麻煩, 會把那些數據資料寫到檔案裡, 或甚至做一個 array 在程式碼裡頭, 讓 signal decoder 讀出來做 pattern matching 測試, 以後再接上適當的輸入介面.

    Encoder 部份很容易, 只要把 byte 資料轉成你想要的輸出資料就可以. 重點會放在 decoder 的 module testing. 不過拿得到 0 與 1 的 bit 說明你的前景已經是一片光明, 說不定用字串比較就可以了... 許多人還是拿 analogue value 要作 decoding, 看到一個數字根本沒辦法直接判定這個值屬於 0 還是 1, 還得用 sliding window 方式求出一個區域的參考值作為指引, 非常麻煩.

    Decoder 部份通常是 state machine 設計, 依目前 state 和輸入資料決定進行的動作和下一個 state. 這設計可以一筆一筆消費資料. 只要有辦法判定開始和結束, 解出正確的 byte data 就足夠了. 唯一比較麻煩的是有時需要回朔, 例如你從第 89 筆資料開始比對到這可能是一個 sync word, 但一陣子後到了第 103 筆發現它其實不是 sync word, 這時通常得回朔到之前的下一筆, 也就是第 90 筆再繼續.

    當然還有很多其他考量, 像是否用 circular buffer, 需花多少時間 decode 等量的資料屬於設計方面. 這些你應該依進來的資料型態和需求, 大概有個譜才對.

    真正遇到的問題通常來自實體層或硬體的限制, 如 signal strnegth, error margin, timing requirement, data rate... 當 decoder 基本測試可用後, 可能需要設法改善並增加它所能允許的誤差程度來配合. 不過那偏向整合部份, 是很後面的步驟. 目前不要想得太複雜. 先當成簡單的加密和解密程式把你的 encoder 與 decoder 做好, 輸出輸出用檔案或自己處理就好.

    • 登入以對解答發表意見
  • 1 0 年前

    建議你先去看相關的spec 或是rfc 定義得滿清楚的喔

    • 登入以對解答發表意見
還有問題?馬上發問,尋求解答。