70 likes | 307 Views
CRC-32 on Maxeler DFE. Authors: Klemen Košir, Matevž Žugelj Faculty for Computer and Information Science, Ljubljana. Algorithm. CRC-32 is used for the calculation of checksum for data transfer, compression, mobile networks, etc . T(n) = O(n ).
E N D
CRC-32 on MaxelerDFE Authors: Klemen Košir, Matevž Žugelj Faculty for Computer and Information Science, Ljubljana
Algorithm CRC-32 is used for the calculation of checksum for data transfer, compression, mobile networks, etc. T(n) = O(n). Our CRC-32 implementation does not use lookup tables and is relatively slow. We wanted to speed-up the algorithm by using a Maxeler machine.
Implementation for(i = 0; i < N; i++) { bit = crc.and(1); crc = 0xFFFFFFFF; mask = 0xEDB88320; crc = crc >> 1; if(bit ^ input[i] == 1) crc = crc ^ mask; } crc = ~crc;
Observations The algorithm does not have enough data reusability, therefore the more bits we send on the DFE at once, the slower the computation is. The execution time is higher compared to the CPU’s, because of the number of ticks we have to wait for out loopback to deliver the previous value. We are not sure if it is possible to implement this algorithm without a loopback, since we have loop data dependency. The algorithm works the fastest, if the stream delivers 1 bit at a time. If we send 1 bit at a time, there are even less arithmetic operations which speeds up the process even more.
Authors Klemen Košir klemen913@gmail.com Matevž Žugelj matevz.zugelj@siol.net