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

📄 final.jam

📁 EDA条件下乘法器的实现。AHDL语言实现输入显示乘法等功能
💻 JAM
📖 第 1 页 / 共 3 页
字号:
BOOLEAN A30[V19];
FOR i = 0 TO (V19 - 1);
LET A30[i] = 1;
NEXT i;
LET V20 = 2 * 5 * V66;
BOOLEAN A31[V20];
BOOLEAN A57[V20];
LET V12 = 0;
LET V13 = 0;
FOR i = 0 TO V1;
LET V12 = V12 + A25[i];
IF (A25[i] > V13) THEN LET V13 = A25[i];
NEXT i;
BOOLEAN A32[V12 + 50];
BOOLEAN A39[V13];
BOOLEAN A33[V13];
FOR i = 0 TO (V13 - 1);
LET A39[i] = 1;
NEXT i;
CALL L30;
IRSTOP IRPAUSE;
DRSTOP IDLE;
STATE IDLE;
LET A18[0..9] = 071;
LET V4 = 1;
CALL L267;
WAIT 10000 USEC;
L16:
RETURN;
L21:
IF (V42 == 1) THEN GOTO L22;
CALL L31;
LET A18[0..9] = 079;
CALL L267;
WAIT 10000 USEC;
STATE IDLE;
L22:
IF (V42 == 0) THEN
PRINT "DONE";
IF (V42 == 1) THEN
PRINT "Invalid option combination specified";
IF (V42 == 2) THEN
PRINT "Unrecognized device";
IF (V42 == 3) THEN
PRINT "Device revision is not supported";
IF (V42 == 4) THEN
PRINT "Device programming failure";
IF (V42 == 5) THEN
PRINT "Device is not blank";
IF (V42 == 6) THEN
PRINT "Device verify failure";
IF (V42 == 8) THEN
PRINT "Unable to read UES from device #", V84 + 1;
RETURN;
L26:
LET j = 0;
FOR i = 0 TO V1;
IF ((j <= V3) &&
((A13[i] & V4) != 0) &&
((A13[i] & 4) != 0)) THEN LET j = i + 1;
NEXT i;
IF (j > V3) THEN GOTO L27;
LET V2 = 0;
LET V3 = 0;
GOTO L28;
L27:
LET V2 = A12[j - 1];
LET V3 = j;
IF (V58) THEN GOTO L28;
LET A41[0..9] = 066;
GOTO L29;
L28:
LET A41[0..9] = 006;
L29:
RETURN;
L30:
CALL L31;
IF (V32 == 0) THEN CALL L264;
LET V10 = 0;
LET V14 = 0;
LET V15 = 0;
LET V49 = 1;
LET V34 = 0;
LET V51 = -1;
LET V52 = -1;
LET V45 = 0;
LET V29 = 1;
IF (DO_PROGRAM) THEN LET V29 = 0;
IF (DO_ERASE && V74) THEN LET V29 = 2;
RETURN;
L31:
FOR i = 0 TO V1;
LET A17[i] = (A13[i] | A48[i]);
NEXT i;
RETURN;
L42:
LET j = 0;
LET k = V1;
LET V34 = 1;
LET V29 = 1;
LET V84 = V84 - 1;
IF (V84 == -1) THEN GOTO L44;
IF ((V84 < 0) || (V84 > V1) ||
((A17[V1 - V84] & 1) == 0)) THEN
LET V42 = 8;
IF (V42 != 0) THEN GOTO L45;
L43:
LET j = V84;
LET k = V84;
L44:
FOR i = j TO k;
LET V84 = i;
PUSH i; PUSH j; PUSH k;
CALL L31;
LET V86 = 0;
IF (((A17[V1 - V84] & 1) != 0) &&
((A17[V1 - V84] & 4) != 0)) THEN
CALL L46;
POP k; POP j; POP i;
NEXT i;
L45:
RETURN;
L46:
LET V4 = 1;
LET A18[0..9] = 016;
CALL L267;
DRSCAN V21, A26[0..(V21 - 1)];
LET A18[0..9] = 01A;
CALL L267;
DRSCAN V21, A26[0..(V21 - 1)];
LET j = V1 - V84;
FOR i = 0 TO V1;
IF (((A17[i] & 1) != 0) && ((A17[i] & 4) != 0) &&
(i != j)) THEN LET A17[i] = A17[i] | 8;
NEXT i;
CALL COMPUTE_7K_N_BITS;
LET V2 = A12[j];
LET V27 = (V2 - 1) * 2;
LET i = A49[V27];
LET V48 = A49[V27 + 1];
LET V46 = A6[V2];
IF (V48 < (V46 >> 1)) THEN GOTO L47;
LET V48 = V46 - V48 - 1;
L47:
LET V27 = j + V24 + (16 * V48) + 12;
FOR V11 = i TO i + 15;
PUSH i;
PUSH V27;
CALL L210;
CALL L153;
POP V27;
POP i;
IF (A31[V27]) THEN
LET V86 = V86 | (1 << (V11 - i));
NEXT V11;
CALL L51;
RETURN;
L51:
EXPORT "USERCODE", V86;
INTEGER V85[4];
FOR i = 0 TO 3;
LET V27 = 0;
LET V85[i] = V86 & 15;
IF (V85[i] > 9) THEN LET V27 = 7;
LET V85[i] = V85[i] + 48 + V27;
LET V86 = V86 >> 4;
NEXT i;
PRINT "Device #", V84 + 1, " UES code is ",
CHR$(V85[3]), CHR$(V85[2]),
CHR$(V85[1]), CHR$(V85[0]);
RETURN;
L56:
PRINT "programming 7K device(s)...";
CALL L30;
CALL L300;
FOR V11 = 1 TO 107;
CALL L210;
CALL L236;
NEXT V11;
LET V49 = 1;
FOR V11 = 109 TO (V32 - 1);
CALL L210;
CALL L236;
NEXT V11;
RETURN;
L63:
LET A18[0..9] = A41[0..9];
CALL L267;
LET A18[0..9] = 00E;
CALL L267;
LET A18[0..9] = 00A;
CALL L267;
IF (V58) THEN LET V56 = 1;
WAIT (V38 * 1000) USEC;
IF (V58) THEN GOTO L64;
IF (V82) THEN LET V83 = 20000;
LET A18[0..9] = 06A;
CALL L267;
LET V83 = 5;
LET A18[0..9] = 06E;
CALL L267;
L64:
LET A18[0..9] = 012;
CALL L267;
RETURN;
L65:
LET A18[0..9] = A41[0..9];
CALL L267;
LET A18[0..9] = 00A;
CALL L267;
IF (V58) THEN LET V56 = 1;
WAIT (V37 * 100) USEC;
IF (V58) THEN GOTO L66;
LET A18[0..9] = 06E;
CALL L267;
L66:
LET A18[0..9] = 012;
CALL L267;
RETURN;
L67:
CALL L31;
FOR i = 0 TO V1;
IF (((A17[i] & 1) == 0) || ((A17[i] & 4) == 0))
THEN GOTO L68;
IF (V82 && ((A48[i] & 128) == 0))
THEN LET A17[i] = A17[i] | 8;
IF (!V82 && ((A48[i] & 128) != 0))
THEN LET A17[i] = A17[i] | 8;
L68:
NEXT i;
IF (V82) THEN LET A41[0..9] = 066;
IF (!V82 && V58) THEN LET A41[0..9] = 006;
RETURN;
L69:
LET A18[0..9] = 012;
CALL L267;
LET A18[0..9] = 01E;
CALL L267;
DRSCAN V16, A30[0..(V16 - 1)];
L70:
CALL L67;
LET b = V58;
IF (V82) THEN LET V58 = 0;
CALL L63;
LET V58 = b;
IF (!V82) THEN GOTO L71;
LET V82 = 0;
GOTO L70;
L71:
LET A18[0..9] = 01E;
CALL L267;
DRSCAN V16, A29[0..(V16 - 1)];
IF (DO_PROGRAM) THEN GOTO L72;
LET V75 = 1;
FOR V11 = 102 TO 103;
CALL L210;
CALL L236;
NEXT V11;
LET V75 = 0;
L72:
RETURN;
L76:
IF (V74) THEN PRINT "blank checking 7K device(s)...";
IF (!V74) THEN PRINT "verifying 7K device(s)...";
CALL L30;
CALL L300;
CALL L290;
FOR V11 = 1 TO 101;
CALL L210;
CALL L153;
IF (V42 != 0) THEN LET V11 = 101;
NEXT V11;
IF (V42 != 0) THEN GOTO L78;
IF (V74 && !DO_PROGRAM) THEN GOTO L77;
FOR V11 = 102 TO 103;
CALL L210;
CALL L153;
IF (V42 != 0) THEN LET V11 = 103;
NEXT V11;
L77:
IF (V42 != 0) THEN GOTO L78;
FOR V11 = 104 TO 107;
CALL L210;
CALL L153;
IF (V42 != 0) THEN LET V11 = 107;
NEXT V11;
IF (V42 != 0) THEN GOTO L78;
LET V45 = 1;
FOR V11 = 109 TO 113;
CALL L210;
CALL L153;
IF (V42 != 0) THEN LET V11 = 113;
NEXT V11;
IF (V42 != 0) THEN GOTO L78;
LET V45 = 0;
FOR V11 = 114 TO (V32 - 1);
CALL L210;
CALL L153;
IF (V42 != 0) THEN LET V11 = V32 - 1;
NEXT V11;
L78:
RETURN;
L93:
LET V74 = 1;
CALL L76;
LET V74 = 0;
RETURN;
L94:
CALL L30;
LET V37 = 100;
LET V38 = 100;
LET V29 = 1;
LET V11 = 0;
CALL L210;
LET V34 = 1;
IF (USE_FIXED_ALGORITHM) THEN GOTO L95;
CALL L153;
GOTO L96;
L95:
CALL COMPUTE_7K_N_BITS;
FOR i = 0 TO V20 - 1;
LET A31[i] = 0;
LET A57[i] = 0;
NEXT i;
L96:
FOR i = V1 TO 0 STEP -1;
LET A48[i] = 0;
IF (((A17[i] & 1) == 0) ||
((A17[i] & 4) == 0)) THEN GOTO L106;
LET V68 = 0;
FOR j = 0 TO i;
LET V26 = 0;
LET V2 = A12[j];
IF (i == j) THEN GOTO L97;
LET V26 = 1;
IF (((A17[j] & 1) == 0) ||
((A17[j] & 4) == 0)) THEN GOTO L97;
LET V26 = A8[V2] >> 1;
L97:
LET V68 = V68 + V26;
NEXT j;
FOR j = 0 TO 14;
LET A16[j] = 0;
LET V46 = A6[V2];
LET V47 = j / (V46 << 1);
LET V48 = (j % (V46 << 1)) >> 1;
LET V69 = 0;
IF (V48 < (V46 >> 1)) THEN GOTO L98;
LET V69 = 1;
LET V48 = V46 - V48 - 1;
L98:
LET V27 = V68 + (((2 * V47) + V69) * V24) +
(16 * V48) + (8 * (~j & 1));
FOR k = 0 TO 7;
IF (USE_FIXED_ALGORITHM) THEN GOTO L99;
IF (A31[V27 + k]) THEN
LET A16[j] = A16[j] | (1 << k);
GOTO L100;
L99:
IF ((A54[j << 1] & (1 << k)) != 0) THEN
LET A31[V27 + k] = 1;
IF ((A54[(j << 1) + 1] & (1 << k)) != 0) THEN
LET A57[V27 + k] = 1;
L100:
NEXT k;
IF (USE_FIXED_ALGORITHM) THEN
LET A16[j] = A54[j << 1];
NEXT j;
IF (!USE_FIXED_ALGORITHM) THEN GOTO L101;
PUSH i;
CALL L153;
POP i;
IF (V39) THEN LET V42 = 2;
L101:
IF ((A16[0] != 65) ||
(A16[1] != 76) ||
(A16[2] != 84) ||
(A16[3] != 69) ||
(A16[4] != 82) ||
(A16[5] != 65))
THEN LET V42 = 2;
IF (V42 != 0) THEN GOTO L106;
LET V35 = ((A16[6] - 48) * 10) + (A16[7] - 48);
LET V36 = A16[9] & 31;
LET V27 = 5 * 3 * (V2 - 1);
LET V40 = 0;
LET V72 = 300;
LET V73 = 100;
IF ((V36 & 24) == 16) THEN
LET V40 = 1;
FOR j = 0 TO (5 - 1);
IF (V40 ||
(V35 != A11[V27]) ||
(V36 != A11[V27 + 1])) THEN
GOTO L105;
LET V40 = 1;
IF ((A11[V27 + 2] & 1) != 1) THEN
GOTO L102;
LET V72 = A14[A16[8] & 31];
LET V73 = A15[(A16[8] >> 5) & 7];
L102:
IF ((A11[V27 + 2] & 2) != 2) THEN

⌨️ 快捷键说明

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