资源描述:
《crc校验码MATLAB和FPGA实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.掌握按字节编码的过程,试着写出CRC校验编码的Matlab程序?%mainprogramclearall;input=[1100]CRC_Number=[381216];forcrc_index=1:size(CRC_Number,2)crc_no=CRC_Number(crc_index)output=crc_add(input,crc_no)[output_after_check,indicate]=crc_check(output,crc_no)endfunction[output,in
2、dicate]=crc_check(input,crc_no)%thefunctionisproposedfordeletingcrcbitsfromtheinputsequencen=size(input,2);generator=zeros(1,crc_no+1);output=zeros(1,n-crc_no);switchcrc_nocase3generator=[1011];case8generator=[110011011];%D^8+D^7+D^4+D^3+D+1case12gene
3、rator=[1100000001111];%D^12+D^11+D^3+D^2+D+1case16generator=[10001000000100001];%D^16+D^12+D^5+1case24generator=[1100000000000000001100011];%D^24+D^23+d^6+D^5+D+1otherwisefprintf('Pleasethenumberofcrcbitsshouldbe8121624');endoutput=input(1:n-crc_n
4、o);forii=1:n-crc_noif(input(1)==1)input(1:crc_no+1)=mod((input(1:crc_no+1)+generator),2);endinput=[input(2:end)input(1)];endifsum(input)==0indicate=0;elseindicate=1;endfunction[output]=crc_add(input,crc_no)%thefunctionisproposedforaddingcrcbitstothein
5、putsequencek=size(input,2);generator=zeros(1,crc_no+1);output=zeros(1,k+crc_no);switchcrc_nocase3generator=[1011];case8generator=[110011011];%D^8+D^7+D^4+D^3+D+1case12generator=[1100000001111];%D^12+D^11+D^3+D^2+D+1case16generator=[10001000000100001];
6、%D^16+D^12+D^5+1case24generator=[1100000000000000001100011];%D^24+D^23+d^6+D^5+D+1otherwisefprintf('Pleasethenumberofcrcbitsshouldbe8121624');endoutput(1:k)=input;forii=1:kif(output(1)==1)output(1:crc_no+1)=mod((output(1:crc_no+1)+generator),2);en
7、doutput=[output(2:end)output(1)];endoutput=[inputoutput(1:crc_no)];2.如何设计FPGA实现CRC校验计算?32位并行数据CRC-16校验码的FPGA实现表 32位CRC-16编码器的端口说明clkinput系统时钟crc_rsetinputCRC生成器复位sdatainput输入数据crc_outoutput输出CRC校验码其中VHDL代码如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTI
8、TYCRC16ISPORT(sdata:INSTD_LOGIC_VECTOR(31DOWNTO0);clk:INSTD_LOGIC;crc_rset:INSTD_LOGIC;crc_out:OUTSTD_LOGIC_VECTOR(15DOWNTO0));ENDCRC16;ARCHITECTUREthOFCRC16IS SIGNALD:STD_LOGIC_VECTOR(31DOWNTO0); SIGNALR,crc_temp:STD_LOGIC_VECTOR(15DOWNTO0);B