hdlc規程主要由幀結構、規程要素、規程類別三個部分組成[1]。為了使fpga的設計能夠實現hdlc的基本功能並能按照各項標準的規定靈活採用不同的crc校驗演算法,首先回顧一下hdlc基本的幀結構形式。
hdlc是面向位元的鏈路控制規程,其鏈路監控功能通過一定的位元組合所表示的命令和響應來實現,這些監控位元和資訊位元一起以幀的形式傳送。
以下是iso/iec 3309標準規定的hdlc的基本幀結構。
起始標誌
位址資料
控制資料
資訊資料
幀校驗序列
結束標誌
01111110
8bits
8bits
8bits *n
16或32bits
01111110
constantine:原文中有點小錯誤,資訊資料不是只有8bits,而是8bits的倍數,最小可以為0,比如監控幀就一定是0。另外在資訊資料後面還有一段填充資料(8bits *n),主要是hdlc協議計算出fcs後需要進行「插零」操作。
其它的hdlc標準也有類似的幀結構。每幀的起始和結束以"7e"(01111110)做標誌,兩個"7e"之間為資料段(含位址資料、控制資料、資訊資料)和幀校驗序列。幀校驗採用crc演算法,對除了插入的"零"以外的所有資料進行校驗。為了避免將資料中的"7e"誤為標誌,在傳送端和接收端要相應地對資料流和幀校驗序列進行"插零"及"刪零"操作。
各種hdlc間的區別之一是幀校驗序列的crc演算法不同,這種不同表現在幾個方面:
a. 幀校驗序列的位數不同,如16位和32位等。
b. crc生成多項式不同,如對於16位的crc,ccitt v.41標準的多項式是x16 + x12 + x5 + 1,ansi crc-16標準的多項式是x16 + x15 + x2 + 1等。
c. crc序列的初始化條件不同,如可以初始化為全"0"、全"1"等。
d. crc計算結果的處理方式不同,如可以直接把crc結果傳送,或對crc結果取反後再傳送等。
e. 對接收到的資料做crc校驗時,合格判據不同。因為有了上述的不同處理,自然會得到不同的結果,由此造成合格判據不同。例如有的標準以校驗結果"1d0f"判為無錯誤[2]。而有的asic晶元以校驗結果"f0b8"判為無錯誤[3]。
顯然,對於這些應用,可程式設計邏輯晶元正可以發揮自己的特長。
constantine:hdlc採用x16 + x12 + x5 + 1這個多項式。
CRC校驗和CRC各種演算法
crc校驗和crc各種演算法 1 簡介 crc即 迴圈冗餘校驗碼 cyclic redundancy check 是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查 crc 是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收...
CRC的校驗原理
一 基本原理 crc檢驗原理實際上就是在乙個p位二進位制資料序列之後附加乙個r位二進位制檢驗碼 序列 從而構成乙個總長為n p r位的二進位制序列 附加在資料序列之後的這個檢驗碼與資料序列的內容之間存在著某種特定的關係。如果因干擾等原因使資料序列中的某一位或某些位發生錯誤,這種特定關係就會被破壞。因...
CRC校驗的原理
crc全稱是 cyclic redundancy check,翻譯過來就是 迴圈冗餘校驗碼。是在資料通訊領域中一種十分常用的查錯校驗碼,和串列埠通訊中常用的奇偶校驗是屬於同一種型別的。都是進行資料查錯的演算法,而不具有糾錯能力。資料傳送方 tx 與接收方 rx 進行交換時,採用crc進行資料檢錯時,...