Design a digital circuit that encodes and decodes strings with CRC-8 algorithm with an optimal delay and number of components
Project presented in the Advanced Computer Architectures course (Universidade de Aveiro), 2017.
THe main goal of the project is to design different possible solutions in hardware, using VHDL, to encode and decode CRC-8 strings using the least possible number of components and with an optimal delay.
4 versions were made, with encoder, decoder, system design and test vector. The most optimized version is the version 4 (V4). It was also included the script used to optimize the used gates, with the calculation of Xor combinations of the used bits in each gate.
Below are presented the delay times and the number of gates in each versions:
Version with CRC polynomial processed in series Each block of xor0s is applied to all 16 bits
Block delay -> 2ns Overall delay -> 2*16=32 ns
Number of gates: Each xor block has 6 xor's. 6*16 = 96
Overall encoder delay + final Nor: 32+6=38 ns
Number of gates: Encoder gates + checker_8bit gates: 96+7=103
Synchronous version, with clock and shift register.
Delay for each clock cycle: Multiplexer delay + CRC calculation delay: 4+2=6ns
Counter delay is despicable, because is done in paralell, like the final comparation with the counter value. Register is synchronous, so it does not have an aditional delay besides the clock.
The clock must be 6ns.
2 cycles needed for the initial load: Overall delay: 18*6=108 ns
Number of gates (without register and counter gates): 23Mux gates + Remainder_CRC8 gates + Compare15 gates= 233+6+3=81
Overall encoder delay + final Nor: 108+8=116 ns
Number of gates: Encoder gates + checker_8bit gates: 81+8=89
Version with CRC bits calculated taking into account the components of the remainder of the division of the input bits by the generating polynomial.
Maximum block delay is the maximum block delay for each bit (xors with CRC are done in paralell): 8 ns.
Number of gates is the sum of all xors used in the blocks for each bit: 64
Overal encoder delay (xors with CRC are done in paralell) + final Nor: 8+6=14 ns
Number of gates: Encoder gates + Xor gates with CRC + final check8 gates: 64+8+7=79
Optimized V3, with lesser gates due to the combinations calculations
Delay: 8 ns
Number of gates 38 gates
Delay: Encoder delay + check_8 delay 8+6=14ns
Number of gates: 38+8(It is needed an Xor with the CRC bits)+7(to calculate check_crc)= 38+8+7=53
Diogo Ferreira
Luís Leira