! ! BDS architecture description for HEC circuit, which computes ! the HEC of a 32-bit header. ! r contains the CRC bits. ! l contains the initial values of CRC bits; initialized to 'O' in this case. ! c represents the coset polynomial. ! Refer to TurboChannel-ATM Interface document for derivation of equations. ! Note that you can get rid of all 'l in one operation ! on 32 bits, four partial results are computed first on 8 bits each. MODEL hec r<7:0> = h<31:0>; constant l<7:0> = 00000000#2; constant c<7:0> = 01010101#2; ROUTINE hec; r<7> = ((((((((((((((((l<3> XOR l<1>) XOR l<0>) XOR h<31>) XOR h<30>) XOR h<28>) XOR h<23>) XOR h<21>) XOR h<19>) XOR h<18>) XOR h<16>) XOR h<14>) XOR h<12>) XOR h<8>) XOR h<7>) XOR h<6>) XOR h<0>); r<6> = (((((((((((((((((((((((l<7> XOR l<3>) XOR l<2>) XOR l<1>) XOR h<30>) XOR h<29>) XOR h<28>) XOR h<24>) XOR h<23>) XOR h<22>) XOR h<21>) XOR h<20>) XOR h<19>) XOR h<18>) XOR h<17>) XOR h<16>) XOR h<15>) XOR h<14>) XOR h<13>) XOR h<12>) XOR h<9>) XOR h<6>) XOR h<1>) XOR h<0>); r<5> = (((((((((((((((((l<7> XOR l<6>) XOR l<3>) XOR l<2>) XOR h<29>) XOR h<28>) XOR h<25>) XOR h<24>) XOR h<22>) XOR h<17>) XOR h<15>) XOR h<13>) XOR h<12>) XOR h<10>) XOR h<8>) XOR h<2>) XOR h<1>) XOR h<0>); r<4> = ((((((((((((((((((l<6> XOR l<5>) XOR l<2>) XOR l<1>) XOR h<30>) XOR h<29>) XOR h<26>) XOR h<25>) XOR h<23>) XOR h<18>) XOR h<16>) XOR h<14>) XOR h<13>) XOR h<11>) XOR h<9>) XOR h<7>) XOR h<3>) XOR h<2>) XOR h<1>); r<3> = (((((((((((((((((((l<7> XOR l<5>) XOR l<4>) XOR l<1>) XOR l<0>) XOR h<31>) XOR h<30>) XOR h<27>) XOR h<26>) XOR h<24>) XOR h<19>) XOR h<17>) XOR h<15>) XOR h<14>) XOR h<12>) XOR h<10>) XOR h<8>) XOR h<4>) XOR h<3>) XOR h<2>); r<2> = (((((((((((((((((l<6> XOR l<4>) XOR l<3>) XOR l<0>) XOR h<31>) XOR h<28>) XOR h<27>) XOR h<25>) XOR h<20>) XOR h<18>) XOR h<16>) XOR h<15>) XOR h<13>) XOR h<11>) XOR h<9>) XOR h<5>) XOR h<4>) XOR h<3>); r<1> = (((((((((((((((l<5> XOR l<3>) XOR l<2>) XOR h<29>) XOR h<28>) XOR h<26>) XOR h<21>) XOR h<19>) XOR h<17>) XOR h<16>) XOR h<14>) XOR h<12>) XOR h<10>) XOR h<6>) XOR h<5>) XOR h<4>); r<0> = (((((((((((((((l<4> XOR l<2>) XOR l<1>) XOR h<30>) XOR h<29>) XOR h<27>) XOR h<22>) XOR h<20>) XOR h<18>) XOR h<17>) XOR h<15>) XOR h<13>) XOR h<11>) XOR h<7>) XOR h<6>) XOR h<5>); r = r XOR c; ENDROUTINE; ENDMODEL;