我有一個關於CRC32在gnuradio中的非線性的問題。爲什麼CRC32在gnuradio中是非線性的?
我正在研究一個項目,我需要一個線性CRC32的含義:crc(a xor b)= crc(a)xor crc(b),其中a和b代表一個數據包。
在gnuradio中CRC32的實現默認是非線性的,所以我不得不修改代碼使其線性化。
我做了CRC背後的理論一些研究,我發現後面的非線性CRC實現2個原因:
1與線性CRC,我們可以有相同的CRC零2個不同的數據包,例如crc(0000 0000)= crc(00000 00 00000)。因此,如果我將附加零添加到僅包含零的數據包中,那麼CRC將無法檢測到錯誤(附加零)。第二個原因是,對於線性CRC,如果我將零添加到數據包的開頭,則CRC將無法檢測到錯誤。例如:crc(10010 1101)= crc(0000 1000 1101)
現在我的問題是: 當在兩個USRP之間傳輸數據包時,位可能有錯誤(例如由於SNR不好),所以有點「1 「可能會變成」0「,反之亦然。但是,我不認爲可以將這些比特添加到數據包中(如上所述的兩種情況),因此實施非線性CRC的原因不適用於gnuradio。
那麼爲什麼默認情況下我們在gnuradio中有一個非線性CRC?
而且,如果我在兩個USRP之間傳輸時使用線性CRC,那會是一個問題嗎?
謝謝