Forum Discussion
Altera_Forum
Honored Contributor
16 years agoHere is some C to start the vip blocks:
IOWR( LED_BASE, 0, 0x7 ); // All on IOWR( SCALER_BASE, CONTROL, VIP_STOP ); IOWR( SCALER_BASE, SCALER_REG_SIZE_X, x_size ); IOWR( SCALER_BASE, SCALER_REG_SIZE_Y, y_size ); IOWR( SCALER_BASE, CONTROL, VIP_GO ); IOWR( TESTPAT_BASE, CONTROL, VIP_STOP ); IOWR( TESTPAT_BASE, TPG_REG_SIZE_X, x_size ); IOWR( TESTPAT_BASE, TPG_REG_SIZE_Y, y_size ); IOWR( TESTPAT_BASE, CONTROL, VIP_GO ); IOWR( MIXER_BASE, CONTROL, VIP_STOP ); IOWR( MIXER_BASE, MIXER_REG_LAYER1_X, x_pos ); IOWR( MIXER_BASE, MIXER_REG_LAYER1_Y, y_pos ); IOWR( MIXER_BASE, MIXER_REG_LAYER2_X, 0 ); IOWR( MIXER_BASE, MIXER_REG_LAYER2_Y, 0 ); IOWR( MIXER_BASE, MIXER_REG_LAYER1_ENABLE, VIP_CONSUME ); IOWR( MIXER_BASE, MIXER_REG_LAYER2_ENABLE, VIP_GO ); IOWR( MIXER_BASE, CONTROL, VIP_GO ); I'm using this code to read back the registers through the jtag uart: alt_printf( "\nScaler Registers:\n" ); alt_printf( " Status: %x\n", IORD( SCALER_BASE, STATUS ) ); alt_printf( " Size X: %x\n", IORD( SCALER_BASE, SCALER_REG_SIZE_X ) ); alt_printf( " Size Y: %x\n", IORD( SCALER_BASE, SCALER_REG_SIZE_Y ) ); alt_printf( "\nMixer Registers:\n" ); alt_printf( " Status: %x\n", IORD( MIXER_BASE, MIXER_REG_STATUS ) ); alt_printf( " L1 X: %x\n", IORD( MIXER_BASE, MIXER_REG_LAYER1_X ) ); alt_printf( " L1 Y: %x\n", IORD( MIXER_BASE, MIXER_REG_LAYER1_Y ) ); alt_printf( " L1 Enable: %x\n", IORD( MIXER_BASE, MIXER_REG_LAYER1_ENABLE ) ); alt_printf( " L2 X: %x\n", IORD( MIXER_BASE, MIXER_REG_LAYER2_X ) ); alt_printf( " L2 Y: %x\n", IORD( MIXER_BASE, MIXER_REG_LAYER2_Y ) ); alt_printf( " L2 Enable: %x\n", IORD( MIXER_BASE, MIXER_REG_LAYER2_ENABLE ) );//