999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

CRC16校驗碼移位算法及VHDL實現

2017-06-05 16:31:55王玉玲王燕鋒
電子技術與軟件工程 2017年7期

王玉玲++王燕鋒

摘 要 在數據輸出過程中,為保證數據的可靠性,通常會在數據的末尾加上校驗信息。CRC校驗技術編碼和解碼過程簡單,糾錯能力強,被廣泛應用于通信領域。本文介紹一種移位產生CRC校驗碼的方法,并給出了其VHDL實現及仿真分析。

【關鍵詞】CRC 校驗移位 CRC16 VHDL

在數據傳輸過程中,由于信道干擾,往往使得發送和接收的數據不一致。為了降低誤碼率,保證傳輸數據的可靠性,通常會改進信道的傳輸質量或在傳輸的數據中加入校驗信息。在各種校驗方法中,循環冗余校驗CRC(CyclicRedundancy Check)是一種最常用的方法。CRC校驗技術是一種十分有效的數據傳輸錯誤檢測技術,由于其編碼和解碼過程簡單,檢錯和糾錯能力強,廣泛應用于通信領域用于實現差錯控制。串行通信普遍應用于工業通信控制領域,如何提高數據的傳輸可靠性尤為重要,現有的串口在數據傳輸過程中加入CRC校驗可提高數據傳輸的可靠性。普通串行口不自帶CRC校驗功能,大多數應用中都是通過軟件編程計算CRC碼后再附加在數據末尾傳輸的,由于軟件執行耗費時間長,影響數據的傳輸速度。現場可編程門陣列FPGA (Field-Programmable Gate Array)在數字系統設計中已被廣泛使用。用硬件描述語言(VHDL)實現CRC校驗碼的計算,然后下載到FPGA芯片中,硬件實現CRC校驗,與軟件實現相比,對數據的傳輸速度影響較小。本文介紹一種CRC16校驗碼串行產生的方法,并給出了其VHDL實現及仿真分析。

1 CRC校驗原理

在發送方要發送的K位數據碼后,以一定的規則產生一個r位用于校驗的監督碼,附加在原數據后面,構成的信息碼為n=k+r位,因此,這種編碼又叫(n,k)碼。接收方根據通信雙方約定的規則進行校驗,確定數據是否出錯。這個規則即“生成多項式”。K位數據碼表示為M(x),選擇合適的CRC生成多項式G(x),G(x)的最高次冪為r。把M(x)左移r位,即M(x)*xr對G(x)做不借位除法(即異或運算),所得余數為CRC校驗碼,即:

其中R(x)為CRC校驗碼。發送方以上述原理生成校驗碼附加在數據末尾發送出去,接收方接收到的數據也對同樣的G(x)做除法,如果余數為0,則認為數據傳送無誤,否則按出錯處理。

2 CRC16校驗實現原理圖

常用的生成多項式有多種,如CRC4、CRC8、CRC16和CRC32等。計算CRC校驗碼可以用串行和并行的方法實現。串行實現電路結構簡單,但比較耗時,位數越多越費時。并行實現電路結構復雜,但節省時間。本文介紹一種采用CRC16生成多項式串行移位產生校驗碼的計算過程。生成多項式為G(x)=g16x16+g15x15+……+g1x+g0,在實際使用中,并不需要考慮最高位,它總是被舍棄的,因此只要考慮余下16個數據位。在串行通信中實現移位計算CRC16校驗碼的原理如圖1所示。

圖1中為乘法,⊕為異或。

圖1所示為CRC16校驗原理圖由D觸發器、與門和異或門構成。

實現原理:發送一個字節數據,末尾加入16位校驗碼。CRC16寄存器初始化為0,串行移入數據,CRC16寄存器左移1位,檢查移除位,如果為1,CRC16寄存器與生成多項式異或,結果存入CRC16寄存器,如果不為0,則僅僅移位,不做異或。循環進行24次后,C15……C0為所求校驗碼。用Cik表示上一次移位后CRC的值,Cik+1表示本次移位CRC的值,其關系如式2所示。式2中i=1,2,3,4,……,15。

用CRC16產生校驗碼由于G(x)并不是所有位都為1,因此其具體實現要簡單得多。G(x)=x16+x15+x2+1是CRC16生成多項式中最常用形式,舍棄掉最高位,編碼為1000 0000 0000 0011,由式2可知,Cik和Cik+1的關系如式3所示。式3中i=2,15,j=1,3,4……14。

用該生成多項式產生校驗碼,由于只有第15、2和0位為1,因此每次移位產生的CRC值中只要C15、C2及C0位和移出的位和對應的g值有關,CRC的其它位值都等于上次移位的CRC值中對應低一位的值。其產生校驗碼的原理圖只要在圖1中保留D寄存器及C15、C2和C0對應的異或門,其它位對應的乘法和異或可以全部省去,大大簡化了電路。

3 CRC校驗在FPGA中的實現和仿真

在FPGA中進行系統設計,可采用硬件描述語言(HDL)設計也可以采用原理圖的設計方法。本文采用兩者結合形式進行,采用自下而上的設計方法,先模塊化設計產生1位數據的CRC16校驗碼,然后頂層文件調用以上的模塊產生8位數據的CRC16校驗碼。頂層文件的實體定義為:

LIBRARY ieee;

USE ieee.std_logic_1164.all;

LIBRARY work;

ENTITY CRC16 IS

port(CLK : IN STD_LOGIC;

d : IN STD_LOGIC_VECTOR(7 downto0);

c:OUT STD_LOGIC_VECTOR(15 downto 0));END CRC16;

設計采用的編程環境為QUARTUS II。由實體的定義可知,輸入信號有8位數據(D) 和時鐘信號(CLK),輸出信號為16位CRC校驗碼。結構體的實現流程圖如圖2所示。

在編程基礎上,建立仿真文件,對以上VHDL實現CRC16校驗碼的程序進行仿真測試,結果如圖3所示,與手工計算的結構完全一致。如待傳送數據位00001110,采用G(x)=x16+x15+x2+1產生校驗碼,校驗碼碼為1000000000100111,與結果完全一致。

4 結束語

由以上VHDL設計的CRC校驗碼產生模塊,仿真分析后,在實驗室環境下,通過引腳配置,把程序下載到FPGA上進行測試,結果與預期的相一致,因此證明本設計思路及方法是可用的。但要在實際串口通信中使用,還需要進一步的分析和測試。

參考文獻

[1]梁海華,盤麗娜等.CRC查詢表及其并行矩陣生成方法[J].計算機科學,2012,39(6A):154-156.

[2]王良俊,馬琪.USB3.0中的CRC校驗原理與實現[J].現代電子技術:2011,34(18):170-171.

[3]任勇峰,莊新敏.VHDL與硬件實現速成[M].北京:國防工業出版社,2005.

[4]王月琴,楊恒新.CRC碼串并結合算法的研究與實現[J].計算機技術與發展,2014,24(06):103-105.

[5]趙鴻圖,李衛彬等.CRC編解碼算法及在通信規約DNP3.0中的應用[J].河南理工大學學報(自然科學版),2009.28(05):596-598.

作者簡介

王玉玲(1979-),女,江西省景德鎮市人.工學碩士學位。畢業于東華理工大學。現為湖州師范學院講師。研究方向為嵌入式系統、集成電路設計。

作者單位

湖州師范學院 浙江省湖州市 313000

主站蜘蛛池模板: 午夜国产大片免费观看| 亚洲天堂日本| 伊人久久福利中文字幕| 国产成人亚洲毛片| 天天摸夜夜操| 九九久久精品国产av片囯产区| 日本成人精品视频| 欧美日韩国产精品va| 亚洲av无码成人专区| 色婷婷在线影院| 国内精品久久久久久久久久影视| 中文字幕啪啪| 亚洲无码视频图片| 亚洲色欲色欲www网| 无码AV日韩一二三区| 国产成人综合亚洲欧洲色就色| 久久不卡国产精品无码| 日本免费福利视频| 激情无码字幕综合| 国产成人免费视频精品一区二区| 漂亮人妻被中出中文字幕久久| 99精品国产电影| h视频在线播放| 国产在线精品99一区不卡| 亚洲欧美h| 一级不卡毛片| 中文字幕天无码久久精品视频免费 | 久久99国产综合精品1| 欧美成人综合视频| 天堂网国产| 亚洲无码熟妇人妻AV在线| 毛片基地美国正在播放亚洲 | 国产新AV天堂| 天天色综网| 久久亚洲美女精品国产精品| 国产一级α片| 亚洲黄色激情网站| 午夜性刺激在线观看免费| 欧美另类一区| 国产精品无码影视久久久久久久| 黄色不卡视频| 亚洲天堂久久| 国产精品自拍露脸视频| 国产精品无码久久久久久| 久久婷婷国产综合尤物精品| 久久免费视频6| 成人免费网站久久久| 亚洲中文无码av永久伊人| 日日拍夜夜操| 99精品视频在线观看免费播放| 青青草一区二区免费精品| 亚洲国产日韩视频观看| 成人蜜桃网| 欧美精品啪啪| 高清免费毛片| 欧美性精品| 亚洲精品第一在线观看视频| 精品国产毛片| 91极品美女高潮叫床在线观看| 国产一区二区人大臿蕉香蕉| 久久6免费视频| 欧美激情一区二区三区成人| 沈阳少妇高潮在线| 91精品啪在线观看国产91九色| 五月婷婷导航| 亚洲区欧美区| 91精品专区国产盗摄| 亚洲久悠悠色悠在线播放| 免费人成黄页在线观看国产| 亚洲国产成人久久精品软件| 岛国精品一区免费视频在线观看| 国产精品永久在线| 精品午夜国产福利观看| 四虎影视8848永久精品| 伊人欧美在线| 精品视频一区二区三区在线播| 欧美精品成人一区二区在线观看| 91在线播放免费不卡无毒| 日韩在线中文| 国内精品免费| 成人噜噜噜视频在线观看| 色AV色 综合网站|