[an error occurred while processing this directive]
Программа для расчета LUT CRC16
(«Телесистемы»: Конференция «Языки описания аппаратуры (VHDL и др.))

миниатюрный аудио-видеорекордер mAVR

Отправлено Stewart Little 05 сентября 2002 г. 10:36
В ответ на: Ответ: Если не затруднит то про таблицу мне тоже интересно отправлено Arhipov 04 сентября 2002 г. 17:37

#include

/* Образующий полином для CRC
/* X^16+X^15+X^2+X^0 */

#define CRC16 0xa001

FILE *f_ptr;

void main(void)
{ unsigned short i,j,curr_crc;
unsigned char k;
unsigned short *crc_tbl,*index;

if((crc_tbl=(unsigned short *)malloc(512)) == NULL)
{ printf("Insufficient memory.\n"); exit(0); }

index=crc_tbl;

for(i=0;i<256;i++)
{ j=i;
curr_crc=0;
for(k=8;k>0;k--)
{ if( (j ^ curr_crc) & 0x0001 )
curr_crc=(curr_crc >> 1) ^ CRC16;
else curr_crc>>=1;

j>>=1;
}
*index=curr_crc;
index++;
}

index=crc_tbl;

f_ptr=fopen("crc16tab.c","wt");
fprintf(f_ptr,"unsigned short crctab[] = {\n\t");
for(i=0;i<256;i++)
{ if(((i % 8) == 0) && (i > 0)) fprintf (f_ptr,"\n\t");
fprintf(f_ptr," 0x%04x",*index);
index++;
if(i != 255) fprintf(f_ptr,",");
else fprintf(f_ptr," };\n");
}

free(crc_tbl);
fclose(f_ptr);
exit(0);
}

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru