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

主站蜘蛛池模板: 国产精品观看视频免费完整版| 日本黄色a视频| 一级片一区| 国产91久久久久久| 夜精品a一区二区三区| 国产亚洲成AⅤ人片在线观看| 亚洲人成网址| 欧美www在线观看| 美女黄网十八禁免费看| 国产手机在线观看| 久久久久亚洲av成人网人人软件 | 久久国产精品国产自线拍| 国产麻豆福利av在线播放| 欧美综合区自拍亚洲综合绿色| 国产精品手机视频| www精品久久| 亚洲福利视频网址| 欧美国产在线一区| 日韩无码真实干出血视频| 深爱婷婷激情网| 日本91视频| 91福利在线观看视频| 久久精品国产亚洲麻豆| 97青草最新免费精品视频| 国产一区二区精品福利| 国产黄网站在线观看| 久久免费视频播放| 国模视频一区二区| 久久91精品牛牛| 国产永久无码观看在线| 久久国产精品影院| 欧美亚洲国产日韩电影在线| 无码久看视频| 99久久精品免费视频| 无码AV高清毛片中国一级毛片| 91色在线观看| 激情综合图区| 久久精品国产91久久综合麻豆自制| 国产18页| 日本国产精品一区久久久| 亚洲啪啪网| 99久久精品国产精品亚洲| 国产欧美一区二区三区视频在线观看| 久热精品免费| 欧美午夜小视频| 香蕉精品在线| 米奇精品一区二区三区| 亚洲综合专区| 99久久精品国产综合婷婷| 国产精品理论片| 亚洲免费人成影院| 成人毛片免费观看| 国产精品人成在线播放| 五月婷婷导航| 97久久精品人人| 色悠久久综合| 亚洲日本在线免费观看| 国产福利在线观看精品| 亚洲精品高清视频| 免费一级α片在线观看| 香蕉色综合| 亚洲男人在线| 91在线播放国产| 国产又爽又黄无遮挡免费观看| 91九色视频网| 日本三区视频| 国产99精品久久| 国产99免费视频| 国产日韩欧美精品区性色| 2020国产精品视频| 91黄色在线观看| 亚洲Av激情网五月天| 97国产成人无码精品久久久| 一级全免费视频播放| a级毛片免费网站| 91网在线| 喷潮白浆直流在线播放| 久久99久久无码毛片一区二区 | 欧美色图第一页| 国产成人一区二区| 亚洲av无码人妻| 国产精品美人久久久久久AV|