⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 top_a3p250.stp

📁 Allegro原理图和PCB
💻 STP
📖 第 1 页 / 共 4 页
字号:

EXIT -25;

jtagOK:

'Verify Device ID
CALL PROC_VERIFY_IDCODE;

' Execute ISC_ENABLE
IRSCAN 8, $80;
DRSTOP IDLE;
DRSCAN 18, #000000000000000000;
DRSTOP DRPAUSE;
WAIT 3 CYCLES; 
WAIT 556 USEC;

IRSCAN 8, $80, CAPTURE Buff32[7..0];

if Buff32[5] == 0 THEN GOTO EnableOK;

DRSCAN 18, #000000000000000000, CAPTURE ISC_Config_Result[];
STATUS = 5;
PRINT "Failed to enter programming mode.";
EXPORT "ISC_Config_Result", ISC_Config_Result[];
CALL DO_EXIT;

EnableOK:

DRSCAN 18, #000000000000000000, CAPTURE ISC_Config_Result[];
IF ISC_Config_Result[16] THEN GOTO CRCOK;

STATUS = -26;
PRINT "Failed to enter programming mode.";
EXPORT "ISC_Config_Result", ISC_Config_Result[];
CALL DO_EXIT;

CRCOK:
IF !ChkArray THEN GOTO SkipChkArray;
IF !ArrayROnly THEN CALL DO_CHECK_W; 
IF ArrayROnly THEN CALL DO_CHECK_R; 
SkipChkArray:
IF (PLAYER_VERSION_VARIABLE != 0) THEN 
    CALL PROC_BP_VER;

CALL PROC_READ_FSN;

ENDPROC;

PROCEDURE READ_INITIALIZE USES GV, DO_INITIALIZE;
ChkFrom = 0;
ChkArray = 0;
ChkSec = 0;
CALL DO_INITIALIZE;
ENDPROC;

PROCEDURE FW_INITIALIZE USES GV, DO_INITIALIZE;
FromROnly = 0;
ChkFrom = 1;
ChkArray = 0;
CALL DO_INITIALIZE;
ENDPROC;

PROCEDURE FR_INITIALIZE USES GV, DO_INITIALIZE;
ChkArray = 0;
CALL DO_INITIALIZE;
ENDPROC;

PROCEDURE AW_INITIALIZE USES GV, DO_INITIALIZE;
ArrayROnly = 0;
ChkFrom = 0;
ChkArray = 1;
CALL DO_INITIALIZE;
ENDPROC;

PROCEDURE AR_INITIALIZE USES GV, DO_INITIALIZE;
ArrayROnly = 1;
ChkFrom = 0;
ChkArray = 1;
CALL DO_INITIALIZE;
ENDPROC;

PROCEDURE W_INITIALIZE USES GV, DO_INITIALIZE;
ArrayROnly = 0;
ChkArray = 1;
CALL DO_INITIALIZE;
ENDPROC;

PROCEDURE R_INITIALIZE USES GV, DO_INITIALIZE;
ArrayROnly = 1;
ChkArray = 1;
CALL DO_INITIALIZE;
ENDPROC;

PROCEDURE INITIALIZE USES GV, DO_INITIALIZE;
ArrayROnly = 0;
FromROnly = 0;
ChkFrom = 1;
ChkArray = 1;
CALL DO_INITIALIZE;
ENDPROC;

PROCEDURE SW_INITIALIZE USES GV, DO_INITIALIZE;
ChkFrom = 0;
ChkArray = 0;
CALL DO_INITIALIZE;
ENDPROC;

PROCEDURE DO_OUTPUT_SECURITY USES GV;
PRINT "Security Setting :";
IF ULUFP THEN
    PRINT "FlashROM Write/Erase protected by pass key.";
IF ULUFJ THEN
    PRINT "FlashROM Read protected by pass key.";
IF ULAWE THEN
    PRINT "Array Write/Erase protected by pass key.";
IF ULARD THEN 
    PRINT "Array Verify protected by pass key.";
IF ULUFE THEN
    PRINT "Encrypted FlashROM Programming Enabled.";
IF ULARE THEN
    PRINT "Encrypted FPGA Array Programming Enabled.";
PRINT "=========================================";
 
ENDPROC;

PROCEDURE PROC_PROGRAM_UROW USES GV, BITSTREAM, DO_EXIT, POLL_PROGRAM;

    if IsEraseOnly THEN GOTO SKIP_CYC_INCREMENT;

    if ACT_UROW_CYCLE_COUNT == 0 THEN GOTO SKIP_CYC_INCREMENT;
        ACT_UROW_CYCLE_COUNT = ACT_UROW_CYCLE_COUNT + 1;
        if ACT_UROW_CYCLE_COUNT == 1024 THEN ACT_UROW_CYCLE_COUNT = 1;
        if ACT_UROW_CYCLE_COUNT == 1023 THEN ACT_UROW_CYCLE_COUNT = 0;
    SKIP_CYC_INCREMENT:

    if IsEraseOnly THEN 
        UROW[] = $FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
    if IsEraseOnly && !IsRestoreDesign THEN 
        GOTO SKIP_DESIGN_INFO;

    ' Compose UROW data

    IF !IsRestoreDesign THEN 
      UROW[127..112] = BOOL(CHECKSUM);
    IF IsRestoreDesign THEN 
      UROW[127..112] = sUROW_CHECKSUM[15..0];
      
    IF !IsRestoreDesign THEN 
      UROW[101..32] = ACT_UROW_DESIGN_NAME[69..0];
    IF IsRestoreDesign THEN 
      UROW[101..32] = sUROW_DESIGN_NAME[69..0];

    SKIP_DESIGN_INFO:

    UROW[111..102] = BOOL(ACT_UROW_CYCLE_COUNT);
    UROW[31..29] = ACT_UROW_PROG_METHOD[2..0];
    UROW[28..25] = ACT_UROW_ALGO_VERSION[3..0];
    UROW[16..10] = ACT_UROW_SW_VERSION[6..0];
    UROW[9..6] = ACT_UROW_PROGRAM_SW[3..0];

    IRSCAN 8, $A7;
    DRSTOP IDLE;
    DRSCAN 128, UROW[];
    DRSTOP DRPAUSE;
    WAIT 15 CYCLES;

    CALL POLL_PROGRAM;

    if PASS == 1 THEN GOTO Program_OK3;

    STATUS = -24;
    PRINT "Failed to program UROW";
    CALL DO_EXIT;

    Program_OK3:

    ' readback and verify UROW
    IRSTOP IDLE;
    IRSCAN 8, $A8;
    IRSTOP IRPAUSE;
    WAIT 3 CYCLES;
    WAIT 264 USEC;
    DRSCAN 128, $00000000000000000000000000000000, COMPARE UROW[], UROW_MASK[], PASS;

    if PASS then GOTO UROW_OK;
    STATUS = -24;
    PRINT "Failed to program UROW";
    CALL DO_EXIT;

    UROW_OK:

ENDPROC;

PROCEDURE PROC_READ_UROW USES GV, BITSTREAM;
    ' read UROW
    IRSTOP IDLE;
    IRSCAN 8, $A8;
    IRSTOP IRPAUSE;
    WAIT 3 CYCLES;
    WAIT 264 USEC;
    DRSCAN 128, $00000000000000000000000000000000, CAPTURE UROW[];

    sUROW_CHECKSUM[15..0] = UROW[127..112];
    sUROW_CYCLE_COUNT = INT (UROW[111..102]);
    sUROW_DESIGN_NAME[69..0] = UROW[101..32];
    sUROW_PROG_METHOD[2..0] = UROW[31..29];
    sUROW_ALGO_VERSION[3..0] = UROW[28..25];
    sUROW_SW_VERSION[6..0] = UROW[16..10];
    sUROW_PROGRAM_SW[3..0] = UROW[9..6];

    ACT_UROW_CYCLE_COUNT = sUROW_CYCLE_COUNT;

SkipStorPrevUrow:

ENDPROC;

PROCEDURE PROC_DISPLAY_UROW USES GV, BITSTREAM;

INTEGER hex[16]= 70,69,68,67,66,65,57,56,55,54,53,52,51,50,49,48;
PRINT "User information : ";
PRINT "CHECKSUM: ",     CHR$(hex[INT(sUROW_CHECKSUM[15..12])]),
            CHR$(hex[INT(sUROW_CHECKSUM[11..8])]),
            CHR$(hex[INT(sUROW_CHECKSUM[7..4])]),
            CHR$(hex[INT(sUROW_CHECKSUM[3..0])]); 

IF FLAG_DISPLAY_CYC == 1 THEN PRINT "CYCLE COUNT: ",     sUROW_CYCLE_COUNT;

PRINT "Design Name: ",
            CHR$(INT(sUROW_DESIGN_NAME[63..69])),
            CHR$(INT(sUROW_DESIGN_NAME[56..62])),
            CHR$(INT(sUROW_DESIGN_NAME[49..55])),
            CHR$(INT(sUROW_DESIGN_NAME[42..48])),
            CHR$(INT(sUROW_DESIGN_NAME[35..41])),
            CHR$(INT(sUROW_DESIGN_NAME[28..34])),
            CHR$(INT(sUROW_DESIGN_NAME[21..27])),
            CHR$(INT(sUROW_DESIGN_NAME[14..20])),
            CHR$(INT(sUROW_DESIGN_NAME[7..13])),
            CHR$(INT(sUROW_DESIGN_NAME[0..6]));

INTEGER tmpInt = INT(sUROW_PROG_METHOD[]);

INTEGER tmpInt3 = 0;
INTEGER tmpInt4 = 0;
INTEGER tmpInt5 = 0;
IF tmpInt == 0 THEN GOTO PRINT1532;
IF tmpInt == 1 THEN GOTO PRINT_STAPL;
IF tmpInt == 2 THEN GOTO PRINT_DIRECT_C;
PRINT "Programming Method: UNKNOWN";
GOTO PRINT_PROG_METHOD_DONE;

PRINT1532:
PRINT "Programming Method: IEEE1532";
GOTO PRINT_PROG_METHOD_DONE;

PRINT_STAPL:
PRINT "Programming Method: STAPL";
GOTO PRINT_PROG_METHOD_DONE;

PRINT_DIRECT_C:
PRINT "Programming Method: DirectC";

PRINT_PROG_METHOD_DONE:

PRINT "Algorithm Version: ", CHR$(hex[INT(sUROW_ALGO_VERSION[3..0])]);

tmpInt = INT(sUROW_PROGRAM_SW[]);
IF tmpInt == 0 THEN GOTO PRINT_G3_PROG_1;
IF tmpInt == 1 THEN GOTO PRINT_G3_PROG_2;
IF tmpInt == 2 THEN GOTO PRINT_G3_PROG_3;

IF tmpInt == 3 THEN GOTO PRINT_BP_SCULPTOR_1;
IF tmpInt == 4 THEN GOTO PRINT_BP_SCULPTOR_2;

IF tmpInt == 5 THEN GOTO PRINT_DIRECT_C_PROG;
IF tmpInt == 6 THEN GOTO PRINT_ACTEL_JAM;

PRINT "Programmer: UNKNOWN";
GOTO PRINT_PROGRAMMER_DONE;

PRINT_G3_PROG_1:
PRINT "Programmer: FlashPro";
GOTO PRINT_FLASHPRO_VER;

PRINT_G3_PROG_2:
PRINT "Programmer: FlashPro Lite";
GOTO PRINT_FLASHPRO_VER;

PRINT_G3_PROG_3:
PRINT "Programmer: FlashPro3";
GOTO PRINT_FLASHPRO_VER;

PRINT_FLASHPRO_VER:
tmpInt = INT(sUROW_SW_VERSION[]);
IF tmpInt == 127 THEN GOTO PRINT_UNKNOWN_SW_VERSION;
IF tmpInt == 0 THEN GOTO PRINT_FLASHPRO_33;
IF tmpInt == 1 THEN GOTO PRINT_FLASHPRO_34;
IF tmpInt == 2 THEN GOTO PRINT_FLASHPRO_40;
IF tmpInt == 3 THEN GOTO PRINT_FLASHPRO_41;
IF tmpInt == 4 THEN GOTO PRINT_FLASHPRO_42;
IF tmpInt == 5 THEN GOTO PRINT_FLASHPRO_50;
IF tmpInt == 6 THEN GOTO PRINT_FLASHPRO_51;
IF tmpInt == 7 THEN GOTO PRINT_FLASHPRO_60;

PRINT "Software: FlashPro version greater than v6.0.";
GOTO PRINT_PROGRAMMER_DONE;

PRINT_UNKNOWN_SW_VERSION:
PRINT "Software: FlashPro vX.X";
GOTO PRINT_PROGRAMMER_DONE;

PRINT_FLASHPRO_60:
PRINT "Software: FlashPro v6.0";
GOTO PRINT_PROGRAMMER_DONE;

PRINT_FLASHPRO_51:
PRINT "Software: FlashPro v5.1";
GOTO PRINT_PROGRAMMER_DONE;

PRINT_FLASHPRO_50:
PRINT "Software: FlashPro v5.0";
GOTO PRINT_PROGRAMMER_DONE;

PRINT_FLASHPRO_42:
PRINT "Software: FlashPro v4.2";
GOTO PRINT_PROGRAMMER_DONE;

PRINT_FLASHPRO_41:
PRINT "Software: FlashPro v4.1";
GOTO PRINT_PROGRAMMER_DONE;

PRINT_FLASHPRO_40:
PRINT "Software: FlashPro v4.0";
GOTO PRINT_PROGRAMMER_DONE;

PRINT_FLASHPRO_34:
PRINT "Software: FlashPro v3.4";
GOTO PRINT_PROGRAMMER_DONE;

PRINT_FLASHPRO_33:
PRINT "Software: FlashPro v3.3";
GOTO PRINT_PROGRAMMER_DONE;

PRINT_BP_SCULPTOR_1:
PRINT "Programmer: SiliconSculptor II";
tmpInt = INT(sUROW_SW_VERSION[]);
IF tmpInt == 127 THEN GOTO PRINT_UNKNOWN_SW_VERSION;

tmpInt3 = INT(sUROW_SW_VERSION[6..5]) + SCULPTOR_MAJOR_BASE;
tmpInt4 = INT(sUROW_SW_VERSION[4..1]) + SCULPTOR_MINOR_BASE;
tmpInt5 = 0;
IF sUROW_SW_VERSION[0] THEN 
    tmpInt5 = 1;

PRINT "Software: Sculptor Win v", tmpInt3, ".", tmpInt4, ".", tmpInt5;
GOTO PRINT_PROGRAMMER_DONE;

PRINT_BP_SCULPTOR_2:
PRINT "Programmer: BP Programmer";
tmpInt = INT(sUROW_SW_VERSION[]);
IF tmpInt == 127 THEN GOTO PRINT_UNKNOWN_SW_VERSION;

tmpInt3 = INT(sUROW_SW_VERSION[6..5]) + SCULPTOR_MAJOR_BASE;
tmpInt4 = INT(sUROW_SW_VERSION[4..1]) + SCULPTOR_MINOR_BASE;
tmpInt5 = 0;
IF sUROW_SW_VERSION[0] THEN 
    tmpInt5 = 1;

PRINT "Software: BP Win v", tmpInt3, ".", tmpInt4, ".", tmpInt5;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -