此帖出自FPGA/CPLD论坛
最新回复
举个例子,比如是CRC32, 数据BUS宽是32,PERL过程如下
my $datapath = 32;
my $polynomial = "111011011011100010000011001000001";
for ($i = 0; $i < $datapath; $i++) {
my $bit = $datapath - 1 - $i;
my $feedback = "data_in\[$bit]^$state[31]";
for ($j = 31; $j > 0; $j--){
if($polynomial[$j]){ $nstate[$j] = "$state[$j-1]^$feedback"; }
else { $nstate[$j] = "$state[$j-1]";}
$nstate[$j] = optimize_xor($nstate[$j] );
}
$nstate[0] = optimize_xor($feedback);
@state = @nstate;
}
最后得到的@state 就是你看到的crc_out了。当然,数据全部输完之后根据CRC算法还要每个比特取反。
详情
回复
发表于 2010-10-25 04:11
| ||
|
||
| |
|
|
| |
|
|
回复 板凳 fre777 的帖子
此帖出自FPGA/CPLD论坛
赞赏 | ||
|
||
EEWorld Datasheet 技术支持
EEWorld订阅号
EEWorld服务号
汽车开发圈