CRC最後產生結果要顛倒
這邊有個棘手的問題.....我已經可以產生並行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顺序调整后的结果。
- assign swap_crc5[4] = crc5[0];
- assign swap_crc5[3] = crc5[1];
- assign swap_crc5[2] = crc5[2];
- assign swap_crc5[1] = crc5[3];
- 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楼的方法即可
