this is my c program
volatile alt_u16 crcCompute(void)
{
alt_u16 word;
int value;
int pat[4]={0x00000003,0x00000004,0x00000005,0x00000006};
//alt_u8 pat[8]={0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x04};
int mode;
//pat[0]=0x00000003;
printf("start crc\n");
IOWR(CRC_PERIPH_BASE,0,0x0000FFFF);
//value=IORD(CRC_PERIPH_BASE,0);
//printf("value= %x\n",value);
// value=IORD(CRC_PERIPH_BASE,1);
//printf("value= %x\n",value);
/*IOWR(SLAVE_REG_0_BASE,0,0x0000F0F0);
alt_dma_txchan_ioctl(tx,
ALT_DMA_TX_ONLY_ON,
(void*)(CRC_PERIPH_BASE+0x4 ));
alt_avalon_dma_send (tx,
(int)pat,
16 ,
//dma_done,
NULL,
NULL);*/
IOWR_ALTERA_AVALON_DMA_STATUS(AVALON_DMA_BASE, 0);
IOWR_ALTERA_AVALON_DMA_CONTROL(AVALON_DMA_BASE,0);
IOWR_ALTERA_AVALON_DMA_RADDRESS(AVALON_DMA_BASE, (int)pat);
IOWR_ALTERA_AVALON_DMA_WADDRESS(AVALON_DMA_BASE, (CRC_PERIPH_BASE+0x4));
IOWR_ALTERA_AVALON_DMA_LENGTH(AVALON_DMA_BASE, 4);
mode =
ALTERA_AVALON_DMA_CONTROL_WORD_MSK |
ALTERA_AVALON_DMA_CONTROL_GO_MSK |
ALTERA_AVALON_DMA_CONTROL_LEEN_MSK |
ALTERA_AVALON_DMA_CONTROL_WCON_MSK ;
IOWR_ALTERA_AVALON_DMA_CONTROL(AVALON_DMA_BASE,mode);
value=IORD(CRC_PERIPH_BASE,0);
printf("value= %x\n",value);
value=IORD(CRC_PERIPH_BASE,1);
printf("value= %x\n",value);
while (IORD_ALTERA_AVALON_DMA_STATUS (AVALON_DMA_BASE) &
ALTERA_AVALON_DMA_STATUS_BUSY_MSK);
printf("waiting crc\n");
word = (IORD((CRC_PERIPH_BASE),1));
printf("crc value0=%x\n",word);
word = (IORD((CRC_PERIPH_BASE+0x1),1));
printf("crc value1=%x\n",word);
word = (IORD((CRC_PERIPH_BASE+0x2),1));
printf("crc value2=%x\n",word);
word = (IORD((CRC_PERIPH_BASE+0x3),0));
printf("crc value3=%x\n",word);
word = (IORD((CRC_PERIPH_BASE+0x0),0));
printf("crc value4=%x\n",word);
word = (IORD((CRC_PERIPH_BASE+0x1),0));
printf("crc value5=%x\n",word);
word = (IORD((CRC_PERIPH_BASE+0x2),0));
printf("crc value6=%x\n",word);
word = (IORD((CRC_PERIPH_BASE+0x3),0));
printf("crc value7=%x\n",word);
word = (IORD((CRC_PERIPH_BASE),0));
printf("crc value00=%x\n",word);
return (word);
} /* crcCompute() */