微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > CRC最後產生結果要顛倒

CRC最後產生結果要顛倒

时间:10-02 整理:3721RD 点击:
各位前輩....
這邊有個棘手的問題.....我已經可以產生並行CRC的verilog code,
而且也和其他站上的是生成出來的code是一樣
但是接下來的問題是我的需求是要最後出來的CRC結果要順序顛倒:
EX: 1100_0111==>1110_0011
查了相關的文件也沒有人有說到要怎麼做.....其他crc產生code的網站也產生都是順向的....沒看到有反向的
可否提供相關文件可以參考.....謝了大家

这个有难度吗?

我的需求是並行CRC直接算出高低位順序顛倒的結果(LSB.....MSB)
我自己根網路上的都是CRC算出結果都是(MSB.....LSB)
當然也可以CRC的(MSB.....LSB)出來後我再顛倒拉線就好......
但是當輸入資料&CRC poly.變動時我就要在手動去改.....很沒效率
可否請教樓上大神如何做?


用verilog写的话,直接bit相连就好了。以crc5为例,swap_crc5为Msb和Lsb顺序调整后的结果。

  1. assign swap_crc5[4] = crc5[0];
  2. assign swap_crc5[3] = crc5[1];
  3. assign swap_crc5[2] = crc5[2];
  4. assign swap_crc5[1] = crc5[3];
  5. assign swap_crc5[0] = crc5[4];

复制代码


如果是software处理,过程倒是复杂一些,因为程序不支持bit操作。
P.S. 是否方便提供一下你使用的并行CRC的参考文献。

樓上的....我的做法就很笨
先用手算推導....
再將推導過程中的規則性寫程式去生成可任意資料寬度& CRC poly.
我目前做的都要生成verilog

学习学习。哈啊哈哈哈

没看懂小编的意思:
如果是并行CRC
crc[0]=xxx
crc[1]=xxx
直接把0和1倒序不行?

xiaojia102003:
直接顛倒我試過是好像不行.....
當然前面的建議
做到crc結果出來最後在顛倒當然可以....
但是我的需求就是一邊算一邊顛倒.....等全部算完結果就是顛倒的

hi xiaojia102003,
我弒過了....應該不行
當然我也可以一般CRC算到最後......結果再高低位順序顛倒
但是我的需求就是CRC一邊在算的時後就一邊顛倒了.....最後結果出來就是顛倒值
而不需要再做其他動作

小编想做什么?多项式可配置的CRC?

CRC计算结果比特位交换的目的是什么?



    crc32用网站上生成的代码计算的校验值是正确的,如果在网上传输需要有一定的传输协议,输入值按字节颠倒,输出的crc校验值需要全部颠倒然后取反,这样的计算的值和软件中算法计算的值是一样的!

謝謝大家.....我參考前輩的東西而硬湊出來....
應該是我要的.......

4楼的方法即可

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top