📄 vinit.v
字号:
/**
*** Copyright (c) 2001 Equator Technologies, Inc.
**/
//
// vinit.v
//
#define _SWAP 16
#include "vas.h"
register ramPtr_r14 r14; // location for RAM writes
register tmpData_r16 r16;
register tmpData_r17 r17;
register numLoops_r18 r18;
register pcaddr_r19 r19;
register loopCnt_r22 r22;
register gbind_r24 r24; // GB configuration data
register dbgPtr_r27 r27;
//--------------------------------
//
// CODE section
//
//--------------------------------
main: { // begin CODE
nop;
nop;
nop;
nop;
// STATUS
setacc 0x99;
setreg tmpData_r16;
setacc D0_STATUS+0;
nop;
st tmpData_r16,acc;
nop;
setacc addr#D0_GBDATA;
ld.w gbind_r24, acc;
nop;
gb_dsconf(gbind_r24);
nop;
//
// I_START
//
I_START:
gb_setopt(0b01101); // count leading 1(s) not 0(s), input en, output en
// Setup pcaddr for first stall
setacc I_GBSTALL;
setreg pcaddr_r19;
nop;
I_GET_STARTCODE:
#include "vgetsc.v" // in-lined code
I_INIT_MCMR:
#include "vlc.v" // in-lined code
//
// I_WRAP_UP
//
I_WRAP_UP:
// Clear the semaphore
setacc 0; // Store a 0 in D0_SEMA_STOP, clearing the semaphore
setreg tmpData_r17; // to indicate to the core to continue processing
setacc D0_SEMA_STOP;
st tmpData_r17,acc; // CM1[acc]=tmpData_r17;
nop;
//
// I_EXIT
//
I_EXIT:
// STATUS
setacc 0x1ed;
setreg tmpData_r16;
setacc D0_STATUS+0;
nop;
st tmpData_r16,acc;
nop;
I_EXIT_LOOP:
nop;
br I_EXIT_LOOP;
nop;
#include "vgbstall.v"
} // end CODE
//--------------------------------
//
// DATA section
//
//--------------------------------
_data0;
D0_SEMA_STOP @16:
data 0xFFFF(4);
D0_STATUS @16:
data 0x1111(16);
D0_EXCEED @16:
data 0x0(16);
D0_GBDATA @16:
data 0b 0000_0000_0000_0000 (16);
D0_DATA @16:
data 0x0 (16+16+16+15);
D0_DATA_END :
data 0xeeee;
data 0x0 (64);
data 0x0 (128);
data 0x0 (128);
data 0x0 (128);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -