FPGA编码风格之串行并行资源.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FPGA编码风格之串行并行资源

串行比较和并行比较问题这个问题的背景是目前我们的设计中含有大量的crc计算校验的功能,走查代码发现,很多模块在处理CRC校验上做的很简单粗暴,导致了很多资源的不必要浪费,下面这段代码就是一个抽象的比较过程,涉及3种当前代码中的实现方式,这里分析如下:简单粗暴的比较方式代码,RTL和资源占用如下:always@(posedge I_125m_clk or negedge I_rst)begin if(!I_rst) begin S_data_buf = 32d0 ; end else begin if(I_en) begin S_data_buf = {S_data_buf[23:0],I_data}; end else begin S_data_buf = S_data_buf ; end endendalways@(posedge I_125m_clk or negedge I_rst)begin if(!I_rst) begin S_en_buf = 1b0 ; end else begin S_en_buf = I_en ; endendalways@(posedge I_125m_clk or negedge I_rst)begin if(!I_rst) begin O_flag = 1b0 ; end else begin if(!I_en S_en_buf) begin if(S_data_buf != I_crc) begin O_flag = 1b1 ; end else begin O_flag = 1b0 ; end end else begin O_flag = O_flag ; end endend资源占用情况:改进方式1always@(posedge I_125m_clk or negedge I_rst)begin if(!I_rst) begin S_cnt = 2d0 ; end else begin if(I_en) begin S_cnt = S_cnt + 1b1 ; end else begin S_cnt = 2d0 ; end endendalways@(posedge I_125m_clk or negedge I_rst)begin if(!I_rst) begin O_flag = 1b0 ; end else begin case(S_cnt) 2b00: begin if(I_data != I_crc[31:24]) begin O_flag = 1b1 ; end else begin O_flag = 1b0 ; end end 2b01: begin if(I_data != I_crc[23:16]) begin O_flag = 1b1 ; end else begin O_flag = O_flag ; end end 2b10: begin if(I_data != I_crc[15:8]) begin O_flag = 1b1 ; end e

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档