CRC循环编码的Verilog实现

浏览:
字体:
发布时间:2013-12-10 00:21:00
来源:
迷茫了几天,痛苦了几天,今天终于把CRC循环编码的Verilog代码搞定了,也许是心情好转的缘故吧,不管怎么说,终究是做出来了,之前写的代码,也没找出是什么原因,不管输入什么,编码输出总是同一码元,郁闷~~今天重新写了一遍,原理还是一样,结果却是意料之中的,不管了,以后有时间再找原因吧,现在把写好的代码分享一下,希望大家提出意见

      Verilog代码如下:
module code_crc(clk,reset,data,out);
input clk,reset;
input[7:0] data;
output[15:0] out;
reg[15:0] out;
//变量声明
reg[16:0] s;
integer i;

always@(posedge clk)
begin
 if(!reset)
  begin
 s=17'b0;
 out=16'b0;
  end
 else
  begin
   s={data[7:0],9'b0};
 begin
    for(i=7;i>0;i=i-1)
   begin
    if(s[16]==0)              //若第一位为0,左移一位;
     s=s<<1; 
  else begin
    s=s^17'b11000000000000101;/*若第一位为1,则与生成多项式进行异或操作;*/
  s=s<<1;        //左移一位;
       end
   end
   out=s[15:0];               //s的后16位即为校验位;
 end
  end
end
endmodule
       上代码中,只是实现输出了校验位,编码结果如何计算就不再啰嗦,相信大家都会了~~附上仿真图,如下:

>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2024 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();